diff --git a/examples/p-S3/package.json b/examples/p-S3/package.json index d5ed977c..bce3acde 100644 --- a/examples/p-S3/package.json +++ b/examples/p-S3/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@pergel/module-s3": "0.0.0", - "@pergel/nuxt": "0.4.0" + "@pergel/nuxt": "0.4.1" }, "devDependencies": { "@nuxt/devtools": "latest", diff --git a/examples/p-S3/pergel/README.yaml b/examples/p-S3/pergel/README.yaml index 4d58be3d..41d1072c 100644 --- a/examples/p-S3/pergel/README.yaml +++ b/examples/p-S3/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: S3: env: diff --git a/examples/p-bullmq/package.json b/examples/p-bullmq/package.json index 6ecbe84b..34ed3494 100644 --- a/examples/p-bullmq/package.json +++ b/examples/p-bullmq/package.json @@ -10,7 +10,7 @@ "postinstall": "nuxt prepare" }, "dependencies": { - "@pergel/nuxt": "0.4.0", + "@pergel/nuxt": "0.4.1", "bullmq": "^4.15.3", "ioredis": "^5.3.2", "p-timeout": "^6.1.2" diff --git a/examples/p-bullmq/pergel/README.yaml b/examples/p-bullmq/pergel/README.yaml index 7a3921e2..0ae6e0d4 100644 --- a/examples/p-bullmq/pergel/README.yaml +++ b/examples/p-bullmq/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: bullmq: env: diff --git a/examples/p-drizzle/package.json b/examples/p-drizzle/package.json index 70243f62..6723ed01 100644 --- a/examples/p-drizzle/package.json +++ b/examples/p-drizzle/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@faker-js/faker": "^8.3.1", - "@pergel/nuxt": "0.4.0", + "@pergel/nuxt": "0.4.1", "dotenv": "^16.3.1", "drizzle-kit": "^0.20.7", "drizzle-orm": "^0.29.1", diff --git a/examples/p-drizzle/pergel/README.yaml b/examples/p-drizzle/pergel/README.yaml index 2c596169..fe9108ed 100644 --- a/examples/p-drizzle/pergel/README.yaml +++ b/examples/p-drizzle/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: drizzle: # Script Commands diff --git a/examples/p-drizzle/pergel/rocket/drizzle/migrations/0000_marvelous_paper_doll.sql b/examples/p-drizzle/pergel/rocket/drizzle/migrations/0000_marvelous_paper_doll.sql new file mode 100644 index 00000000..d75bec29 --- /dev/null +++ b/examples/p-drizzle/pergel/rocket/drizzle/migrations/0000_marvelous_paper_doll.sql @@ -0,0 +1,15 @@ +CREATE TABLE IF NOT EXISTS "hello" ( + "id" uuid PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL, + "email" varchar NOT NULL, + "password" varchar NOT NULL, + "name" varchar NOT NULL, + CONSTRAINT "hello_email_unique" UNIQUE("email") +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "user" ( + "id" uuid PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL, + "email" varchar NOT NULL, + "password" varchar NOT NULL, + "name" varchar NOT NULL, + CONSTRAINT "user_email_unique" UNIQUE("email") +); diff --git a/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/0000_snapshot.json b/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/0000_snapshot.json new file mode 100644 index 00000000..63ab59ff --- /dev/null +++ b/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/0000_snapshot.json @@ -0,0 +1,101 @@ +{ + "id": "1fa599ea-0763-4e6c-a46c-6cbe69d5fca9", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "5", + "dialect": "pg", + "tables": { + "hello": { + "name": "hello", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "uuid_generate_v4()" + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "hello_email_unique": { + "name": "hello_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + } + }, + "user": { + "name": "user", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "uuid_generate_v4()" + }, + "email": { + "name": "email", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "password": { + "name": "password", + "type": "varchar", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "varchar", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "user_email_unique": { + "name": "user_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + } + } + }, + "enums": {}, + "schemas": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + } +} diff --git a/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/_journal.json b/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/_journal.json new file mode 100644 index 00000000..ccfdf859 --- /dev/null +++ b/examples/p-drizzle/pergel/rocket/drizzle/migrations/meta/_journal.json @@ -0,0 +1,13 @@ +{ + "version": "5", + "dialect": "pg", + "entries": [ + { + "idx": 0, + "version": "5", + "when": 1703245466438, + "tag": "0000_marvelous_paper_doll", + "breakpoints": true + } + ] +} diff --git a/examples/p-drizzle/pergel/rocket/drizzle/seeds/index.ts b/examples/p-drizzle/pergel/rocket/drizzle/seeds/index.ts index 8a0a9fee..f70bf6a2 100755 --- a/examples/p-drizzle/pergel/rocket/drizzle/seeds/index.ts +++ b/examples/p-drizzle/pergel/rocket/drizzle/seeds/index.ts @@ -4,7 +4,7 @@ import { migrate } from 'drizzle-orm/postgres-js/migrator' import { drizzle } from 'drizzle-orm/postgres-js' import postgres from 'postgres' import { config } from 'dotenv' -import { seed1 } from './seed1.mjs' +import { seed1 } from './seed1' config() @@ -12,7 +12,7 @@ const dbUrl = process.env.NUXT_ROCKET_DRIZZLE_PG_URL const dbDrop = process.env.NUXT_ROCKET_DRIZZLE_PG_DROP const dbSeed = process.env.NUXT_ROCKET_DRIZZLE_PG_SEED -const migrationDir = resolve('/Users/productdevbook/works/pergel/examples/p-drizzle/pergel/rocket/drizzle/migrations') +const migrationDir = resolve('pergel/rocket/drizzle/migrations') async function runMigrationsAndSeed() { if (!dbUrl) diff --git a/examples/p-drizzle/pergel/rocket/drizzle/seeds/seed1.ts b/examples/p-drizzle/pergel/rocket/drizzle/seeds/seed1.ts new file mode 100644 index 00000000..8f6c3e9f --- /dev/null +++ b/examples/p-drizzle/pergel/rocket/drizzle/seeds/seed1.ts @@ -0,0 +1,25 @@ +import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js' + +import { faker } from '@faker-js/faker' +import * as tablesTest from '../schema/index' + +export async function seed1(db: PostgresJsDatabase) { + console.warn('Seeding database...') + + await db.transaction(async (trx) => { + await trx.insert(tablesTest.user).values( + [ + { + email: faker.internet.email(), + name: faker.person.fullName(), + password: faker.internet.password(), + }, + ], + ).catch((res) => { + console.warn('Seeding database... catch', res) + }) + }).catch((_err: any) => { + }) + + console.warn('Seeding database... done') +} diff --git a/examples/p-graphqlYoga/package.json b/examples/p-graphqlYoga/package.json index 49584193..dbd204eb 100644 --- a/examples/p-graphqlYoga/package.json +++ b/examples/p-graphqlYoga/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@pergel/graphql": "0.0.0", - "@pergel/nuxt": "0.4.0" + "@pergel/nuxt": "0.4.1" }, "devDependencies": { "@nuxt/devtools": "latest", diff --git a/examples/p-graphqlYoga/pergel/README.yaml b/examples/p-graphqlYoga/pergel/README.yaml index 7b3ab2ac..08f2fdae 100644 --- a/examples/p-graphqlYoga/pergel/README.yaml +++ b/examples/p-graphqlYoga/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: graphqlYoga: # If pergel cli is installed, you can run `pergel install` automatically to install diff --git a/examples/p-json2csv/package.json b/examples/p-json2csv/package.json index 0fb0bc69..c3717efd 100644 --- a/examples/p-json2csv/package.json +++ b/examples/p-json2csv/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@json2csv/node": "^7.0.4", - "@pergel/nuxt": "0.4.0", + "@pergel/nuxt": "0.4.1", "node-cron": "^3.0.3" }, "devDependencies": { diff --git a/examples/p-json2csv/pergel/README.yaml b/examples/p-json2csv/pergel/README.yaml index df9c1cf0..faf87c94 100644 --- a/examples/p-json2csv/pergel/README.yaml +++ b/examples/p-json2csv/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: json2csv: # If pergel cli is installed, you can run `pergel install` automatically to install diff --git a/examples/p-nodeCron/package.json b/examples/p-nodeCron/package.json index f6313c69..4172a5c1 100644 --- a/examples/p-nodeCron/package.json +++ b/examples/p-nodeCron/package.json @@ -10,7 +10,7 @@ "postinstall": "nuxt prepare" }, "dependencies": { - "@pergel/nuxt": "0.4.0", + "@pergel/nuxt": "0.4.1", "node-cron": "^3.0.3" }, "devDependencies": { diff --git a/examples/p-nodeCron/pergel/README.yaml b/examples/p-nodeCron/pergel/README.yaml index 9b5da993..1529e02d 100644 --- a/examples/p-nodeCron/pergel/README.yaml +++ b/examples/p-nodeCron/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: nodeCron: # If pergel cli is installed, you can run `pergel install` automatically to install diff --git a/examples/p-ses/package.json b/examples/p-ses/package.json index ab84e3c1..c586d529 100644 --- a/examples/p-ses/package.json +++ b/examples/p-ses/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@aws-sdk/client-ses": "^3.470.0", - "@pergel/nuxt": "0.4.0" + "@pergel/nuxt": "0.4.1" }, "devDependencies": { "@nuxt/devtools": "latest", diff --git a/examples/p-ses/pergel/README.yaml b/examples/p-ses/pergel/README.yaml index 77349923..ca70a4c3 100644 --- a/examples/p-ses/pergel/README.yaml +++ b/examples/p-ses/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 rocket: ses: env: diff --git a/examples/pnpm-lock.yaml b/examples/pnpm-lock.yaml index 7f2b0e6f..dc9217a2 100644 --- a/examples/pnpm-lock.yaml +++ b/examples/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: 0.0.0 version: 0.0.0 '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) devDependencies: '@nuxt/devtools': specifier: latest @@ -37,8 +37,8 @@ importers: p-bullmq: dependencies: '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) bullmq: specifier: ^4.15.3 version: 4.15.3 @@ -68,8 +68,8 @@ importers: specifier: ^8.3.1 version: 8.3.1 '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) dotenv: specifier: ^16.3.1 version: 16.3.1 @@ -105,8 +105,8 @@ importers: specifier: 0.0.0 version: 0.0.0(@types/node@20.10.0)(graphql@16.8.1) '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) devDependencies: '@nuxt/devtools': specifier: latest @@ -127,8 +127,8 @@ importers: specifier: ^7.0.4 version: 7.0.4 '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) node-cron: specifier: ^3.0.3 version: 3.0.3 @@ -152,8 +152,8 @@ importers: p-nodeCron: dependencies: '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) node-cron: specifier: ^3.0.3 version: 3.0.3 @@ -180,8 +180,8 @@ importers: specifier: ^3.470.0 version: 3.470.0 '@pergel/nuxt': - specifier: 0.4.0 - version: 0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) + specifier: 0.4.1 + version: 0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11) devDependencies: '@nuxt/devtools': specifier: latest @@ -3588,8 +3588,8 @@ packages: - aws-crt dev: false - /@pergel/nuxt@0.4.0(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11): - resolution: {integrity: sha512-IMxm/qhKKbjolV8nnECe85NH/zt+dasPFhUP9I2oaTXPqOejfHWj9RpGnGUyGONebI4HRlQkkM2EJgZrSjS7qQ==} + /@pergel/nuxt@0.4.1(nuxt@3.8.2)(vite@5.0.8)(vue@3.3.11): + resolution: {integrity: sha512-tBdcf1Qty451vkXKgtt4gDS7B85ZlJXyIcikUb4Nq8QsnX+JY2VWDV1cNp2LGDShLYBrMsoUHnhsmQ6se06MNA==} dependencies: '@nuxt/devtools': 1.0.6(nuxt@3.8.2)(vite@5.0.8) '@nuxt/devtools-kit': 1.0.6(nuxt@3.8.2)(vite@5.0.8) diff --git a/packages/nuxt/playground/pergel/README.yaml b/packages/nuxt/playground/pergel/README.yaml index c48c321b..fcff8ff1 100644 --- a/packages/nuxt/playground/pergel/README.yaml +++ b/packages/nuxt/playground/pergel/README.yaml @@ -1,6 +1,6 @@ pergel: # This file is generated by pergel. Do not edit it manually. - # Version: 0.4.0 + # Version: 0.4.1 test: drizzle: # Script Commands diff --git a/packages/nuxt/playground/pergel/test/drizzle/seeds/index.ts b/packages/nuxt/playground/pergel/test/drizzle/seeds/index.ts index 4e7a28be..201ed31b 100755 --- a/packages/nuxt/playground/pergel/test/drizzle/seeds/index.ts +++ b/packages/nuxt/playground/pergel/test/drizzle/seeds/index.ts @@ -12,7 +12,7 @@ const dbUrl = process.env.NUXT_TEST_DRIZZLE_PG_URL const dbDrop = process.env.NUXT_TEST_DRIZZLE_PG_DROP const dbSeed = process.env.NUXT_TEST_DRIZZLE_PG_SEED -const migrationDir = resolve('/Users/productdevbook/works/pergel/packages/nuxt/playground/pergel/test/drizzle/migrations') +const migrationDir = resolve('pergel/test/drizzle/migrations') async function runMigrationsAndSeed() { if (!dbUrl) diff --git a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts index c1e8cc03..a8130d3e 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/drivers/postgres/index.ts @@ -1,5 +1,5 @@ import { existsSync, mkdirSync, writeFileSync } from 'node:fs' -import { resolve } from 'node:path' +import { join, resolve } from 'node:path' import { startSubprocess } from '@nuxt/devtools-kit' import type { ResolvedDrizzleConfig } from '../../types' @@ -72,7 +72,7 @@ export default { dbDrop: env.drop, dbSeed: env.seed, }, - migrationDir: `${nuxt._pergel._module.options.migrationsPath}`, + migrationDir: join(nuxt._pergel._module.dir.module, nuxt._pergel._module.options.dir.migrations), }) writeFileSync(resolve(nuxt._pergel._module.options.seedPaths, 'index.ts'), file, { mode: 0o777, diff --git a/packages/nuxt/src/runtime/modules/drizzle/index.ts b/packages/nuxt/src/runtime/modules/drizzle/index.ts index c2a7bb2a..ca533d44 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/index.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/index.ts @@ -53,6 +53,10 @@ export default definePergelModule({ schemaPath: resolve(nuxt._pergel._module.moduleDir, rootOptions.schemaPath ?? 'schema'), seedPaths: resolve(nuxt._pergel._module.moduleDir, rootOptions.seedPaths ?? 'seeds'), mergeSchemas: false, + dir: { + schema: rootOptions.schemaPath ?? 'schema', + migrations: rootOptions.migrationsPath ?? 'migrations', + }, _driver: { name: driverName ?? 'postgresjs', driver: driver ?? 'pg', diff --git a/packages/nuxt/src/runtime/modules/drizzle/types.ts b/packages/nuxt/src/runtime/modules/drizzle/types.ts index 0f1137a9..f1b08f39 100644 --- a/packages/nuxt/src/runtime/modules/drizzle/types.ts +++ b/packages/nuxt/src/runtime/modules/drizzle/types.ts @@ -65,13 +65,13 @@ export interface ResolvedDrizzleConfig { /** * Database schemas - * @default 'pergel/{projectName}/{moduleName}/schema' + * @default 'home/user/project1/pergel/{projectName}/{moduleName}/schema' */ schemaPath: string /** * Database migrations - * @default 'pergel/{projectName}/{moduleName}/migrations' + * @default 'home/user/project1/pergel/{projectName}/{moduleName}/migrations' */ migrationsPath: string @@ -81,6 +81,19 @@ export interface ResolvedDrizzleConfig { */ mergeSchemas?: boolean + dir: { + /** + * Database schemas + * @default 'schema' + */ + schema: string + /** + * Database migrations + * @default 'migrations' + */ + migrations: string + } + /** * Database seeds * @default 'pergel/{projectName}/{moduleName}/seeds'