orchid-orm 1.5.24 → 1.5.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,26 +1,26 @@
1
1
 
2
- > orchid-orm@1.5.23 test:ci /home/romeo/dev/my/orchid-orm/packages/orm
2
+ > orchid-orm@1.5.24 test:ci /home/romeo/dev/my/orchid-orm/packages/orm
3
3
  > jest --coverage --coverageReporters json-summary
4
4
 
5
+ PASS src/codegen/createBaseTableFile.test.ts
6
+ PASS src/codegen/updateTableFile/changeTable.test.ts
7
+ PASS src/codegen/appCodeUpdater.test.ts
5
8
  PASS src/bin/init.test.ts
6
- PASS src/relations/belongsTo.test.ts
7
9
  PASS src/codegen/updateMainFile.test.ts
8
- PASS src/relations/hasMany.test.ts
9
- PASS src/relations/hasOne.test.ts
10
- PASS src/codegen/updateTableFile/changeTable.test.ts (5.155 s)
11
- PASS src/relations/hasAndBelongsToMany.test.ts (5.085 s)
12
- PASS src/transaction.test.ts
13
- PASS src/codegen/updateTableFile/createTable.test.ts
14
- PASS src/orm.test.ts
15
10
  PASS src/relations/relations.test.ts
11
+ PASS src/codegen/updateTableFile/createTable.test.ts
16
12
  PASS src/codegen/updateTableFile/renameTable.test.ts
13
+ PASS src/transaction.test.ts
14
+ PASS src/relations/hasMany.test.ts
17
15
  PASS src/table.test.ts
16
+ PASS src/relations/hasOne.test.ts
17
+ PASS src/relations/hasAndBelongsToMany.test.ts
18
+ PASS src/orm.test.ts
19
+ PASS src/relations/belongsTo.test.ts
18
20
  PASS src/repo.test.ts
19
- PASS src/codegen/createBaseTableFile.test.ts
20
- PASS src/codegen/appCodeUpdater.test.ts
21
21
 
22
22
  Test Suites: 16 passed, 16 total
23
23
  Tests: 319 passed, 319 total
24
24
  Snapshots: 0 total
25
- Time: 8.385 s
25
+ Time: 6.903 s
26
26
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # orchid-orm
2
2
 
3
+ ## 1.5.25
4
+
5
+ ### Patch Changes
6
+
7
+ - Change relative paths in rake-db config generated by init script
8
+
3
9
  ## 1.5.24
4
10
 
5
11
  ### Patch Changes
package/dist/bin.js CHANGED
@@ -345,12 +345,12 @@ import { config } from './config';
345
345
  import { appCodeUpdater } from 'orchid-orm';
346
346
 
347
347
  rakeDb(${config.testDatabase ? "config.allDatabases" : "config.database"}, {
348
- migrationsPath: 'src/db/migrations',
348
+ migrationsPath: './migrations',
349
349
  appCodeUpdater: appCodeUpdater({
350
- tablePath: (tableName) => \`src/db/tables/\${tableName}.table.ts\`,
351
- baseTablePath: 'src/db/baseTable.ts',
350
+ tablePath: (tableName) => \`./tables/\${tableName}.table.ts\`,
351
+ baseTablePath: './baseTable.ts',
352
352
  baseTableName: 'BaseTable',
353
- mainFilePath: 'src/db/db.ts',
353
+ mainFilePath: './db.ts',
354
354
  }),
355
355
  useCodeUpdater: true, // set to false to disable code updater
356
356
  commands: {
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sources":["../src/bin/init.ts","../src/bin/bin.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport path from 'path';\nimport https from 'https';\nimport prompts from 'prompts';\n\nexport type InitConfig = {\n testDatabase?: boolean;\n addSchemaToZod?: boolean;\n addTestFactory?: boolean;\n demoTables?: boolean;\n timestamp?: 'date' | 'number';\n};\n\ntype DependencyKind = 'dependencies' | 'devDependencies';\n\nconst dirPath = path.resolve(process.cwd(), 'src', 'db');\n\nexport const askOrchidORMConfig = async () => {\n const response = await prompts([\n {\n type: 'select',\n name: 'timestamp',\n message: 'Preferred type of returned timestamps:',\n choices: [\n {\n title: 'string (as returned from db)',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Should I add a separate database for tests?',\n },\n {\n type: 'confirm',\n name: 'addSchemaToZod',\n message: 'Are you going to use Zod for validation?',\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Do you want object factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Should I add demo tables?',\n },\n ]);\n\n return response as InitConfig;\n};\n\nexport const initOrchidORM = async (config: InitConfig) => {\n await fs.mkdir(dirPath, { recursive: true });\n\n await setupPackageJson(config);\n await setupTSConfig();\n await setupEnv(config);\n await setupGitIgnore();\n await setupBaseTable(config);\n await setupTables(config);\n await setupConfig(config);\n await setupMainDb(config);\n await setupMigrationScript(config);\n await createMigrations(config);\n await createSeed(config);\n\n greet();\n};\n\nconst setupPackageJson = async (config: InitConfig) => {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n getLatestPackageVersion('pqb', 'dependencies'),\n getLatestPackageVersion('pg', 'dependencies'),\n config.addSchemaToZod &&\n getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies'),\n getLatestPackageVersion('rake-db', 'devDependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@swc/core', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('ts-node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = path.resolve(process.cwd(), 'package.json');\n const content = await readFileSafe(packageJsonPath);\n const json = content ? JSON.parse(content) : {};\n\n if (!json.scripts) json.scripts = {};\n json.scripts.db = 'ts-node src/db/dbScripts.ts';\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n};\n\nconst getLatestPackageVersion = (\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> => {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n};\n\nconst readFileSafe = async (path: string) => {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n};\n\nconst setupTSConfig = async () => {\n const tsConfigPath = path.resolve(process.cwd(), 'tsconfig.json');\n const content = await readFileSafe(tsConfigPath);\n const json = content ? JSON.parse(content) : {};\n if (!json['ts-node']) {\n json['ts-node'] = {};\n }\n if (!json['ts-node'].swc) {\n json['ts-node'].swc = true;\n }\n if (!json.compilerOptions?.strict) {\n if (!json.compilerOptions) json.compilerOptions = {};\n json.compilerOptions.strict = true;\n await fs.writeFile(tsConfigPath, `${JSON.stringify(json, null, ' ')}\\n`);\n }\n};\n\nconst setupEnv = async (config: InitConfig) => {\n const envPath = path.resolve(process.cwd(), '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://user:password@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://user:password@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n};\n\nconst setupGitIgnore = async () => {\n const gitignorePath = path.resolve(process.cwd(), '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n};\n\nconst setupBaseTable = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'baseTable.ts');\n\n let content = `import { createBaseTable } from 'orchid-orm';\n\nexport const BaseTable = createBaseTable({\n columnTypes: (t) => ({\n ...t,\n text: (min = 0, max = Infinity) => t.text(min, max),`;\n\n const { timestamp } = config;\n if (timestamp) {\n content += `\n timestamp: <P extends number>(precision?: P) =>\n t.timestamp<P>(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n }),\n});\n`;\n\n await fs.writeFile(filePath, content);\n};\n\nconst setupTables = async (config: InitConfig) => {\n if (!config.demoTables) return;\n\n const tablesDir = path.join(dirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n path.join(tablesDir, 'post.table.ts'),\n `import { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n${\n config.addSchemaToZod\n ? `import { tableToZod } from 'orchid-orm-schema-to-zod';\\n`\n : ''\n}\nexport type Post = PostTable['columns']['type'];\nexport class PostTable extends BaseTable {\n table = 'post';\n columns = this.setColumns((t) => ({\n id: t.serial().primaryKey(),\n title: t.text(3, 100).unique(),\n text: t.text(20, 10000),\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n${\n config.addSchemaToZod\n ? `\\nexport const postSchema = tableToZod(PostTable);\\n`\n : ''\n}`,\n );\n\n await fs.writeFile(\n path.join(tablesDir, 'comment.table.ts'),\n `import { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n${\n config.addSchemaToZod\n ? `import { tableToZod } from 'orchid-orm-schema-to-zod';\\n`\n : ''\n}\nexport type Comment = CommentTable['columns']['type'];\nexport class CommentTable extends BaseTable {\n table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.serial().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text(5, 1000),\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n${\n config.addSchemaToZod\n ? `\\nexport const commentSchema = tableToZod(CommentTable);\\n`\n : ''\n}`,\n );\n};\n\nconst setupConfig = async (config: InitConfig) => {\n const configPath = path.join(dirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n};\n\nconst setupMainDb = async (config: InitConfig) => {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = path.join(dirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n};\n\nconst setupMigrationScript = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'dbScripts.ts');\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'rake-db';\nimport { config } from './config';\nimport { appCodeUpdater } from 'orchid-orm';\n\nrakeDb(${config.testDatabase ? 'config.allDatabases' : 'config.database'}, {\n migrationsPath: 'src/db/migrations',\n appCodeUpdater: appCodeUpdater({\n tablePath: (tableName) => \\`src/db/tables/\\${tableName}.table.ts\\`,\n baseTablePath: 'src/db/baseTable.ts',\n baseTableName: 'BaseTable',\n mainFilePath: 'src/db/db.ts',\n }),\n useCodeUpdater: true, // set to false to disable code updater\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n});\n`,\n );\n};\n\nconst createMigrations = async (config: InitConfig) => {\n const migrationsPath = path.join(dirPath, 'migrations');\n await fs.mkdir(migrationsPath);\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = path.join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createPost.ts`,\n );\n await fs.writeFile(\n postPath,\n `import { change } from 'rake-db';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.serial().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = path.join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createComment.ts`,\n );\n await fs.writeFile(\n commentPath,\n `import { change } from 'rake-db';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.serial().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n};\n\nconst makeFileTimeStamp = (now: Date) => {\n return [\n now.getUTCFullYear(),\n now.getUTCMonth() + 1,\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds(),\n ]\n .map((value) => (value < 10 ? `0${value}` : value))\n .join('');\n};\n\nconst createSeed = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n};\n\nconst greet = () => {\n console.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup, install dependencies:\n\n> npm i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> npm run db create\n\nAnd run the migrations:\n\n> npm run db migrate\n`);\n};\n","import { askOrchidORMConfig, initOrchidORM } from './init';\n\naskOrchidORMConfig().then(initOrchidORM);\n"],"names":["path","prompts","fs","https"],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sources":["../src/bin/init.ts","../src/bin/bin.ts"],"sourcesContent":["import fs from 'fs/promises';\nimport path from 'path';\nimport https from 'https';\nimport prompts from 'prompts';\n\nexport type InitConfig = {\n testDatabase?: boolean;\n addSchemaToZod?: boolean;\n addTestFactory?: boolean;\n demoTables?: boolean;\n timestamp?: 'date' | 'number';\n};\n\ntype DependencyKind = 'dependencies' | 'devDependencies';\n\nconst dirPath = path.resolve(process.cwd(), 'src', 'db');\n\nexport const askOrchidORMConfig = async () => {\n const response = await prompts([\n {\n type: 'select',\n name: 'timestamp',\n message: 'Preferred type of returned timestamps:',\n choices: [\n {\n title: 'string (as returned from db)',\n },\n {\n title: 'number (epoch)',\n value: 'number',\n },\n {\n title: 'Date object',\n value: 'date',\n },\n ],\n },\n {\n type: 'confirm',\n name: 'testDatabase',\n message: 'Should I add a separate database for tests?',\n },\n {\n type: 'confirm',\n name: 'addSchemaToZod',\n message: 'Are you going to use Zod for validation?',\n },\n {\n type: 'confirm',\n name: 'addTestFactory',\n message: 'Do you want object factories for writing tests?',\n },\n {\n type: 'confirm',\n name: 'demoTables',\n message: 'Should I add demo tables?',\n },\n ]);\n\n return response as InitConfig;\n};\n\nexport const initOrchidORM = async (config: InitConfig) => {\n await fs.mkdir(dirPath, { recursive: true });\n\n await setupPackageJson(config);\n await setupTSConfig();\n await setupEnv(config);\n await setupGitIgnore();\n await setupBaseTable(config);\n await setupTables(config);\n await setupConfig(config);\n await setupMainDb(config);\n await setupMigrationScript(config);\n await createMigrations(config);\n await createSeed(config);\n\n greet();\n};\n\nconst setupPackageJson = async (config: InitConfig) => {\n const pairs = await Promise.all([\n getLatestPackageVersion('dotenv', 'dependencies'),\n getLatestPackageVersion('orchid-orm', 'dependencies'),\n getLatestPackageVersion('pqb', 'dependencies'),\n getLatestPackageVersion('pg', 'dependencies'),\n config.addSchemaToZod &&\n getLatestPackageVersion('orchid-orm-schema-to-zod', 'dependencies'),\n getLatestPackageVersion('rake-db', 'devDependencies'),\n config.addTestFactory &&\n getLatestPackageVersion('orchid-orm-test-factory', 'devDependencies'),\n getLatestPackageVersion('@swc/core', 'devDependencies'),\n getLatestPackageVersion('@types/node', 'devDependencies'),\n getLatestPackageVersion('ts-node', 'devDependencies'),\n getLatestPackageVersion('typescript', 'devDependencies'),\n ]);\n\n const deps: Record<string, string> = {};\n const devDeps: Record<string, string> = {};\n for (const item of pairs) {\n if (!item) continue;\n const [key, { version, kind }] = item;\n (kind === 'dependencies' ? deps : devDeps)[key] = version;\n }\n\n const packageJsonPath = path.resolve(process.cwd(), 'package.json');\n const content = await readFileSafe(packageJsonPath);\n const json = content ? JSON.parse(content) : {};\n\n if (!json.scripts) json.scripts = {};\n json.scripts.db = 'ts-node src/db/dbScripts.ts';\n\n if (!json.dependencies) json.dependencies = {};\n\n for (const key in deps) {\n json.dependencies[key] = deps[key];\n }\n\n if (!json.devDependencies) json.devDependencies = {};\n for (const key in devDeps) {\n json.devDependencies[key] = devDeps[key];\n }\n\n await fs.writeFile(packageJsonPath, JSON.stringify(json, null, ' ') + '\\n');\n};\n\nconst getLatestPackageVersion = (\n name: string,\n kind: DependencyKind,\n): Promise<[string, { version: string; kind: DependencyKind }]> => {\n return new Promise((resolve, reject) => {\n https\n .get(`https://registry.npmjs.org/${name}/latest`, (res) => {\n let data = '';\n res.on('data', (chunk) => (data += chunk));\n res.on('end', () =>\n resolve([name, { version: `^${JSON.parse(data).version}`, kind }]),\n );\n })\n .on('error', reject);\n });\n};\n\nconst readFileSafe = async (path: string) => {\n try {\n return await fs.readFile(path, 'utf-8');\n } catch (err) {\n if ((err as unknown as { code: string }).code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n};\n\nconst setupTSConfig = async () => {\n const tsConfigPath = path.resolve(process.cwd(), 'tsconfig.json');\n const content = await readFileSafe(tsConfigPath);\n const json = content ? JSON.parse(content) : {};\n if (!json['ts-node']) {\n json['ts-node'] = {};\n }\n if (!json['ts-node'].swc) {\n json['ts-node'].swc = true;\n }\n if (!json.compilerOptions?.strict) {\n if (!json.compilerOptions) json.compilerOptions = {};\n json.compilerOptions.strict = true;\n await fs.writeFile(tsConfigPath, `${JSON.stringify(json, null, ' ')}\\n`);\n }\n};\n\nconst setupEnv = async (config: InitConfig) => {\n const envPath = path.resolve(process.cwd(), '.env');\n let content = ((await readFileSafe(envPath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^DATABASE_URL=/m)) {\n content += `\\nDATABASE_URL=postgres://user:password@localhost:5432/dbname?ssl=false`;\n changed = true;\n }\n\n if (config.testDatabase && !content.match(/^DATABASE_TEST_URL=/m)) {\n content += `\\nDATABASE_TEST_URL=postgres://user:password@localhost:5432/dbname-test?ssl=false`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(envPath, `${content.trim()}\\n`);\n }\n};\n\nconst setupGitIgnore = async () => {\n const gitignorePath = path.resolve(process.cwd(), '.gitignore');\n let content = ((await readFileSafe(gitignorePath)) || '').trim();\n let changed = false;\n\n if (!content.match(/^node_modules\\b/m)) {\n content += `\\nnode_modules`;\n changed = true;\n }\n\n if (!content.match(/^.env\\b/m)) {\n content += `\\n.env`;\n changed = true;\n }\n\n if (changed) {\n await fs.writeFile(gitignorePath, `${content.trim()}\\n`);\n }\n};\n\nconst setupBaseTable = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'baseTable.ts');\n\n let content = `import { createBaseTable } from 'orchid-orm';\n\nexport const BaseTable = createBaseTable({\n columnTypes: (t) => ({\n ...t,\n text: (min = 0, max = Infinity) => t.text(min, max),`;\n\n const { timestamp } = config;\n if (timestamp) {\n content += `\n timestamp: <P extends number>(precision?: P) =>\n t.timestamp<P>(precision).${\n timestamp === 'date' ? 'asDate' : 'asNumber'\n }(),`;\n }\n\n content += `\n }),\n});\n`;\n\n await fs.writeFile(filePath, content);\n};\n\nconst setupTables = async (config: InitConfig) => {\n if (!config.demoTables) return;\n\n const tablesDir = path.join(dirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n path.join(tablesDir, 'post.table.ts'),\n `import { BaseTable } from '../baseTable';\nimport { CommentTable } from './comment.table';\n${\n config.addSchemaToZod\n ? `import { tableToZod } from 'orchid-orm-schema-to-zod';\\n`\n : ''\n}\nexport type Post = PostTable['columns']['type'];\nexport class PostTable extends BaseTable {\n table = 'post';\n columns = this.setColumns((t) => ({\n id: t.serial().primaryKey(),\n title: t.text(3, 100).unique(),\n text: t.text(20, 10000),\n ...t.timestamps(),\n }));\n\n relations = {\n comments: this.hasMany(() => CommentTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n${\n config.addSchemaToZod\n ? `\\nexport const postSchema = tableToZod(PostTable);\\n`\n : ''\n}`,\n );\n\n await fs.writeFile(\n path.join(tablesDir, 'comment.table.ts'),\n `import { BaseTable } from '../baseTable';\nimport { PostTable } from './post.table';\n${\n config.addSchemaToZod\n ? `import { tableToZod } from 'orchid-orm-schema-to-zod';\\n`\n : ''\n}\nexport type Comment = CommentTable['columns']['type'];\nexport class CommentTable extends BaseTable {\n table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.serial().primaryKey(),\n postId: t\n .integer()\n .foreignKey(() => PostTable, 'id')\n .index(),\n text: t.text(5, 1000),\n ...t.timestamps(),\n }));\n\n relations = {\n post: this.belongsTo(() => PostTable, {\n primaryKey: 'id',\n foreignKey: 'postId',\n }),\n };\n}\n${\n config.addSchemaToZod\n ? `\\nexport const commentSchema = tableToZod(CommentTable);\\n`\n : ''\n}`,\n );\n};\n\nconst setupConfig = async (config: InitConfig) => {\n const configPath = path.join(dirPath, 'config.ts');\n\n let content = `import 'dotenv/config';\n\nconst database = {\n databaseURL: process.env.DATABASE_URL,\n};\nif (!database.databaseURL) throw new Error('DATABASE_URL is missing in .env');`;\n\n if (config.testDatabase) {\n content += `\n\nconst testDatabase = {\n databaseURL: process.env.DATABASE_TEST_URL,\n};\n\nconst allDatabases = [database];\n\nif (testDatabase.databaseURL) {\n allDatabases.push(testDatabase);\n}`;\n }\n\n content += `\n\nexport const config = {`;\n\n if (config.testDatabase) {\n content += `\n allDatabases,`;\n }\n\n if (config.testDatabase) {\n content += `\n database: process.env.NODE_ENV === 'test' ? testDatabase : database,`;\n } else {\n content += `\n database,`;\n }\n content += `\n};\n`;\n\n await fs.writeFile(configPath, content);\n};\n\nconst setupMainDb = async (config: InitConfig) => {\n let imports = '';\n let tables = '';\n if (config.demoTables) {\n imports += `\nimport { PostTable } from './tables/post.table';\nimport { CommentTable } from './tables/comment.table';`;\n tables += `\n post: PostTable,\n comment: CommentTable,`;\n }\n\n const dbPath = path.join(dirPath, 'db.ts');\n await fs.writeFile(\n dbPath,\n `import { orchidORM } from 'orchid-orm';\nimport { config } from './config';${imports}\n\nexport const db = orchidORM(config.database, {${tables}\n});\n`,\n );\n};\n\nconst setupMigrationScript = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'dbScripts.ts');\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'rake-db';\nimport { config } from './config';\nimport { appCodeUpdater } from 'orchid-orm';\n\nrakeDb(${config.testDatabase ? 'config.allDatabases' : 'config.database'}, {\n migrationsPath: './migrations',\n appCodeUpdater: appCodeUpdater({\n tablePath: (tableName) => \\`./tables/\\${tableName}.table.ts\\`,\n baseTablePath: './baseTable.ts',\n baseTableName: 'BaseTable',\n mainFilePath: './db.ts',\n }),\n useCodeUpdater: true, // set to false to disable code updater\n commands: {\n async seed() {\n const { seed } = await import('./seed');\n await seed();\n },\n },\n});\n`,\n );\n};\n\nconst createMigrations = async (config: InitConfig) => {\n const migrationsPath = path.join(dirPath, 'migrations');\n await fs.mkdir(migrationsPath);\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = path.join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createPost.ts`,\n );\n await fs.writeFile(\n postPath,\n `import { change } from 'rake-db';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.serial().primaryKey(),\n title: t.text().unique(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n\n now.setTime(now.getTime() + 1000);\n\n const commentPath = path.join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createComment.ts`,\n );\n await fs.writeFile(\n commentPath,\n `import { change } from 'rake-db';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.serial().primaryKey(),\n postId: t.integer().foreignKey('post', 'id').index(),\n text: t.text(),\n ...t.timestamps(),\n }));\n});\n`,\n );\n};\n\nconst makeFileTimeStamp = (now: Date) => {\n return [\n now.getUTCFullYear(),\n now.getUTCMonth() + 1,\n now.getUTCDate(),\n now.getUTCHours(),\n now.getUTCMinutes(),\n now.getUTCSeconds(),\n ]\n .map((value) => (value < 10 ? `0${value}` : value))\n .join('');\n};\n\nconst createSeed = async (config: InitConfig) => {\n const filePath = path.join(dirPath, 'seed.ts');\n\n let content;\n if (config.demoTables) {\n content = `await db.post.findBy({ title: 'Sample post' }).orCreate({\n title: 'Post',\n text: 'This is a text for a sample post. It contains words, spaces, and punctuation.',\n comments: {\n create: [\n {\n text: 'Nice post!',\n },\n {\n text: \\`Too long, didn't read\\`,\n },\n ],\n },\n });`;\n } else {\n content = `// create records here`;\n }\n\n await fs.writeFile(\n filePath,\n `import { db } from './db';\n\nexport const seed = async () => {\n ${content}\n\n await db.$close();\n};\n`,\n );\n};\n\nconst greet = () => {\n console.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup, install dependencies:\n\n> npm i\n\nEnter the correct database credentials to the .env file,\nthen create the database:\n\n> npm run db create\n\nAnd run the migrations:\n\n> npm run db migrate\n`);\n};\n","import { askOrchidORMConfig, initOrchidORM } from './init';\n\naskOrchidORMConfig().then(initOrchidORM);\n"],"names":["path","prompts","fs","https"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAM,UAAUA,wBAAK,CAAA,OAAA,CAAQ,QAAQ,GAAI,EAAA,EAAG,OAAO,IAAI,CAAA,CAAA;AAEhD,MAAM,qBAAqB,YAAY;AAC5C,EAAM,MAAA,QAAA,GAAW,MAAMC,2BAAQ,CAAA;AAAA,IAC7B;AAAA,MACE,IAAM,EAAA,QAAA;AAAA,MACN,IAAM,EAAA,WAAA;AAAA,MACN,OAAS,EAAA,wCAAA;AAAA,MACT,OAAS,EAAA;AAAA,QACP;AAAA,UACE,KAAO,EAAA,8BAAA;AAAA,SACT;AAAA,QACA;AAAA,UACE,KAAO,EAAA,gBAAA;AAAA,UACP,KAAO,EAAA,QAAA;AAAA,SACT;AAAA,QACA;AAAA,UACE,KAAO,EAAA,aAAA;AAAA,UACP,KAAO,EAAA,MAAA;AAAA,SACT;AAAA,OACF;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,cAAA;AAAA,MACN,OAAS,EAAA,6CAAA;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,gBAAA;AAAA,MACN,OAAS,EAAA,0CAAA;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,gBAAA;AAAA,MACN,OAAS,EAAA,iDAAA;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAM,EAAA,SAAA;AAAA,MACN,IAAM,EAAA,YAAA;AAAA,MACN,OAAS,EAAA,2BAAA;AAAA,KACX;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,QAAA,CAAA;AACT,CAAA,CAAA;AAEa,MAAA,aAAA,GAAgB,OAAO,MAAuB,KAAA;AACzD,EAAA,MAAMC,uBAAG,KAAM,CAAA,OAAA,EAAS,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAE3C,EAAA,MAAM,iBAAiB,MAAM,CAAA,CAAA;AAC7B,EAAA,MAAM,aAAc,EAAA,CAAA;AACpB,EAAA,MAAM,SAAS,MAAM,CAAA,CAAA;AACrB,EAAA,MAAM,cAAe,EAAA,CAAA;AACrB,EAAA,MAAM,eAAe,MAAM,CAAA,CAAA;AAC3B,EAAA,MAAM,YAAY,MAAM,CAAA,CAAA;AACxB,EAAA,MAAM,YAAY,MAAM,CAAA,CAAA;AACxB,EAAA,MAAM,YAAY,MAAM,CAAA,CAAA;AACxB,EAAA,MAAM,qBAAqB,MAAM,CAAA,CAAA;AACjC,EAAA,MAAM,iBAAiB,MAAM,CAAA,CAAA;AAC7B,EAAA,MAAM,WAAW,MAAM,CAAA,CAAA;AAEvB,EAAM,KAAA,EAAA,CAAA;AACR,CAAA,CAAA;AAEA,MAAM,gBAAA,GAAmB,OAAO,MAAuB,KAAA;AACrD,EAAM,MAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,GAAI,CAAA;AAAA,IAC9B,uBAAA,CAAwB,UAAU,cAAc,CAAA;AAAA,IAChD,uBAAA,CAAwB,cAAc,cAAc,CAAA;AAAA,IACpD,uBAAA,CAAwB,OAAO,cAAc,CAAA;AAAA,IAC7C,uBAAA,CAAwB,MAAM,cAAc,CAAA;AAAA,IAC5C,MAAO,CAAA,cAAA,IACL,uBAAwB,CAAA,0BAAA,EAA4B,cAAc,CAAA;AAAA,IACpE,uBAAA,CAAwB,WAAW,iBAAiB,CAAA;AAAA,IACpD,MAAO,CAAA,cAAA,IACL,uBAAwB,CAAA,yBAAA,EAA2B,iBAAiB,CAAA;AAAA,IACtE,uBAAA,CAAwB,aAAa,iBAAiB,CAAA;AAAA,IACtD,uBAAA,CAAwB,eAAe,iBAAiB,CAAA;AAAA,IACxD,uBAAA,CAAwB,WAAW,iBAAiB,CAAA;AAAA,IACpD,uBAAA,CAAwB,cAAc,iBAAiB,CAAA;AAAA,GACxD,CAAA,CAAA;AAED,EAAA,MAAM,OAA+B,EAAC,CAAA;AACtC,EAAA,MAAM,UAAkC,EAAC,CAAA;AACzC,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,IAAA,IAAI,CAAC,IAAA;AAAM,MAAA,SAAA;AACX,IAAA,MAAM,CAAC,GAAK,EAAA,EAAE,OAAS,EAAA,IAAA,EAAM,CAAI,GAAA,IAAA,CAAA;AACjC,IAAA,CAAC,IAAS,KAAA,cAAA,GAAiB,IAAO,GAAA,OAAA,EAAS,GAAO,CAAA,GAAA,OAAA,CAAA;AAAA,GACpD;AAEA,EAAA,MAAM,kBAAkBF,wBAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,IAAO,cAAc,CAAA,CAAA;AAClE,EAAM,MAAA,OAAA,GAAU,MAAM,YAAA,CAAa,eAAe,CAAA,CAAA;AAClD,EAAA,MAAM,OAAO,OAAU,GAAA,IAAA,CAAK,KAAM,CAAA,OAAO,IAAI,EAAC,CAAA;AAE9C,EAAA,IAAI,CAAC,IAAK,CAAA,OAAA;AAAS,IAAA,IAAA,CAAK,UAAU,EAAC,CAAA;AACnC,EAAA,IAAA,CAAK,QAAQ,EAAK,GAAA,6BAAA,CAAA;AAElB,EAAA,IAAI,CAAC,IAAK,CAAA,YAAA;AAAc,IAAA,IAAA,CAAK,eAAe,EAAC,CAAA;AAE7C,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAK,IAAA,CAAA,YAAA,CAAa,OAAO,IAAK,CAAA,GAAA,CAAA,CAAA;AAAA,GAChC;AAEA,EAAA,IAAI,CAAC,IAAK,CAAA,eAAA;AAAiB,IAAA,IAAA,CAAK,kBAAkB,EAAC,CAAA;AACnD,EAAA,KAAA,MAAW,OAAO,OAAS,EAAA;AACzB,IAAK,IAAA,CAAA,eAAA,CAAgB,OAAO,OAAQ,CAAA,GAAA,CAAA,CAAA;AAAA,GACtC;AAEA,EAAM,MAAAE,sBAAA,CAAG,UAAU,eAAiB,EAAA,IAAA,CAAK,UAAU,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA,GAAI,IAAI,CAAA,CAAA;AAC7E,CAAA,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAC9B,IAAA,EACA,IACiE,KAAA;AACjE,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAAC,yBAAA,CACG,GAAI,CAAA,CAAA,2BAAA,EAA8B,IAAe,CAAA,OAAA,CAAA,EAAA,CAAC,GAAQ,KAAA;AACzD,MAAA,IAAI,IAAO,GAAA,EAAA,CAAA;AACX,MAAA,GAAA,CAAI,EAAG,CAAA,MAAA,EAAQ,CAAC,KAAA,KAAW,QAAQ,KAAM,CAAA,CAAA;AACzC,MAAI,GAAA,CAAA,EAAA;AAAA,QAAG,KAAA;AAAA,QAAO,MACZ,OAAA,CAAQ,CAAC,IAAA,EAAM,EAAE,OAAS,EAAA,CAAA,CAAA,EAAI,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAE,OAAW,CAAA,CAAA,EAAA,IAAA,EAAM,CAAC,CAAA;AAAA,OACnE,CAAA;AAAA,KACD,CAAA,CACA,EAAG,CAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,GACtB,CAAA,CAAA;AACH,CAAA,CAAA;AAEA,MAAM,YAAA,GAAe,OAAOH,KAAiB,KAAA;AAC3C,EAAI,IAAA;AACF,IAAA,OAAO,MAAME,sBAAA,CAAG,QAASF,CAAAA,KAAAA,EAAM,OAAO,CAAA,CAAA;AAAA,WAC/B,GAAP,EAAA;AACA,IAAK,IAAA,GAAA,CAAoC,SAAS,QAAU,EAAA;AAC1D,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAM,MAAA,GAAA,CAAA;AAAA,GACR;AACF,CAAA,CAAA;AAEA,MAAM,gBAAgB,YAAY;AA1JlC,EAAA,IAAA,EAAA,CAAA;AA2JE,EAAA,MAAM,eAAeA,wBAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,IAAO,eAAe,CAAA,CAAA;AAChE,EAAM,MAAA,OAAA,GAAU,MAAM,YAAA,CAAa,YAAY,CAAA,CAAA;AAC/C,EAAA,MAAM,OAAO,OAAU,GAAA,IAAA,CAAK,KAAM,CAAA,OAAO,IAAI,EAAC,CAAA;AAC9C,EAAI,IAAA,CAAC,KAAK,SAAY,CAAA,EAAA;AACpB,IAAA,IAAA,CAAK,aAAa,EAAC,CAAA;AAAA,GACrB;AACA,EAAI,IAAA,CAAC,IAAK,CAAA,SAAA,CAAA,CAAW,GAAK,EAAA;AACxB,IAAA,IAAA,CAAK,WAAW,GAAM,GAAA,IAAA,CAAA;AAAA,GACxB;AACA,EAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAA,CAAK,eAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAsB,MAAQ,CAAA,EAAA;AACjC,IAAA,IAAI,CAAC,IAAK,CAAA,eAAA;AAAiB,MAAA,IAAA,CAAK,kBAAkB,EAAC,CAAA;AACnD,IAAA,IAAA,CAAK,gBAAgB,MAAS,GAAA,IAAA,CAAA;AAC9B,IAAM,MAAAE,sBAAA,CAAG,UAAU,YAAc,EAAA,CAAA,EAAG,KAAK,SAAU,CAAA,IAAA,EAAM,MAAM,IAAI,CAAA,CAAA;AAAA,CAAK,CAAA,CAAA;AAAA,GAC1E;AACF,CAAA,CAAA;AAEA,MAAM,QAAA,GAAW,OAAO,MAAuB,KAAA;AAC7C,EAAA,MAAM,UAAUF,wBAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,IAAO,MAAM,CAAA,CAAA;AAClD,EAAA,IAAI,WAAY,MAAM,YAAA,CAAa,OAAO,CAAA,IAAM,IAAI,IAAK,EAAA,CAAA;AACzD,EAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AAEd,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,iBAAiB,CAAG,EAAA;AACrC,IAAW,OAAA,IAAA,CAAA;AAAA,qEAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAO,YAAgB,IAAA,CAAC,OAAQ,CAAA,KAAA,CAAM,sBAAsB,CAAG,EAAA;AACjE,IAAW,OAAA,IAAA,CAAA;AAAA,+EAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,MAAME,sBAAG,CAAA,SAAA,CAAU,OAAS,EAAA,CAAA,EAAG,QAAQ,IAAK,EAAA,CAAA;AAAA,CAAK,CAAA,CAAA;AAAA,GACnD;AACF,CAAA,CAAA;AAEA,MAAM,iBAAiB,YAAY;AACjC,EAAA,MAAM,gBAAgBF,wBAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,IAAO,YAAY,CAAA,CAAA;AAC9D,EAAA,IAAI,WAAY,MAAM,YAAA,CAAa,aAAa,CAAA,IAAM,IAAI,IAAK,EAAA,CAAA;AAC/D,EAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AAEd,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,kBAAkB,CAAG,EAAA;AACtC,IAAW,OAAA,IAAA,CAAA;AAAA,YAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAM,CAAA,UAAU,CAAG,EAAA;AAC9B,IAAW,OAAA,IAAA,CAAA;AAAA,IAAA,CAAA,CAAA;AACX,IAAU,OAAA,GAAA,IAAA,CAAA;AAAA,GACZ;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,MAAME,sBAAG,CAAA,SAAA,CAAU,aAAe,EAAA,CAAA,EAAG,QAAQ,IAAK,EAAA,CAAA;AAAA,CAAK,CAAA,CAAA;AAAA,GACzD;AACF,CAAA,CAAA;AAEA,MAAM,cAAA,GAAiB,OAAO,MAAuB,KAAA;AACnD,EAAA,MAAM,QAAW,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,cAAc,CAAA,CAAA;AAElD,EAAA,IAAI,OAAU,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAAA,CAAA,CAAA;AAOd,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAA,IAAI,SAAW,EAAA;AACb,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA,gCAGP,EAAA,SAAA,KAAc,SAAS,QAAW,GAAA,UAAA,CAAA,GAAA,CAAA,CAAA;AAAA,GAExC;AAEA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKX,EAAM,MAAAE,sBAAA,CAAG,SAAU,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AACtC,CAAA,CAAA;AAEA,MAAM,WAAA,GAAc,OAAO,MAAuB,KAAA;AAChD,EAAA,IAAI,CAAC,MAAO,CAAA,UAAA;AAAY,IAAA,OAAA;AAExB,EAAA,MAAM,SAAY,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,QAAQ,CAAA,CAAA;AAC7C,EAAA,MAAME,uBAAG,KAAM,CAAA,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AAE7C,EAAA,MAAMA,sBAAG,CAAA,SAAA;AAAA,IACPF,wBAAA,CAAK,IAAK,CAAA,SAAA,EAAW,eAAe,CAAA;AAAA,IACpC,CAAA;AAAA;AAAA,EAGF,OAAO,cACH,GAAA,CAAA;AAAA,CACA,GAAA,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBJ,OAAO,cACH,GAAA,CAAA;AAAA;AAAA,CACA,GAAA,EAAA,CAAA,CAAA;AAAA,GAEJ,CAAA;AAEA,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACPF,wBAAA,CAAK,IAAK,CAAA,SAAA,EAAW,kBAAkB,CAAA;AAAA,IACvC,CAAA;AAAA;AAAA,EAGF,OAAO,cACH,GAAA,CAAA;AAAA,CACA,GAAA,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBJ,OAAO,cACH,GAAA,CAAA;AAAA;AAAA,CACA,GAAA,EAAA,CAAA,CAAA;AAAA,GAEJ,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,WAAA,GAAc,OAAO,MAAuB,KAAA;AAChD,EAAA,MAAM,UAAa,GAAAA,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,WAAW,CAAA,CAAA;AAEjD,EAAA,IAAI,OAAU,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8EAAA,CAAA,CAAA;AAOd,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA,CAAA;AAAA,GAWb;AAEA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA,uBAAA,CAAA,CAAA;AAIX,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA,eAAA,CAAA,CAAA;AAAA,GAEb;AAEA,EAAA,IAAI,OAAO,YAAc,EAAA;AACvB,IAAW,OAAA,IAAA,CAAA;AAAA,sEAAA,CAAA,CAAA;AAAA,GAEN,MAAA;AACL,IAAW,OAAA,IAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,GAEb;AACA,EAAW,OAAA,IAAA,CAAA;AAAA;AAAA,CAAA,CAAA;AAIX,EAAM,MAAAE,sBAAA,CAAG,SAAU,CAAA,UAAA,EAAY,OAAO,CAAA,CAAA;AACxC,CAAA,CAAA;AAEA,MAAM,WAAA,GAAc,OAAO,MAAuB,KAAA;AAChD,EAAA,IAAI,OAAU,GAAA,EAAA,CAAA;AACd,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAA,IAAI,OAAO,UAAY,EAAA;AACrB,IAAW,OAAA,IAAA,CAAA;AAAA;AAAA,sDAAA,CAAA,CAAA;AAGX,IAAU,MAAA,IAAA,CAAA;AAAA;AAAA,wBAAA,CAAA,CAAA;AAAA,GAGZ;AAEA,EAAA,MAAM,MAAS,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,OAAO,CAAA,CAAA;AACzC,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACP,MAAA;AAAA,IACA,CAAA;AAAA,kCACgC,EAAA,OAAA,CAAA;AAAA;AAAA,8CAEY,EAAA,MAAA,CAAA;AAAA;AAAA,CAAA;AAAA,GAG9C,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,oBAAA,GAAuB,OAAO,MAAuB,KAAA;AACzD,EAAA,MAAM,QAAW,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,cAAc,CAAA,CAAA;AAClD,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA,OAIK,EAAA,MAAA,CAAO,eAAe,qBAAwB,GAAA,iBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAiBrD,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,gBAAA,GAAmB,OAAO,MAAuB,KAAA;AACrD,EAAA,MAAM,cAAiB,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,YAAY,CAAA,CAAA;AACtD,EAAM,MAAAE,sBAAA,CAAG,MAAM,cAAc,CAAA,CAAA;AAE7B,EAAA,IAAI,CAAC,MAAO,CAAA,UAAA;AAAY,IAAA,OAAA;AAExB,EAAM,MAAA,GAAA,GAAM,IAAI,IAAK,EAAA,CAAA;AAErB,EAAA,MAAM,WAAWF,wBAAK,CAAA,IAAA;AAAA,IACpB,cAAA;AAAA,IACA,CAAA,EAAG,kBAAkB,GAAG,CAAA,CAAA,cAAA,CAAA;AAAA,GAC1B,CAAA;AACA,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAWF,CAAA;AAEA,EAAA,GAAA,CAAI,OAAQ,CAAA,GAAA,CAAI,OAAQ,EAAA,GAAI,GAAI,CAAA,CAAA;AAEhC,EAAA,MAAM,cAAcF,wBAAK,CAAA,IAAA;AAAA,IACvB,cAAA;AAAA,IACA,CAAA,EAAG,kBAAkB,GAAG,CAAA,CAAA,iBAAA,CAAA;AAAA,GAC1B,CAAA;AACA,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACP,WAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAWF,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,GAAc,KAAA;AACvC,EAAO,OAAA;AAAA,IACL,IAAI,cAAe,EAAA;AAAA,IACnB,GAAA,CAAI,aAAgB,GAAA,CAAA;AAAA,IACpB,IAAI,UAAW,EAAA;AAAA,IACf,IAAI,WAAY,EAAA;AAAA,IAChB,IAAI,aAAc,EAAA;AAAA,IAClB,IAAI,aAAc,EAAA;AAAA,GACpB,CACG,GAAI,CAAA,CAAC,KAAW,KAAA,KAAA,GAAQ,EAAK,GAAA,CAAA,CAAA,EAAI,KAAU,CAAA,CAAA,GAAA,KAAM,CACjD,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AACZ,CAAA,CAAA;AAEA,MAAM,UAAA,GAAa,OAAO,MAAuB,KAAA;AAC/C,EAAA,MAAM,QAAW,GAAAF,wBAAA,CAAK,IAAK,CAAA,OAAA,EAAS,SAAS,CAAA,CAAA;AAE7C,EAAI,IAAA,OAAA,CAAA;AACJ,EAAA,IAAI,OAAO,UAAY,EAAA;AACrB,IAAU,OAAA,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,CAAA,CAAA;AAAA,GAcL,MAAA;AACL,IAAU,OAAA,GAAA,CAAA,sBAAA,CAAA,CAAA;AAAA,GACZ;AAEA,EAAA,MAAME,sBAAG,CAAA,SAAA;AAAA,IACP,QAAA;AAAA,IACA,CAAA;AAAA;AAAA;AAAA,EAGA,EAAA,OAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAAA,GAKF,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,QAAQ,MAAM;AAClB,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAeb,CAAA,CAAA;AACD,CAAA;;AC9gBA,kBAAmB,EAAA,CAAE,KAAK,aAAa,CAAA;;"}
package/dist/index.d.ts CHANGED
@@ -67,9 +67,9 @@ declare type OrchidORM<T extends TableClasses> = {
67
67
  $queryBuilder: Db;
68
68
  $close(): Promise<void>;
69
69
  };
70
- declare const orchidORM: <T extends TableClasses>({ log, logger, autoPreparedStatements, noPrimaryKey, ...options }: ({
70
+ declare const orchidORM: <T extends TableClasses>({ log, logger, autoPreparedStatements, noPrimaryKey, ...options }: (Omit<AdapterOptions, "log"> | {
71
71
  adapter: Adapter;
72
- } | Omit<AdapterOptions, "log">) & QueryLogOptions & {
72
+ }) & QueryLogOptions & {
73
73
  autoPreparedStatements?: boolean | undefined;
74
74
  noPrimaryKey?: NoPrimaryKeyOption | undefined;
75
75
  }, tables: T) => OrchidORM<T>;
@@ -192,8 +192,8 @@ declare const createBaseTable: <CT extends ColumnTypesBase>(options?: {
192
192
  xml: () => pqb.XMLColumn;
193
193
  json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
194
194
  set: <Value extends pqb.JSONTypeAny>(valueType: Value) => pqb.JSONSet<Value>;
195
- tuple: <T_1 extends [] | pqb.JSONTupleItems, Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest | undefined) => pqb.JSONTuple<T_1, Rest>;
196
- union: <T_1 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_1) => pqb.JSONUnion<T_1>;
195
+ tuple: <T_1 extends pqb.JSONTupleItems | [], Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest) => pqb.JSONTuple<T_1, Rest>;
196
+ union: <T_2 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_2) => pqb.JSONUnion<T_2>;
197
197
  any: () => pqb.JSONAny;
198
198
  bigint: () => pqb.JSONBigInt;
199
199
  boolean: () => pqb.JSONBoolean;
@@ -208,47 +208,47 @@ declare const createBaseTable: <CT extends ColumnTypesBase>(options?: {
208
208
  void: () => pqb.JSONVoid;
209
209
  array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
210
210
  discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends pqb.Primitive, Types extends [pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => pqb.JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types[number]>;
211
- enum: <U_1 extends string, T_2 extends [U_1, ...U_1[]]>(options: T_2) => pqb.JSONEnum<U_1, T_2>;
212
- instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => pqb.JSONInstanceOf<T_3>;
211
+ enum: <U_1 extends string, T_3 extends [U_1, ...U_1[]]>(options: T_3) => pqb.JSONEnum<U_1, T_3>;
212
+ instanceOf: <T_4 extends new (...args: any[]) => any>(cls: T_4) => pqb.JSONInstanceOf<T_4>;
213
213
  intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
214
- lazy: <T_4 extends pqb.JSONTypeAny>(fn: () => T_4) => pqb.JSONLazy<T_4>;
215
- literal: <T_5 extends pqb.Primitive>(value: T_5) => pqb.JSONLiteral<T_5>;
214
+ lazy: <T_5 extends pqb.JSONTypeAny>(fn: () => T_5) => pqb.JSONLazy<T_5>;
215
+ literal: <T_6 extends pqb.Primitive>(value: T_6) => pqb.JSONLiteral<T_6>;
216
216
  map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
217
- nativeEnum: <T_6 extends pqb.EnumLike>(givenEnum: T_6) => pqb.JSONNativeEnum<T_6>;
218
- nullable: <T_7 extends pqb.JSONTypeAny>(type: T_7) => pqb.JSONNullable<T_7>;
219
- nullish: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullish<T_8>;
220
- object: <T_9 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_9) => pqb.JSONObject<T_9, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 extends object ? { [k in keyof T_10]: pqb.addQuestionMarks<{ [k_1_1 in keyof T_9]: T_9[k_1_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1_2 in keyof T_9]: T_9[k_1_2]["type"]; }> extends infer T_10_1 extends object ? { [k_2 in keyof T_10_1]: pqb.addQuestionMarks<{ [k_1_3 in keyof T_9]: T_9[k_1_3]["type"]; }>[k_2]; } : never) & {
217
+ nativeEnum: <T_7 extends pqb.EnumLike>(givenEnum: T_7) => pqb.JSONNativeEnum<T_7>;
218
+ nullable: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullable<T_8>;
219
+ nullish: <T_9 extends pqb.JSONTypeAny>(type: T_9) => pqb.JSONNullish<T_9>;
220
+ object: <T_10 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_10) => pqb.JSONObject<T_10, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
221
221
  [k: string]: Catchall["type"];
222
- } extends infer T_11 extends object ? { [k_2 in keyof T_11]: ((pqb.addQuestionMarks<{ [k_1_4 in keyof T_9]: T_9[k_1_4]["type"]; }> extends infer T_10_2 extends object ? { [k_3 in keyof T_10_2]: pqb.addQuestionMarks<{ [k_1_5 in keyof T_9]: T_9[k_1_5]["type"]; }>[k_3]; } : never) & {
222
+ } extends infer T_12 extends object ? { [k_2 in keyof T_12]: ((pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
223
223
  [k: string]: Catchall["type"];
224
224
  })[k_2]; } : never>;
225
- optional: <T_12 extends pqb.JSONTypeAny>(type: T_12) => pqb.JSONOptional<T_12>;
225
+ optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
226
226
  record: typeof pqb.record;
227
227
  }) => Type)) => pqb.JSONColumn<Type>;
228
228
  jsonText: () => pqb.JSONTextColumn;
229
229
  array: <Item extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
230
- timestamps: <T_13 extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(this: {
231
- timestamp(): T_13;
230
+ timestamps: <T_14 extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(this: {
231
+ timestamp(): T_14;
232
232
  }) => {
233
- createdAt: T_13 & {
233
+ createdAt: T_14 & {
234
234
  hasDefault: true;
235
235
  };
236
- updatedAt: T_13 & {
236
+ updatedAt: T_14 & {
237
237
  hasDefault: true;
238
238
  };
239
239
  };
240
240
  primaryKey(columns: string[], options?: {
241
241
  name?: string | undefined;
242
242
  } | undefined): {};
243
- index(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
244
- unique(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
243
+ index(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
244
+ unique(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
245
245
  foreignKey: {
246
246
  <Table_1 extends pqb.ForeignKeyTableWithColumns, Columns extends [Exclude<keyof InstanceType<Table_1>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<Table_1>["columns"]["shape"], number | symbol>[]]>(columns: string[], fn: () => Table_1, foreignColumns: Columns, options?: pqb.ForeignKeyOptions | undefined): {};
247
247
  <Table_2 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_2, foreignColumns: Columns_1, options?: pqb.ForeignKeyOptions | undefined): {};
248
248
  };
249
249
  } : CT;
250
250
  noPrimaryKey?: boolean | undefined;
251
- setColumns: <T_14 extends ColumnsShape>(fn: (t: ColumnTypesBase extends CT ? {
251
+ setColumns: <T_15 extends ColumnsShape>(fn: (t: ColumnTypesBase extends CT ? {
252
252
  smallint: () => pqb.SmallIntColumn;
253
253
  integer: () => pqb.IntegerColumn;
254
254
  bigint: () => pqb.BigIntColumn;
@@ -292,8 +292,8 @@ declare const createBaseTable: <CT extends ColumnTypesBase>(options?: {
292
292
  xml: () => pqb.XMLColumn;
293
293
  json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
294
294
  set: <Value extends pqb.JSONTypeAny>(valueType: Value) => pqb.JSONSet<Value>;
295
- tuple: <T_1 extends [] | pqb.JSONTupleItems, Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest | undefined) => pqb.JSONTuple<T_1, Rest>;
296
- union: <T_1 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_1) => pqb.JSONUnion<T_1>;
295
+ tuple: <T_1 extends pqb.JSONTupleItems | [], Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest) => pqb.JSONTuple<T_1, Rest>;
296
+ union: <T_2 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_2) => pqb.JSONUnion<T_2>;
297
297
  any: () => pqb.JSONAny;
298
298
  bigint: () => pqb.JSONBigInt;
299
299
  boolean: () => pqb.JSONBoolean;
@@ -308,47 +308,47 @@ declare const createBaseTable: <CT extends ColumnTypesBase>(options?: {
308
308
  void: () => pqb.JSONVoid;
309
309
  array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
310
310
  discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends pqb.Primitive, Types extends [pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => pqb.JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types[number]>;
311
- enum: <U_1 extends string, T_2 extends [U_1, ...U_1[]]>(options: T_2) => pqb.JSONEnum<U_1, T_2>;
312
- instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => pqb.JSONInstanceOf<T_3>;
311
+ enum: <U_1 extends string, T_3 extends [U_1, ...U_1[]]>(options: T_3) => pqb.JSONEnum<U_1, T_3>;
312
+ instanceOf: <T_4 extends new (...args: any[]) => any>(cls: T_4) => pqb.JSONInstanceOf<T_4>;
313
313
  intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
314
- lazy: <T_4 extends pqb.JSONTypeAny>(fn: () => T_4) => pqb.JSONLazy<T_4>;
315
- literal: <T_5 extends pqb.Primitive>(value: T_5) => pqb.JSONLiteral<T_5>;
314
+ lazy: <T_5 extends pqb.JSONTypeAny>(fn: () => T_5) => pqb.JSONLazy<T_5>;
315
+ literal: <T_6 extends pqb.Primitive>(value: T_6) => pqb.JSONLiteral<T_6>;
316
316
  map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
317
- nativeEnum: <T_6 extends pqb.EnumLike>(givenEnum: T_6) => pqb.JSONNativeEnum<T_6>;
318
- nullable: <T_7 extends pqb.JSONTypeAny>(type: T_7) => pqb.JSONNullable<T_7>;
319
- nullish: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullish<T_8>;
320
- object: <T_9 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_9) => pqb.JSONObject<T_9, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 extends object ? { [k in keyof T_10]: pqb.addQuestionMarks<{ [k_1_1 in keyof T_9]: T_9[k_1_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1_2 in keyof T_9]: T_9[k_1_2]["type"]; }> extends infer T_10_1 extends object ? { [k_2 in keyof T_10_1]: pqb.addQuestionMarks<{ [k_1_3 in keyof T_9]: T_9[k_1_3]["type"]; }>[k_2]; } : never) & {
317
+ nativeEnum: <T_7 extends pqb.EnumLike>(givenEnum: T_7) => pqb.JSONNativeEnum<T_7>;
318
+ nullable: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullable<T_8>;
319
+ nullish: <T_9 extends pqb.JSONTypeAny>(type: T_9) => pqb.JSONNullish<T_9>;
320
+ object: <T_10 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_10) => pqb.JSONObject<T_10, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
321
321
  [k: string]: Catchall["type"];
322
- } extends infer T_11 extends object ? { [k_2 in keyof T_11]: ((pqb.addQuestionMarks<{ [k_1_4 in keyof T_9]: T_9[k_1_4]["type"]; }> extends infer T_10_2 extends object ? { [k_3 in keyof T_10_2]: pqb.addQuestionMarks<{ [k_1_5 in keyof T_9]: T_9[k_1_5]["type"]; }>[k_3]; } : never) & {
322
+ } extends infer T_12 extends object ? { [k_2 in keyof T_12]: ((pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
323
323
  [k: string]: Catchall["type"];
324
324
  })[k_2]; } : never>;
325
- optional: <T_12 extends pqb.JSONTypeAny>(type: T_12) => pqb.JSONOptional<T_12>;
325
+ optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
326
326
  record: typeof pqb.record;
327
327
  }) => Type)) => pqb.JSONColumn<Type>;
328
328
  jsonText: () => pqb.JSONTextColumn;
329
329
  array: <Item extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
330
- timestamps: <T_13 extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(this: {
331
- timestamp(): T_13;
330
+ timestamps: <T_14 extends pqb.ColumnType<unknown, pqb.Operators, unknown>>(this: {
331
+ timestamp(): T_14;
332
332
  }) => {
333
- createdAt: T_13 & {
333
+ createdAt: T_14 & {
334
334
  hasDefault: true;
335
335
  };
336
- updatedAt: T_13 & {
336
+ updatedAt: T_14 & {
337
337
  hasDefault: true;
338
338
  };
339
339
  };
340
340
  primaryKey(columns: string[], options?: {
341
341
  name?: string | undefined;
342
342
  } | undefined): {};
343
- index(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
344
- unique(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions | undefined): {};
343
+ index(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
344
+ unique(columns: pqb.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
345
345
  foreignKey: {
346
346
  <Table_1 extends pqb.ForeignKeyTableWithColumns, Columns extends [Exclude<keyof InstanceType<Table_1>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<Table_1>["columns"]["shape"], number | symbol>[]]>(columns: string[], fn: () => Table_1, foreignColumns: Columns, options?: pqb.ForeignKeyOptions | undefined): {};
347
347
  <Table_2 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_2, foreignColumns: Columns_1, options?: pqb.ForeignKeyOptions | undefined): {};
348
348
  };
349
- } : CT) => T_14) => {
350
- shape: T_14;
351
- type: ColumnShapeOutput<T_14>;
349
+ } : CT) => T_15) => {
350
+ shape: T_15;
351
+ type: ColumnShapeOutput<T_15>;
352
352
  };
353
353
  belongsTo<Self extends any, Related extends TableClass<Table>, Scope extends Query, Options extends {
354
354
  primaryKey: keyof InstanceType<Related>["columns"]["shape"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchid-orm",
3
- "version": "1.5.24",
3
+ "version": "1.5.25",
4
4
  "description": "Postgres ORM",
5
5
  "homepage": "https://orchid-orm.netlify.app/guide/orm-setup-and-overview.html",
6
6
  "repository": {
@@ -55,7 +55,7 @@
55
55
  "orchid-orm-schema-to-zod": "0.2.19",
56
56
  "pg": "^8.7.3",
57
57
  "pg-transactional-tests": "^1.0.7",
58
- "rake-db": "2.3.23",
58
+ "rake-db": "2.3.24",
59
59
  "rimraf": "^3.0.2",
60
60
  "rollup": "^2.79.0",
61
61
  "rollup-plugin-dts": "^4.2.2",
@@ -67,7 +67,8 @@
67
67
  "typescript": "*"
68
68
  },
69
69
  "scripts": {
70
- "test": "jest",
70
+ "test": "jest --watch --verbose false",
71
+ "check": "jest",
71
72
  "test:ci": "jest --coverage --coverageReporters json-summary",
72
73
  "build": "rimraf ./dist/ && rollup -c --rollup.config"
73
74
  }
@@ -665,12 +665,12 @@ import { config } from './config';
665
665
  import { appCodeUpdater } from 'orchid-orm';
666
666
 
667
667
  rakeDb(config.database, {
668
- migrationsPath: 'src/db/migrations',
668
+ migrationsPath: './migrations',
669
669
  appCodeUpdater: appCodeUpdater({
670
- tablePath: (tableName) => \`src/db/tables/\${tableName}.table.ts\`,
671
- baseTablePath: 'src/db/baseTable.ts',
670
+ tablePath: (tableName) => \`./tables/\${tableName}.table.ts\`,
671
+ baseTablePath: './baseTable.ts',
672
672
  baseTableName: 'BaseTable',
673
- mainFilePath: 'src/db/db.ts',
673
+ mainFilePath: './db.ts',
674
674
  }),
675
675
  useCodeUpdater: true, // set to false to disable code updater
676
676
  commands: {
@@ -696,12 +696,12 @@ import { config } from './config';
696
696
  import { appCodeUpdater } from 'orchid-orm';
697
697
 
698
698
  rakeDb(config.allDatabases, {
699
- migrationsPath: 'src/db/migrations',
699
+ migrationsPath: './migrations',
700
700
  appCodeUpdater: appCodeUpdater({
701
- tablePath: (tableName) => \`src/db/tables/\${tableName}.table.ts\`,
702
- baseTablePath: 'src/db/baseTable.ts',
701
+ tablePath: (tableName) => \`./tables/\${tableName}.table.ts\`,
702
+ baseTablePath: './baseTable.ts',
703
703
  baseTableName: 'BaseTable',
704
- mainFilePath: 'src/db/db.ts',
704
+ mainFilePath: './db.ts',
705
705
  }),
706
706
  useCodeUpdater: true, // set to false to disable code updater
707
707
  commands: {
package/src/bin/init.ts CHANGED
@@ -392,12 +392,12 @@ import { config } from './config';
392
392
  import { appCodeUpdater } from 'orchid-orm';
393
393
 
394
394
  rakeDb(${config.testDatabase ? 'config.allDatabases' : 'config.database'}, {
395
- migrationsPath: 'src/db/migrations',
395
+ migrationsPath: './migrations',
396
396
  appCodeUpdater: appCodeUpdater({
397
- tablePath: (tableName) => \`src/db/tables/\${tableName}.table.ts\`,
398
- baseTablePath: 'src/db/baseTable.ts',
397
+ tablePath: (tableName) => \`./tables/\${tableName}.table.ts\`,
398
+ baseTablePath: './baseTable.ts',
399
399
  baseTableName: 'BaseTable',
400
- mainFilePath: 'src/db/db.ts',
400
+ mainFilePath: './db.ts',
401
401
  }),
402
402
  useCodeUpdater: true, // set to false to disable code updater
403
403
  commands: {
package/tsconfig.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "noEmit": false,
7
7
  "baseUrl": ".",
8
8
  "paths": {
9
- "pqb": ["../pqb/src"],
9
+ "pqb": ["../qb/pqb/src"],
10
10
  "rake-db": ["../rake-db/src"],
11
11
  "orchid-orm-schema-to-zod": ["../schema-to-zod/src"]
12
12
  }