Skip to content
On this page

String

sql

Database provider (default: postgresql)

Example Output ​

Generated from the pet-store sample schema:

sql
// Generated by @sqldoc/templates/prisma -- DO NOT EDIT

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model Adoption {
  id Int @id @default(autoincrement())
  pet_id Int
  owner_id Int
  adopted_at DateTime @default(now())
  adoption_fee Decimal @default(0)
  owner Owner @relation(fields: [owner_id], references: [id])
  pet Pet @relation(fields: [pet_id], references: [id])
}

model AdoptionsAuditLog {
  id BigInt @id @default(autoincrement())
  table_name String
  operation String
  old_data Json?
  new_data Json?
  changed_at DateTime @default(now())
}

model Category {
  id Int @id @default(autoincrement())
  name String
  description String?
  pets Pet[]
}

model LegacyInventory {
  id Int @id @default(autoincrement())
  item_name String?
  old_sku String?
  quantity Int? @default(0)
}

model Location {
  id Int @id @default(autoincrement())
  name String
  address String
  city String
  zip String?
  reviews Review[]
}

model MedicalRecord {
  id Int @id @default(autoincrement())
  pet_id Int
  visit_date DateTime @default("CURRENT_DATE")
  diagnosis String
  treatment String?
  vet_name String?
  pet Pet @relation(fields: [pet_id], references: [id])
}

model Owner {
  id Int @id @default(autoincrement())
  name String
  email String @unique
  phone String?
  created_at DateTime? @default(now())
  adoptions Adoption[]
}

model Pet {
  id Int @id @default(autoincrement())
  category_id Int?
  name String
  sku String @unique
  price Decimal @default(0)
  internal_notes String?
  status String @default("available")
  created_at DateTime? @default(now())
  category Category? @relation(fields: [category_id], references: [id])
  adoptions Adoption[]
  medical_records MedicalRecord[]
}

model Review {
  id Int @id @default(autoincrement())
  pet_id Int
  owner_id Int
  rating Int
  body String?
  location_id Int?
  created_at DateTime? @default(now())
  location Location? @relation(fields: [location_id], references: [id])
}

model StaffAuditLog {
  id BigInt @id @default(autoincrement())
  table_name String
  operation String
  old_data Json?
  new_data Json?
  changed_at DateTime @default(now())
}

Usage ​

Add to your sqldoc.config.ts:

typescript
export default {
  dialect: 'postgres',
  schema: ['./schema.sql'],
  codegen: [
    {
      template: 'prisma',
      output: './generated/schema.prisma',
      config: {
        // See configuration options below
      },
    },
  ],
}

Then run:

bash
sqldoc codegen