Compare commits

...

4 Commits

Author SHA1 Message Date
Dan Ribbens
a3ab1c336b chore: drizzle schema snapshot version migration 2024-05-07 12:21:39 -04:00
Dan Ribbens
c974256f15 chore: drizzle-kit 0.20.18-08d50a4 2024-05-07 09:57:36 -04:00
Dan Ribbens
db613f35b2 chore(db-postgres): change drizzle imports 2024-05-03 14:08:08 -04:00
Dan Ribbens
2dd162269a chore: update drizzle-kit@beta 2024-05-03 13:52:53 -04:00
6 changed files with 22 additions and 60 deletions

View File

@@ -107,7 +107,7 @@
"copyfiles": "2.4.1",
"cross-env": "7.0.3",
"dotenv": "8.6.0",
"drizzle-kit": "0.20.14-1f2c838",
"drizzle-kit": "0.20.18-08d50a4",
"drizzle-orm": "0.29.4",
"escape-html": "^1.0.3",
"eslint-plugin-payload": "workspace:*",

View File

@@ -43,7 +43,7 @@
"dependencies": {
"@libsql/client": "^0.5.2",
"console-table-printer": "2.11.2",
"drizzle-kit": "0.20.14-1f2c838",
"drizzle-kit": "0.20.18-08d50a4",
"drizzle-orm": "0.29.4",
"pg": "8.11.3",
"prompts": "2.4.2",

View File

@@ -3,13 +3,10 @@ import type { DrizzleSnapshotJSON } from 'drizzle-kit/payload'
import type { CreateMigration } from 'payload/database'
import fs from 'fs'
import { createRequire } from 'module'
import prompts from 'prompts'
import type { PostgresAdapter } from './types.js'
const require = createRequire(import.meta.url)
const migrationTemplate = (
upSQL?: string,
downSQL?: string,
@@ -45,12 +42,12 @@ const getDefaultDrizzleSnapshot = (): DrizzleSnapshotJSON => ({
schemas: {},
tables: {},
},
dialect: 'pg',
dialect: 'postgresql',
enums: {},
prevId: '00000000-0000-0000-0000-00000000000',
schemas: {},
tables: {},
version: '5',
version: '6',
})
export const createMigration: CreateMigration = async function createMigration(
@@ -62,7 +59,9 @@ export const createMigration: CreateMigration = async function createMigration(
fs.mkdirSync(dir)
}
const { generateDrizzleJson, generateMigration } = require('drizzle-kit/payload')
const { generateDrizzleJson, generateMigration, upPgSnapshot } = await import(
'drizzle-kit/payload'
)
const [yyymmdd, hhmmss] = new Date().toISOString().split('T')
const formattedDate = yyymmdd.replace(/\D/g, '')
@@ -86,11 +85,15 @@ export const createMigration: CreateMigration = async function createMigration(
.reverse()?.[0]
if (latestSnapshot) {
const latestSnapshotJSON = JSON.parse(
const latestSnapshotJSON: DrizzleSnapshotJSON = JSON.parse(
fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'),
) as DrizzleSnapshotJSON
drizzleJsonBefore = latestSnapshotJSON
if (latestSnapshotJSON.version < drizzleJsonBefore.version) {
drizzleJsonBefore = upPgSnapshot(latestSnapshotJSON)
} else {
drizzleJsonBefore = latestSnapshotJSON
}
}
const drizzleJsonAfter = generateDrizzleJson(this.schema)

View File

@@ -3,7 +3,6 @@ import type { Payload } from 'payload'
import type { Migration } from 'payload/database'
import type { PayloadRequestWithData } from 'payload/types'
import { createRequire } from 'module'
import {
commitTransaction,
initTransaction,
@@ -18,8 +17,6 @@ import { createMigrationTable } from './utilities/createMigrationTable.js'
import { migrationTableExists } from './utilities/migrationTableExists.js'
import { parseError } from './utilities/parseError.js'
const require = createRequire(import.meta.url)
export async function migrate(this: PostgresAdapter): Promise<void> {
const { payload } = this
const migrationFiles = await readMigrationFiles({ payload })
@@ -85,7 +82,7 @@ export async function migrate(this: PostgresAdapter): Promise<void> {
}
async function runMigrationFile(payload: Payload, migration: Migration, batch: number) {
const { generateDrizzleJson } = require('drizzle-kit/payload')
const { generateDrizzleJson } = await import('drizzle-kit/payload')
const start = Date.now()
const req = { payload } as PayloadRequestWithData

View File

@@ -1,12 +1,9 @@
import { eq } from 'drizzle-orm'
import { numeric, timestamp, varchar } from 'drizzle-orm/pg-core'
import { createRequire } from 'module'
import prompts from 'prompts'
import type { PostgresAdapter } from '../types.js'
const require = createRequire(import.meta.url)
/**
* Pushes the development schema to the database using Drizzle.
*
@@ -14,7 +11,7 @@ const require = createRequire(import.meta.url)
* @returns {Promise<void>} - A promise that resolves once the schema push is complete.
*/
export const pushDevSchema = async (db: PostgresAdapter) => {
const { pushSchema } = require('drizzle-kit/payload')
const { pushSchema } = await import('drizzle-kit/payload')
// This will prompt if clarifications are needed for Drizzle to push new schema
const { apply, hasDataLoss, statementsToExecute, warnings } = await pushSchema(

49
pnpm-lock.yaml generated
View File

@@ -112,8 +112,8 @@ importers:
specifier: 8.6.0
version: 8.6.0
drizzle-kit:
specifier: 0.20.14-1f2c838
version: 0.20.14-1f2c838
specifier: 0.20.18-08d50a4
version: 0.20.18-08d50a4
drizzle-orm:
specifier: 0.29.4
version: 0.29.4(@libsql/client@0.5.6)(@types/pg@8.10.2)(@types/react@18.2.74)(pg@8.11.3)(react@18.2.0)
@@ -381,8 +381,8 @@ importers:
specifier: 2.11.2
version: 2.11.2
drizzle-kit:
specifier: 0.20.14-1f2c838
version: 0.20.14-1f2c838
specifier: 0.20.18-08d50a4
version: 0.20.18-08d50a4
drizzle-orm:
specifier: 0.29.4
version: 0.29.4(@libsql/client@0.5.6)(@types/pg@8.10.2)(@types/react@18.2.74)(pg@8.11.3)(react@18.2.0)
@@ -3302,11 +3302,6 @@ packages:
tslib: 2.6.2
dev: false
/@drizzle-team/studio@0.0.39:
resolution: {integrity: sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==}
dependencies:
superjson: 2.2.1
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
@@ -7473,10 +7468,6 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
/camelcase@7.0.1:
resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
engines: {node: '>=14.16'}
/caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
dependencies:
@@ -7515,6 +7506,7 @@ packages:
/chalk@5.3.0:
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
/changelogen@0.5.5:
resolution: {integrity: sha512-IzgToIJ/R9NhVKmL+PW33ozYkv53bXvufDNUSH3GTKXq1iCHGgkbgbtqEWbo8tnWNnt7nPDpjL8PwSG2iS8RVw==}
@@ -7870,12 +7862,6 @@ packages:
engines: {node: '>= 0.6'}
dev: false
/copy-anything@3.0.5:
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
engines: {node: '>=12.13'}
dependencies:
is-what: 4.1.16
/copyfiles@2.4.1:
resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
hasBin: true
@@ -8634,14 +8620,11 @@ packages:
dependencies:
wordwrap: 1.0.0
/drizzle-kit@0.20.14-1f2c838:
resolution: {integrity: sha512-Gun36T6RcfwrZAZ+Gk2ZeWJtvUhO002H/SvkY9BNcsACvhsd4OxkkxzrznuZ3Kz5NEdg12k7yvZqNoimPp68aw==}
/drizzle-kit@0.20.18-08d50a4:
resolution: {integrity: sha512-B6SDpLHa4WWS1KzwhHzr9Dv6mGIwU5ELqfESU86v5kakRKAC2STIgU7+swxx2GCJhkLTJBcW9Knk/sr3OZCkjQ==}
hasBin: true
dependencies:
'@drizzle-team/studio': 0.0.39
'@esbuild-kit/esm-loader': 2.6.5
camelcase: 7.0.1
chalk: 5.3.0
commander: 9.5.0
env-paths: 3.0.0
esbuild: 0.19.12
@@ -8649,8 +8632,6 @@ packages:
glob: 8.1.0
hanji: 0.0.5
json-diff: 0.9.0
minimatch: 7.4.6
semver: 7.6.0
zod: 3.22.4
transitivePeerDependencies:
- supports-color
@@ -10863,10 +10844,6 @@ packages:
call-bind: 1.0.7
get-intrinsic: 1.2.4
/is-what@4.1.16:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
/is-whitespace@0.3.0:
resolution: {integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==}
engines: {node: '>=0.10.0'}
@@ -12097,12 +12074,6 @@ packages:
dependencies:
brace-expansion: 2.0.1
/minimatch@7.4.6:
resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
engines: {node: '>=10'}
dependencies:
brace-expansion: 2.0.1
/minimatch@9.0.1:
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -15266,12 +15237,6 @@ packages:
resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
dev: false
/superjson@2.2.1:
resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==}
engines: {node: '>=16'}
dependencies:
copy-anything: 3.0.5
/supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}