orchid-orm 1.9.38 → 1.9.40

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.
package/dist/bin.js CHANGED
@@ -249,11 +249,12 @@ const setupTables = async (config, dirPath) => {
249
249
  await fs.mkdir(tablesDir, { recursive: true });
250
250
  await fs.writeFile(
251
251
  path.join(tablesDir, "post.table.ts"),
252
- `import { BaseTable } from '../baseTable';
252
+ `import { TableType } from 'orchid-orm';
253
+ import { BaseTable } from '../baseTable';
253
254
  import { CommentTable } from './comment.table';
254
255
  ${config.addSchemaToZod ? `import { tableToZod } from 'orchid-orm-schema-to-zod';
255
256
  ` : ""}
256
- export type Post = PostTable['columns']['type'];
257
+ export type Post = TableType<PostTable>;
257
258
  export class PostTable extends BaseTable {
258
259
  readonly table = 'post';
259
260
  columns = this.setColumns((t) => ({
@@ -276,11 +277,12 @@ export const postSchema = tableToZod(PostTable);
276
277
  );
277
278
  await fs.writeFile(
278
279
  path.join(tablesDir, "comment.table.ts"),
279
- `import { BaseTable } from '../baseTable';
280
+ `import { TableType } from 'orchid-orm';
281
+ import { BaseTable } from '../baseTable';
280
282
  import { PostTable } from './post.table';
281
283
  ${config.addSchemaToZod ? `import { tableToZod } from 'orchid-orm-schema-to-zod';
282
284
  ` : ""}
283
- export type Comment = CommentTable['columns']['type'];
285
+ export type Comment = TableType<CommentTable>;
284
286
  export class CommentTable extends BaseTable {
285
287
  readonly table = 'comment';
286
288
  columns = this.setColumns((t) => ({
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 { resolve, join, relative } from 'path';\nimport https from 'https';\nimport prompts from 'prompts';\n\nexport type InitConfig = {\n path: string;\n hasTsConfig: boolean;\n testDatabase?: boolean;\n addSchemaToZod?: boolean;\n addTestFactory?: boolean;\n demoTables?: boolean;\n timestamp?: 'date' | 'number';\n swc?: boolean;\n};\n\ntype DependencyKind = 'dependencies' | 'devDependencies';\n\nexport const askOrchidORMConfig = async () => {\n let cancelled = false;\n\n const response = await prompts(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where would you like to install Orchid ORM?',\n initial: process.cwd(),\n },\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 onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (cancelled) return;\n\n const tsConfigPath = join(response.path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n (response as InitConfig).hasTsConfig = !!hasTsConfig;\n\n if (!hasTsConfig) {\n const res = await prompts(\n [\n {\n type: 'confirm',\n name: 'swc',\n initial: true,\n message: `Let's add fast TS compiler swc?`,\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (cancelled) return;\n\n (response as InitConfig).swc = res.swc;\n }\n\n return response as InitConfig;\n};\n\nexport const initOrchidORM = async (config: InitConfig) => {\n config.path = resolve(config.path);\n const dirPath = join(config.path, 'src', 'db');\n\n await fs.mkdir(dirPath, { recursive: true });\n\n await setupPackageJson(config);\n await setupTSConfig(config);\n await setupEnv(config);\n await setupGitIgnore(config);\n await setupBaseTable(config, dirPath);\n await setupTables(config, dirPath);\n await setupConfig(config, dirPath);\n await setupMainDb(config, dirPath);\n await setupMigrationScript(config, dirPath);\n await createMigrations(config, dirPath);\n await createSeed(config, dirPath);\n\n greet(config);\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 config.swc && 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 = join(config.path, '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/dbScript.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 (config: InitConfig) => {\n if (config.hasTsConfig) return;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{${\n config.swc\n ? `\n \"ts-node\": {\n \"swc\": true\n },`\n : ''\n }\n \"compilerOptions\": {\n \"strict\": true\n }\n}\n`,\n );\n};\n\nconst setupEnv = async (config: InitConfig) => {\n const envPath = join(config.path, '.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 (config: InitConfig) => {\n const gitignorePath = join(config.path, '.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, dirPath: string) => {\n const filePath = 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, dirPath: string) => {\n if (!config.demoTables) return;\n\n const tablesDir = join(dirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n 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 readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().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 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 readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().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, dirPath: string) => {\n const configPath = 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, dirPath: string) => {\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 = 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, dirPath: string) => {\n const filePath = join(dirPath, 'dbScript.ts');\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'rake-db';\nimport { appCodeUpdater } from 'orchid-orm/codegen';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n migrationsPath: './migrations',\n appCodeUpdater: appCodeUpdater({\n tablePath: (tableName) => \\`./tables/\\${tableName}.table.ts\\`,\n ormPath: './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, dirPath: string) => {\n const migrationsPath = join(dirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createPost.ts`,\n );\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().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 = join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createComment.ts`,\n );\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().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, dirPath: string) => {\n const filePath = 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 = (config: InitConfig) => {\n const relativePath = relative(process.cwd(), config.path);\n\n console.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\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((config) => {\n if (config) initOrchidORM(config);\n});\n"],"names":["join","resolve","relative"],"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 { resolve, join, relative } from 'path';\nimport https from 'https';\nimport prompts from 'prompts';\n\nexport type InitConfig = {\n path: string;\n hasTsConfig: boolean;\n testDatabase?: boolean;\n addSchemaToZod?: boolean;\n addTestFactory?: boolean;\n demoTables?: boolean;\n timestamp?: 'date' | 'number';\n swc?: boolean;\n};\n\ntype DependencyKind = 'dependencies' | 'devDependencies';\n\nexport const askOrchidORMConfig = async () => {\n let cancelled = false;\n\n const response = await prompts(\n [\n {\n type: 'text',\n name: 'path',\n message: 'Where would you like to install Orchid ORM?',\n initial: process.cwd(),\n },\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 onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (cancelled) return;\n\n const tsConfigPath = join(response.path, 'tsconfig.json');\n const hasTsConfig = await readFileSafe(tsConfigPath);\n (response as InitConfig).hasTsConfig = !!hasTsConfig;\n\n if (!hasTsConfig) {\n const res = await prompts(\n [\n {\n type: 'confirm',\n name: 'swc',\n initial: true,\n message: `Let's add fast TS compiler swc?`,\n },\n ],\n {\n onCancel() {\n cancelled = true;\n },\n },\n );\n\n if (cancelled) return;\n\n (response as InitConfig).swc = res.swc;\n }\n\n return response as InitConfig;\n};\n\nexport const initOrchidORM = async (config: InitConfig) => {\n config.path = resolve(config.path);\n const dirPath = join(config.path, 'src', 'db');\n\n await fs.mkdir(dirPath, { recursive: true });\n\n await setupPackageJson(config);\n await setupTSConfig(config);\n await setupEnv(config);\n await setupGitIgnore(config);\n await setupBaseTable(config, dirPath);\n await setupTables(config, dirPath);\n await setupConfig(config, dirPath);\n await setupMainDb(config, dirPath);\n await setupMigrationScript(config, dirPath);\n await createMigrations(config, dirPath);\n await createSeed(config, dirPath);\n\n greet(config);\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 config.swc && 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 = join(config.path, '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/dbScript.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 (config: InitConfig) => {\n if (config.hasTsConfig) return;\n\n const tsConfigPath = join(config.path, 'tsconfig.json');\n await fs.writeFile(\n tsConfigPath,\n `{${\n config.swc\n ? `\n \"ts-node\": {\n \"swc\": true\n },`\n : ''\n }\n \"compilerOptions\": {\n \"strict\": true\n }\n}\n`,\n );\n};\n\nconst setupEnv = async (config: InitConfig) => {\n const envPath = join(config.path, '.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 (config: InitConfig) => {\n const gitignorePath = join(config.path, '.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, dirPath: string) => {\n const filePath = 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, dirPath: string) => {\n if (!config.demoTables) return;\n\n const tablesDir = join(dirPath, 'tables');\n await fs.mkdir(tablesDir, { recursive: true });\n\n await fs.writeFile(\n join(tablesDir, 'post.table.ts'),\n `import { TableType } from 'orchid-orm';\nimport { 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 = TableType<PostTable>;\nexport class PostTable extends BaseTable {\n readonly table = 'post';\n columns = this.setColumns((t) => ({\n id: t.identity().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 join(tablesDir, 'comment.table.ts'),\n `import { TableType } from 'orchid-orm';\nimport { 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 = TableType<CommentTable>;\nexport class CommentTable extends BaseTable {\n readonly table = 'comment';\n columns = this.setColumns((t) => ({\n id: t.identity().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, dirPath: string) => {\n const configPath = 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, dirPath: string) => {\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 = 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, dirPath: string) => {\n const filePath = join(dirPath, 'dbScript.ts');\n await fs.writeFile(\n filePath,\n `import { rakeDb } from 'rake-db';\nimport { appCodeUpdater } from 'orchid-orm/codegen';\nimport { config } from './config';\nimport { BaseTable } from './baseTable';\n\nexport const change = rakeDb(${\n config.testDatabase ? 'config.allDatabases' : 'config.database'\n }, {\n baseTable: BaseTable,\n migrationsPath: './migrations',\n appCodeUpdater: appCodeUpdater({\n tablePath: (tableName) => \\`./tables/\\${tableName}.table.ts\\`,\n ormPath: './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, dirPath: string) => {\n const migrationsPath = join(dirPath, 'migrations');\n await fs.mkdir(migrationsPath, { recursive: true });\n\n if (!config.demoTables) return;\n\n const now = new Date();\n\n const postPath = join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createPost.ts`,\n );\n await fs.writeFile(\n postPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('post', (t) => ({\n id: t.identity().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 = join(\n migrationsPath,\n `${makeFileTimeStamp(now)}_createComment.ts`,\n );\n await fs.writeFile(\n commentPath,\n `import { change } from '../dbScript';\n\nchange(async (db) => {\n await db.createTable('comment', (t) => ({\n id: t.identity().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, dirPath: string) => {\n const filePath = 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 = (config: InitConfig) => {\n const relativePath = relative(process.cwd(), config.path);\n\n console.log(`\nThank you for trying Orchid ORM!\n \nTo finish setup,${\n relativePath ? ` cd to the project and` : ''\n } install dependencies:\n${\n relativePath\n ? `\n> cd ${relativePath}`\n : ''\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((config) => {\n if (config) initOrchidORM(config);\n});\n"],"names":["join","resolve","relative"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -154,6 +154,7 @@ type Table = {
154
154
  noPrimaryKey?: boolean;
155
155
  filePath: string;
156
156
  };
157
+ type TableType<T extends Pick<Table, 'columns'>> = T['columns']['type'];
157
158
  type TableHooks = {
158
159
  [K in BeforeHookKey]?: BeforeHook;
159
160
  } & {
@@ -555,4 +556,4 @@ type Repo<T extends Query, Methods extends MethodsBase<T>, Mapped = MapMethods<T
555
556
  }>(q: Q) => Q & Mapped) & T & Mapped;
556
557
  declare const createRepo: <T extends Query, Methods extends MethodsBase<T>>(table: T, methods: Methods) => Repo<T, Methods, MapMethods<T, Methods>>;
557
558
 
558
- export { DbTable, MapMethods, MapQueryMethods, MethodsBase, OrchidORM, QueryMethods, Repo, Table, TableClass, TableClasses, TableHooks, TableToDb, addTableHooks, createBaseTable, createRepo, orchidORM };
559
+ export { DbTable, MapMethods, MapQueryMethods, MethodsBase, OrchidORM, QueryMethods, Repo, Table, TableClass, TableClasses, TableHooks, TableToDb, TableType, addTableHooks, createBaseTable, createRepo, orchidORM };