47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
// type GenerateMigration = (before: DrizzleSnapshotJSON, after: DrizzleSnapshotJSON) => string[]
|
|
|
|
// type GenerateDrizzleJSON = (schema: DrizzleSchemaExports) => DrizzleSnapshotJSON
|
|
|
|
// type PushDiff = (schema: DrizzleSchemaExports) => Promise<{ warnings: string[], apply: () => Promise<void> }>
|
|
|
|
// drizzle-kit@utils
|
|
|
|
import { drizzle } from 'drizzle-orm/node-postgres'
|
|
import { Pool } from 'pg'
|
|
|
|
async function generateUsage() {
|
|
const { generateDrizzleJson, generateMigration } = require('drizzle-kit/utils')
|
|
|
|
// @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
|
|
const schema = await import('./data/users')
|
|
// @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
|
|
const schemaAfter = await import('./data/users-after')
|
|
|
|
const drizzleJsonBefore = generateDrizzleJson(schema)
|
|
const drizzleJsonAfter = generateDrizzleJson(schemaAfter)
|
|
|
|
const sqlStatements = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)
|
|
|
|
console.log(sqlStatements)
|
|
}
|
|
|
|
async function pushUsage() {
|
|
const { pushSchema } = require('drizzle-kit/utils')
|
|
|
|
// @ts-expect-error Just TypeScript being broken // TODO: Open TypeScript issue
|
|
const schemaAfter = await import('./data/users-after')
|
|
|
|
const db = drizzle(new Pool({ connectionString: '' }))
|
|
|
|
const response = await pushSchema(schemaAfter, db)
|
|
|
|
console.log('\n')
|
|
console.log('hasDataLoss: ', response.hasDataLoss)
|
|
console.log('warnings: ', response.warnings)
|
|
console.log('statements: ', response.statementsToExecute)
|
|
|
|
await response.apply()
|
|
|
|
process.exit(0)
|
|
}
|