{"version":3,"file":"schema.cjs","names":["z","PgIdentifier","SCHEMA_DUMP_SQL"],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { SCHEMA_DUMP_SQL } from \"./schema-dump.js\";\nimport type { Postgres } from \"./sql/database.js\";\nimport { PgIdentifier } from \"./sql/pg-identifier.js\";\n\nconst Identifier = z.codec(z.string(), z.custom<PgIdentifier>(), {\n  encode: (v) => v.toString(),\n  decode: (v) => PgIdentifier.fromString(v),\n});\n\nexport const FullSchemaKeyColumn = z.object({\n  type: z.literal(\"indexColumn\"),\n  name: Identifier,\n  order: z.enum([\"ASC\", \"DESC\"]).optional(),\n  nulls: z.enum([\"FIRST\", \"LAST\"]).optional(),\n  opclass: z.string().optional(),\n  collation: z.string().optional(),\n});\n\nexport type FullSchemaKeyColumn = z.infer<typeof FullSchemaKeyColumn>;\n\nexport const FullSchemaIncludedColumn = z.object({\n  name: Identifier,\n});\n\nexport type FullSchemaIncludedColumn = z.infer<typeof FullSchemaIncludedColumn>;\n\nexport const FullSchemaIndex = z.object({\n  type: z.literal(\"index\"),\n  oid: z.number(),\n  schemaName: Identifier,\n  tableName: Identifier,\n  indexName: Identifier,\n  indexType: z.string(),\n  isUnique: z.boolean(),\n  isPrimary: z.boolean(),\n  isClustered: z.boolean(),\n  wherePredicate: z.string().optional(),\n  tablespace: z.string().optional(),\n  keyColumns: z.array(FullSchemaKeyColumn),\n  includedColumns: z.array(FullSchemaIncludedColumn).optional(),\n});\n\nexport type FullSchemaIndex = z.infer<typeof FullSchemaIndex>;\n\nexport const FullSchemaColumn = z.object({\n  type: z.literal(\"column\"),\n  name: Identifier,\n  order: z.number(),\n  columnType: z.string(),\n  isNullable: z.boolean(),\n  defaultValue: z.string().optional(),\n  dropped: z.boolean(),\n  collation: z.string().optional(),\n  storage: z.enum([\"plain\", \"main\", \"external\", \"extended\"]).optional(),\n  isIdentity: z.enum([\"always\", \"by default\"]).optional(),\n});\n\nexport type FullSchemaColumn = z.infer<typeof FullSchemaColumn>;\n\nexport const FullSchemaTable = z.object({\n  type: z.literal(\"table\"),\n  oid: z.number(),\n  schemaName: Identifier,\n  tableName: Identifier,\n  tablespace: z.string().optional(),\n  partitionKeyDef: z.string().optional(),\n  columns: z.array(FullSchemaColumn).default([]),\n});\n\nexport type FullSchemaTable = z.infer<typeof FullSchemaTable>;\n\nexport const FullSchemaConstraint = z.object({\n  type: z.literal(\"constraint\"),\n  oid: z.number(),\n  schemaName: Identifier,\n  tableName: Identifier,\n  constraintName: Identifier,\n  constraintType: z\n    .enum([\n      \"check\",\n      \"foreign_key\",\n      \"not_null\",\n      \"primary_key\",\n      \"unique\",\n      \"trigger\",\n      \"exclusion\",\n    ])\n    .or(z.string()),\n  definition: z.string(),\n  isDeferrable: z.boolean().optional(),\n  isInitiallyDeferred: z.boolean().optional(),\n  isValidated: z.boolean().optional(),\n  backingIndexOid: z.number().optional(),\n});\n\nexport type FullSchemaConstraint = z.infer<typeof FullSchemaConstraint>;\n\nexport const FullSchemaFunction = z.object({\n  type: z.literal(\"function\"),\n  schemaName: Identifier,\n  objectName: Identifier,\n  objectType: z.enum([\"function\", \"procedure\", \"aggregate\", \"window function\"]),\n  identityArguments: z.string().optional(),\n  definition: z.string(),\n});\n\nexport type FullSchemaFunction = z.infer<typeof FullSchemaFunction>;\n\nexport const FullSchemaExtension = z.object({\n  type: z.literal(\"extension\"),\n  extensionName: z.string(),\n  version: z.string(),\n  schemaName: Identifier,\n});\n\nexport type FullSchemaExtension = z.infer<typeof FullSchemaExtension>;\n\nexport const FullSchemaView = z.object({\n  type: z.literal(\"view\"),\n  schemaName: Identifier,\n  viewName: Identifier,\n  objectType: z.enum([\"view\", \"materialized_view\"]),\n  definition: z.string(),\n  tablespace: z.string().optional(),\n});\n\nexport type FullSchemaView = z.infer<typeof FullSchemaView>;\n\nexport const FullSchemaTypeConstraint = z.object({\n  name: Identifier,\n  definition: z.string(),\n});\n\nexport type FullSchemaTypeConstraint = z.infer<typeof FullSchemaTypeConstraint>;\n\nexport const FullSchemaCompositeAttribute = z.object({\n  type: z.literal(\"compositeAttribute\"),\n  name: Identifier,\n  attributeType: z.string(),\n  collation: Identifier.optional(),\n});\n\nexport type FullSchemaCompositeAttribute = z.infer<\n  typeof FullSchemaCompositeAttribute\n>;\n\nexport const FullSchemaType = z.object({\n  type: z.literal(\"type\"),\n  schemaName: Identifier,\n  typeName: Identifier,\n  typeCategory: z.enum([\"enum\", \"domain\", \"composite\"]),\n  enumLabels: z.array(z.string()).optional(),\n  domainBaseType: z.string().optional(),\n  domainIsNotNull: z.boolean().optional(),\n  domainDefault: z.string().optional(),\n  domainConstraints: z.array(FullSchemaTypeConstraint).optional(),\n  compositeAttributes: z.array(FullSchemaCompositeAttribute).optional(),\n});\n\nexport type FullSchemaType = z.infer<typeof FullSchemaType>;\n\nexport const FullSchemaTrigger = z.object({\n  type: z.literal(\"trigger\"),\n  schemaName: Identifier,\n  tableName: Identifier,\n  triggerName: Identifier,\n  definition: z.string(),\n  enabledMode: z.string(),\n});\n\nexport type FullSchemaTrigger = z.infer<typeof FullSchemaTrigger>;\n\nexport const FullSchema = z.object({\n  indexes: z.array(FullSchemaIndex).default([]),\n  tables: z.array(FullSchemaTable).default([]),\n  constraints: z.array(FullSchemaConstraint).default([]),\n  functions: z.array(FullSchemaFunction).default([]),\n  extensions: z.array(FullSchemaExtension).default([]),\n  views: z.array(FullSchemaView).default([]),\n  types: z.array(FullSchemaType).default([]),\n  triggers: z.array(FullSchemaTrigger).default([]),\n});\n\nexport type FullSchema = z.infer<typeof FullSchema>;\n\nexport async function dumpSchema(db: Postgres): Promise<FullSchema> {\n  const rows = await db.exec<{ result: FullSchema }>(SCHEMA_DUMP_SQL);\n  return FullSchema.parse(rows[0]?.result ?? {});\n}\n"],"mappings":"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"}