Gerador de Migração Prisma Schema para SQL DDL
Guia técnico para converter esquemas Prisma em migrações SQL DDL para PostgreSQL, MySQL e SQLite.
-- ============================================================================
-- ToolsAA Prisma to SQL DDL Generator
-- Target Dialect: POSTGRESQL
-- Generated via ToolsAA Prisma-to-SQL Engine
-- 100% Pure Client-Side Browser Compilation
-- ============================================================================
-- ----------------------------------------------------------------------------
-- Drop Existing Tables
-- ----------------------------------------------------------------------------
DROP TABLE IF EXISTS "user_sessions" CASCADE;
DROP TABLE IF EXISTS "memberships" CASCADE;
DROP TABLE IF EXISTS "users" CASCADE;
DROP TABLE IF EXISTS "organizations" CASCADE;
-- ----------------------------------------------------------------------------
-- Custom Enum Types
-- ----------------------------------------------------------------------------
DROP TYPE IF EXISTS "Role";
CREATE TYPE "Role" AS ENUM ('SUPERADMIN', 'ADMIN', 'MEMBER', 'VIEWER');
DROP TYPE IF EXISTS "MemberStatus";
CREATE TYPE "MemberStatus" AS ENUM ('INVITED', 'ACTIVE', 'SUSPENDED');
-- ----------------------------------------------------------------------------
-- Table Definitions
-- ----------------------------------------------------------------------------
CREATE TABLE "organizations" (
"id" UUID NOT NULL DEFAULT 'uuid(',
"name" VARCHAR(128) NOT NULL,
"slug" VARCHAR(64) NOT NULL UNIQUE,
"domain" VARCHAR(128),
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT 'now(',
"updatedAt" TIMESTAMPTZ NOT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE "users" (
"id" UUID NOT NULL DEFAULT 'uuid(',
"email" VARCHAR(255) NOT NULL UNIQUE,
"fullName" VARCHAR(128) NOT NULL,
"avatarUrl" VARCHAR(512),
"emailVerified" TIMESTAMPTZ,
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT 'now(',
"updatedAt" TIMESTAMPTZ NOT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE "memberships" (
"id" UUID NOT NULL DEFAULT 'uuid(',
"organizationId" UUID NOT NULL,
"userId" UUID NOT NULL,
"role" "Role" NOT NULL DEFAULT 'MEMBER',
"status" "MemberStatus" NOT NULL DEFAULT 'ACTIVE',
"joinedAt" TIMESTAMPTZ NOT NULL DEFAULT 'now(',
PRIMARY KEY ("id"),
UNIQUE ("organizationId", "userId")
);
CREATE TABLE "user_sessions" (
"id" UUID NOT NULL DEFAULT 'uuid(',
"sessionToken" VARCHAR(255) NOT NULL UNIQUE,
"userId" UUID NOT NULL,
"ipAddress" VARCHAR(45),
"userAgent" VARCHAR(512),
"expiresAt" TIMESTAMPTZ NOT NULL,
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT 'now(',
PRIMARY KEY ("id")
);
-- ----------------------------------------------------------------------------
-- Foreign Key Constraints
-- ----------------------------------------------------------------------------
ALTER TABLE "memberships" ADD CONSTRAINT fk_memberships_organizationId FOREIGN KEY ("organizationId") REFERENCES "organizations"("id") ON DELETE CASCADE;
ALTER TABLE "memberships" ADD CONSTRAINT fk_memberships_userId FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE;
ALTER TABLE "user_sessions" ADD CONSTRAINT fk_user_sessions_userId FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE;
-- ----------------------------------------------------------------------------
-- Secondary Indexes
-- ----------------------------------------------------------------------------
CREATE INDEX "idx_memberships_userId" ON "memberships" ("userId");
CREATE INDEX "idx_user_sessions_userId_expiresAt" ON "user_sessions" ("userId", "expiresAt");
Compilação Instantânea de Esquemas
Analisa modelos Prisma, chaves compostas e tipos nativos na memória do navegador sem sobrecarga de servidor.
Privacidade 100% Local
Os seus esquemas de banco de dados e arquiteturas proprietárias nunca saem do seu navegador.
Suporte Multi-Dialeto SQL
Geração de DDL ajustada para PostgreSQL, MySQL, SQLite e SQL Server com tipos específicos.