Générateur de Migration Prisma Schema vers SQL DDL
Guide technique pour convertir des schémas Prisma en scripts SQL DDL compatibles PostgreSQL, MySQL et 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");
Compilation Instantanée du Schéma
Analyse les modèles Prisma, clés composites et types natifs directement dans la mémoire de votre navigateur.
Confidentialité 100% Locale
Vos schémas de base de données et architectures propriétaires ne quittent jamais votre navigateur.
Support Multi-Dialecte SQL
Génération DDL sur mesure pour PostgreSQL, MySQL, SQLite et SQL Server avec types et contraintes adaptés.