drizzle-orm 1.0.0-beta.3-702eadc → 1.0.0-beta.4-03f09f7
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/migrator.cjs +1 -1
- package/migrator.cjs.map +1 -1
- package/migrator.js +1 -1
- package/migrator.js.map +1 -1
- package/package.json +49 -49
- package/sqlite-core/columns/integer.cjs +1 -0
- package/sqlite-core/columns/integer.cjs.map +1 -1
- package/sqlite-core/columns/integer.d.cts +1 -1
- package/sqlite-core/columns/integer.d.ts +1 -1
- package/sqlite-core/columns/integer.js +1 -0
- package/sqlite-core/columns/integer.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/migrator.cjs
CHANGED
|
@@ -79,7 +79,7 @@ function readMigrationFiles(config) {
|
|
|
79
79
|
const migrationFolderTo = config.migrationsFolder;
|
|
80
80
|
const migrationQueries = [];
|
|
81
81
|
const migrations = (0, import_node_fs.readdirSync)(migrationFolderTo).map((subdir) => ({ path: (0, import_node_path.join)(migrationFolderTo, subdir, "migration.sql"), name: subdir })).filter((it) => (0, import_node_fs.existsSync)(it.path));
|
|
82
|
-
migrations.sort();
|
|
82
|
+
migrations.sort((a, b) => a.name.localeCompare(b.name));
|
|
83
83
|
for (const migration of migrations) {
|
|
84
84
|
const migrationPath = migration.path;
|
|
85
85
|
const migrationDate = migration.name.slice(0, 14);
|
package/migrator.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs, { existsSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n\t/** @internal */\n\tinit?: boolean;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\nexport function formatToMillis(dateStr: string): number {\n\tconst year = parseInt(dateStr.slice(0, 4), 10);\n\tconst month = parseInt(dateStr.slice(4, 6), 10) - 1;\n\tconst day = parseInt(dateStr.slice(6, 8), 10);\n\tconst hour = parseInt(dateStr.slice(8, 10), 10);\n\tconst minute = parseInt(dateStr.slice(10, 12), 10);\n\tconst second = parseInt(dateStr.slice(12, 14), 10);\n\n\treturn Date.UTC(year, month, day, hour, minute, second);\n}\n\nfunction readMigrationFilesOLD(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\n\tconst journalAsString = fs.readFileSync(journalPath).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tif (fs.existsSync(`${config.migrationsFolder}/meta/_journal.json`)) {\n\t\t// it means user has folders V2\n\t\t// we need to warn to up the folders version but still apply migrations\n\t\tconsole.log(\n\t\t\t'\\nWarning: We detected that you have old drizzle-kit migration folders. We suggest to upgrade drizzle-kit and run \"drizzle-kit up\"\\n',\n\t\t);\n\t\treturn readMigrationFilesOLD(config);\n\t}\n\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst migrations = readdirSync(migrationFolderTo)\n\t\t.map((subdir) => ({ path: join(migrationFolderTo, subdir, 'migration.sql'), name: subdir }))\n\t\t.filter((it) => existsSync(it.path));\n\n\tmigrations.sort();\n\n\tfor (const migration of migrations) {\n\t\tconst migrationPath = migration.path;\n\t\tconst migrationDate = migration.name.slice(0, 14);\n\n\t\tconst query = fs.readFileSync(migrationPath).toString();\n\n\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\treturn it;\n\t\t});\n\n\t\tconst millis = formatToMillis(migrationDate);\n\n\t\tmigrationQueries.push({\n\t\t\tsql: result,\n\t\t\tbps: true,\n\t\t\tfolderMillis: millis,\n\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t});\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAA4C;AAC5C,uBAAqB;AAgCd,SAAS,eAAe,SAAyB;AACvD,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC7C,QAAM,QAAQ,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAClD,QAAM,MAAM,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC5C,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9C,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AACjD,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AAEjD,SAAO,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM;AACvD;AAEA,SAAS,sBAAsB,QAA0C;AACxE,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AAExC,QAAM,kBAAkB,eAAAA,QAAG,aAAa,WAAW,EAAE,SAAS;AAE9D,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,mBAAmB,QAA0C;AAC5E,MAAI,eAAAD,QAAG,WAAW,GAAG,OAAO,gBAAgB,qBAAqB,GAAG;AAGnE,YAAQ;AAAA,MACP;AAAA,IACD;AACA,WAAO,sBAAsB,MAAM;AAAA,EACpC;AAEA,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,iBAAa,4BAAY,iBAAiB,EAC9C,IAAI,CAAC,YAAY,EAAE,UAAM,uBAAK,mBAAmB,QAAQ,eAAe,GAAG,MAAM,OAAO,EAAE,EAC1F,OAAO,CAAC,WAAO,2BAAW,GAAG,IAAI,CAAC;AAEpC,aAAW,KAAK;
|
|
1
|
+
{"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs, { existsSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n\t/** @internal */\n\tinit?: boolean;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\nexport function formatToMillis(dateStr: string): number {\n\tconst year = parseInt(dateStr.slice(0, 4), 10);\n\tconst month = parseInt(dateStr.slice(4, 6), 10) - 1;\n\tconst day = parseInt(dateStr.slice(6, 8), 10);\n\tconst hour = parseInt(dateStr.slice(8, 10), 10);\n\tconst minute = parseInt(dateStr.slice(10, 12), 10);\n\tconst second = parseInt(dateStr.slice(12, 14), 10);\n\n\treturn Date.UTC(year, month, day, hour, minute, second);\n}\n\nfunction readMigrationFilesOLD(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\n\tconst journalAsString = fs.readFileSync(journalPath).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tif (fs.existsSync(`${config.migrationsFolder}/meta/_journal.json`)) {\n\t\t// it means user has folders V2\n\t\t// we need to warn to up the folders version but still apply migrations\n\t\tconsole.log(\n\t\t\t'\\nWarning: We detected that you have old drizzle-kit migration folders. We suggest to upgrade drizzle-kit and run \"drizzle-kit up\"\\n',\n\t\t);\n\t\treturn readMigrationFilesOLD(config);\n\t}\n\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst migrations = readdirSync(migrationFolderTo)\n\t\t.map((subdir) => ({ path: join(migrationFolderTo, subdir, 'migration.sql'), name: subdir }))\n\t\t.filter((it) => existsSync(it.path));\n\n\tmigrations.sort((a, b) => a.name.localeCompare(b.name));\n\n\tfor (const migration of migrations) {\n\t\tconst migrationPath = migration.path;\n\t\tconst migrationDate = migration.name.slice(0, 14);\n\n\t\tconst query = fs.readFileSync(migrationPath).toString();\n\n\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\treturn it;\n\t\t});\n\n\t\tconst millis = formatToMillis(migrationDate);\n\n\t\tmigrationQueries.push({\n\t\t\tsql: result,\n\t\t\tbps: true,\n\t\t\tfolderMillis: millis,\n\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t});\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAmB;AACnB,qBAA4C;AAC5C,uBAAqB;AAgCd,SAAS,eAAe,SAAyB;AACvD,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC7C,QAAM,QAAQ,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAClD,QAAM,MAAM,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC5C,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9C,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AACjD,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AAEjD,SAAO,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM;AACvD;AAEA,SAAS,sBAAsB,QAA0C;AACxE,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AAExC,QAAM,kBAAkB,eAAAA,QAAG,aAAa,WAAW,EAAE,SAAS;AAE9D,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,eAAAA,QAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,mBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,mBAAmB,QAA0C;AAC5E,MAAI,eAAAD,QAAG,WAAW,GAAG,OAAO,gBAAgB,qBAAqB,GAAG;AAGnE,YAAQ;AAAA,MACP;AAAA,IACD;AACA,WAAO,sBAAsB,MAAM;AAAA,EACpC;AAEA,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,iBAAa,4BAAY,iBAAiB,EAC9C,IAAI,CAAC,YAAY,EAAE,UAAM,uBAAK,mBAAmB,QAAQ,eAAe,GAAG,MAAM,OAAO,EAAE,EAC1F,OAAO,CAAC,WAAO,2BAAW,GAAG,IAAI,CAAC;AAEpC,aAAW,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEtD,aAAW,aAAa,YAAY;AACnC,UAAM,gBAAgB,UAAU;AAChC,UAAM,gBAAgB,UAAU,KAAK,MAAM,GAAG,EAAE;AAEhD,UAAM,QAAQ,eAAAA,QAAG,aAAa,aAAa,EAAE,SAAS;AAEtD,UAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,aAAO;AAAA,IACR,CAAC;AAED,UAAM,SAAS,eAAe,aAAa;AAE3C,qBAAiB,KAAK;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,cAAc;AAAA,MACd,MAAM,mBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,IAC7D,CAAC;AAAA,EACF;AAEA,SAAO;AACR;","names":["fs","crypto"]}
|
package/migrator.js
CHANGED
|
@@ -45,7 +45,7 @@ function readMigrationFiles(config) {
|
|
|
45
45
|
const migrationFolderTo = config.migrationsFolder;
|
|
46
46
|
const migrationQueries = [];
|
|
47
47
|
const migrations = readdirSync(migrationFolderTo).map((subdir) => ({ path: join(migrationFolderTo, subdir, "migration.sql"), name: subdir })).filter((it) => existsSync(it.path));
|
|
48
|
-
migrations.sort();
|
|
48
|
+
migrations.sort((a, b) => a.name.localeCompare(b.name));
|
|
49
49
|
for (const migration of migrations) {
|
|
50
50
|
const migrationPath = migration.path;
|
|
51
51
|
const migrationDate = migration.name.slice(0, 14);
|
package/migrator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs, { existsSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n\t/** @internal */\n\tinit?: boolean;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\nexport function formatToMillis(dateStr: string): number {\n\tconst year = parseInt(dateStr.slice(0, 4), 10);\n\tconst month = parseInt(dateStr.slice(4, 6), 10) - 1;\n\tconst day = parseInt(dateStr.slice(6, 8), 10);\n\tconst hour = parseInt(dateStr.slice(8, 10), 10);\n\tconst minute = parseInt(dateStr.slice(10, 12), 10);\n\tconst second = parseInt(dateStr.slice(12, 14), 10);\n\n\treturn Date.UTC(year, month, day, hour, minute, second);\n}\n\nfunction readMigrationFilesOLD(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\n\tconst journalAsString = fs.readFileSync(journalPath).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tif (fs.existsSync(`${config.migrationsFolder}/meta/_journal.json`)) {\n\t\t// it means user has folders V2\n\t\t// we need to warn to up the folders version but still apply migrations\n\t\tconsole.log(\n\t\t\t'\\nWarning: We detected that you have old drizzle-kit migration folders. We suggest to upgrade drizzle-kit and run \"drizzle-kit up\"\\n',\n\t\t);\n\t\treturn readMigrationFilesOLD(config);\n\t}\n\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst migrations = readdirSync(migrationFolderTo)\n\t\t.map((subdir) => ({ path: join(migrationFolderTo, subdir, 'migration.sql'), name: subdir }))\n\t\t.filter((it) => existsSync(it.path));\n\n\tmigrations.sort();\n\n\tfor (const migration of migrations) {\n\t\tconst migrationPath = migration.path;\n\t\tconst migrationDate = migration.name.slice(0, 14);\n\n\t\tconst query = fs.readFileSync(migrationPath).toString();\n\n\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\treturn it;\n\t\t});\n\n\t\tconst millis = formatToMillis(migrationDate);\n\n\t\tmigrationQueries.push({\n\t\t\tsql: result,\n\t\t\tbps: true,\n\t\t\tfolderMillis: millis,\n\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t});\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,MAAM,YAAY,mBAAmB;AAC5C,SAAS,YAAY;AAgCd,SAAS,eAAe,SAAyB;AACvD,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC7C,QAAM,QAAQ,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAClD,QAAM,MAAM,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC5C,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9C,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AACjD,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AAEjD,SAAO,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM;AACvD;AAEA,SAAS,sBAAsB,QAA0C;AACxE,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AAExC,QAAM,kBAAkB,GAAG,aAAa,WAAW,EAAE,SAAS;AAE9D,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,mBAAmB,QAA0C;AAC5E,MAAI,GAAG,WAAW,GAAG,OAAO,gBAAgB,qBAAqB,GAAG;AAGnE,YAAQ;AAAA,MACP;AAAA,IACD;AACA,WAAO,sBAAsB,MAAM;AAAA,EACpC;AAEA,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,aAAa,YAAY,iBAAiB,EAC9C,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,mBAAmB,QAAQ,eAAe,GAAG,MAAM,OAAO,EAAE,EAC1F,OAAO,CAAC,OAAO,WAAW,GAAG,IAAI,CAAC;AAEpC,aAAW,KAAK;
|
|
1
|
+
{"version":3,"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs, { existsSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n\t/** @internal */\n\tinit?: boolean;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\nexport function formatToMillis(dateStr: string): number {\n\tconst year = parseInt(dateStr.slice(0, 4), 10);\n\tconst month = parseInt(dateStr.slice(4, 6), 10) - 1;\n\tconst day = parseInt(dateStr.slice(6, 8), 10);\n\tconst hour = parseInt(dateStr.slice(8, 10), 10);\n\tconst minute = parseInt(dateStr.slice(10, 12), 10);\n\tconst second = parseInt(dateStr.slice(12, 14), 10);\n\n\treturn Date.UTC(year, month, day, hour, minute, second);\n}\n\nfunction readMigrationFilesOLD(config: MigrationConfig): MigrationMeta[] {\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst journalPath = `${migrationFolderTo}/meta/_journal.json`;\n\n\tconst journalAsString = fs.readFileSync(journalPath).toString();\n\n\tconst journal = JSON.parse(journalAsString) as {\n\t\tentries: { idx: number; when: number; tag: string; breakpoints: boolean }[];\n\t};\n\n\tfor (const journalEntry of journal.entries) {\n\t\tconst migrationPath = `${migrationFolderTo}/${journalEntry.tag}.sql`;\n\n\t\ttry {\n\t\t\tconst query = fs.readFileSync(`${migrationFolderTo}/${journalEntry.tag}.sql`).toString();\n\n\t\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\t\treturn it;\n\t\t\t});\n\n\t\t\tmigrationQueries.push({\n\t\t\t\tsql: result,\n\t\t\t\tbps: journalEntry.breakpoints,\n\t\t\t\tfolderMillis: journalEntry.when,\n\t\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\t});\n\t\t} catch {\n\t\t\tthrow new Error(`No file ${migrationPath} found in ${migrationFolderTo} folder`);\n\t\t}\n\t}\n\n\treturn migrationQueries;\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tif (fs.existsSync(`${config.migrationsFolder}/meta/_journal.json`)) {\n\t\t// it means user has folders V2\n\t\t// we need to warn to up the folders version but still apply migrations\n\t\tconsole.log(\n\t\t\t'\\nWarning: We detected that you have old drizzle-kit migration folders. We suggest to upgrade drizzle-kit and run \"drizzle-kit up\"\\n',\n\t\t);\n\t\treturn readMigrationFilesOLD(config);\n\t}\n\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst migrations = readdirSync(migrationFolderTo)\n\t\t.map((subdir) => ({ path: join(migrationFolderTo, subdir, 'migration.sql'), name: subdir }))\n\t\t.filter((it) => existsSync(it.path));\n\n\tmigrations.sort((a, b) => a.name.localeCompare(b.name));\n\n\tfor (const migration of migrations) {\n\t\tconst migrationPath = migration.path;\n\t\tconst migrationDate = migration.name.slice(0, 14);\n\n\t\tconst query = fs.readFileSync(migrationPath).toString();\n\n\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\treturn it;\n\t\t});\n\n\t\tconst millis = formatToMillis(migrationDate);\n\n\t\tmigrationQueries.push({\n\t\t\tsql: result,\n\t\t\tbps: true,\n\t\t\tfolderMillis: millis,\n\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t});\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":"AAAA,OAAO,YAAY;AACnB,OAAO,MAAM,YAAY,mBAAmB;AAC5C,SAAS,YAAY;AAgCd,SAAS,eAAe,SAAyB;AACvD,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC7C,QAAM,QAAQ,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAClD,QAAM,MAAM,SAAS,QAAQ,MAAM,GAAG,CAAC,GAAG,EAAE;AAC5C,QAAM,OAAO,SAAS,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9C,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AACjD,QAAM,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,GAAG,EAAE;AAEjD,SAAO,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,QAAQ,MAAM;AACvD;AAEA,SAAS,sBAAsB,QAA0C;AACxE,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,cAAc,GAAG,iBAAiB;AAExC,QAAM,kBAAkB,GAAG,aAAa,WAAW,EAAE,SAAS;AAE9D,QAAM,UAAU,KAAK,MAAM,eAAe;AAI1C,aAAW,gBAAgB,QAAQ,SAAS;AAC3C,UAAM,gBAAgB,GAAG,iBAAiB,IAAI,aAAa,GAAG;AAE9D,QAAI;AACH,YAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,IAAI,aAAa,GAAG,MAAM,EAAE,SAAS;AAEvF,YAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,eAAO;AAAA,MACR,CAAC;AAED,uBAAiB,KAAK;AAAA,QACrB,KAAK;AAAA,QACL,KAAK,aAAa;AAAA,QAClB,cAAc,aAAa;AAAA,QAC3B,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,MAC7D,CAAC;AAAA,IACF,QAAQ;AACP,YAAM,IAAI,MAAM,WAAW,aAAa,aAAa,iBAAiB,SAAS;AAAA,IAChF;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,mBAAmB,QAA0C;AAC5E,MAAI,GAAG,WAAW,GAAG,OAAO,gBAAgB,qBAAqB,GAAG;AAGnE,YAAQ;AAAA,MACP;AAAA,IACD;AACA,WAAO,sBAAsB,MAAM;AAAA,EACpC;AAEA,QAAM,oBAAoB,OAAO;AAEjC,QAAM,mBAAoC,CAAC;AAE3C,QAAM,aAAa,YAAY,iBAAiB,EAC9C,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,mBAAmB,QAAQ,eAAe,GAAG,MAAM,OAAO,EAAE,EAC1F,OAAO,CAAC,OAAO,WAAW,GAAG,IAAI,CAAC;AAEpC,aAAW,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEtD,aAAW,aAAa,YAAY;AACnC,UAAM,gBAAgB,UAAU;AAChC,UAAM,gBAAgB,UAAU,KAAK,MAAM,GAAG,EAAE;AAEhD,UAAM,QAAQ,GAAG,aAAa,aAAa,EAAE,SAAS;AAEtD,UAAM,SAAS,MAAM,MAAM,0BAA0B,EAAE,IAAI,CAAC,OAAO;AAClE,aAAO;AAAA,IACR,CAAC;AAED,UAAM,SAAS,eAAe,aAAa;AAE3C,qBAAiB,KAAK;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,cAAc;AAAA,MACd,MAAM,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA,IAC7D,CAAC;AAAA,EACF;AAEA,SAAO;AACR;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.4-03f09f7",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -738,6 +738,54 @@
|
|
|
738
738
|
"types": "./cockroach/session.d.ts",
|
|
739
739
|
"default": "./cockroach/session.js"
|
|
740
740
|
},
|
|
741
|
+
"./d1/driver": {
|
|
742
|
+
"import": {
|
|
743
|
+
"types": "./d1/driver.d.ts",
|
|
744
|
+
"default": "./d1/driver.js"
|
|
745
|
+
},
|
|
746
|
+
"require": {
|
|
747
|
+
"types": "./d1/driver.d.cts",
|
|
748
|
+
"default": "./d1/driver.cjs"
|
|
749
|
+
},
|
|
750
|
+
"types": "./d1/driver.d.ts",
|
|
751
|
+
"default": "./d1/driver.js"
|
|
752
|
+
},
|
|
753
|
+
"./d1": {
|
|
754
|
+
"import": {
|
|
755
|
+
"types": "./d1/index.d.ts",
|
|
756
|
+
"default": "./d1/index.js"
|
|
757
|
+
},
|
|
758
|
+
"require": {
|
|
759
|
+
"types": "./d1/index.d.cts",
|
|
760
|
+
"default": "./d1/index.cjs"
|
|
761
|
+
},
|
|
762
|
+
"types": "./d1/index.d.ts",
|
|
763
|
+
"default": "./d1/index.js"
|
|
764
|
+
},
|
|
765
|
+
"./d1/migrator": {
|
|
766
|
+
"import": {
|
|
767
|
+
"types": "./d1/migrator.d.ts",
|
|
768
|
+
"default": "./d1/migrator.js"
|
|
769
|
+
},
|
|
770
|
+
"require": {
|
|
771
|
+
"types": "./d1/migrator.d.cts",
|
|
772
|
+
"default": "./d1/migrator.cjs"
|
|
773
|
+
},
|
|
774
|
+
"types": "./d1/migrator.d.ts",
|
|
775
|
+
"default": "./d1/migrator.js"
|
|
776
|
+
},
|
|
777
|
+
"./d1/session": {
|
|
778
|
+
"import": {
|
|
779
|
+
"types": "./d1/session.d.ts",
|
|
780
|
+
"default": "./d1/session.js"
|
|
781
|
+
},
|
|
782
|
+
"require": {
|
|
783
|
+
"types": "./d1/session.d.cts",
|
|
784
|
+
"default": "./d1/session.cjs"
|
|
785
|
+
},
|
|
786
|
+
"types": "./d1/session.d.ts",
|
|
787
|
+
"default": "./d1/session.js"
|
|
788
|
+
},
|
|
741
789
|
"./cockroach-core/alias": {
|
|
742
790
|
"import": {
|
|
743
791
|
"types": "./cockroach-core/alias.d.ts",
|
|
@@ -978,54 +1026,6 @@
|
|
|
978
1026
|
"types": "./cockroach-core/view.d.ts",
|
|
979
1027
|
"default": "./cockroach-core/view.js"
|
|
980
1028
|
},
|
|
981
|
-
"./d1/driver": {
|
|
982
|
-
"import": {
|
|
983
|
-
"types": "./d1/driver.d.ts",
|
|
984
|
-
"default": "./d1/driver.js"
|
|
985
|
-
},
|
|
986
|
-
"require": {
|
|
987
|
-
"types": "./d1/driver.d.cts",
|
|
988
|
-
"default": "./d1/driver.cjs"
|
|
989
|
-
},
|
|
990
|
-
"types": "./d1/driver.d.ts",
|
|
991
|
-
"default": "./d1/driver.js"
|
|
992
|
-
},
|
|
993
|
-
"./d1": {
|
|
994
|
-
"import": {
|
|
995
|
-
"types": "./d1/index.d.ts",
|
|
996
|
-
"default": "./d1/index.js"
|
|
997
|
-
},
|
|
998
|
-
"require": {
|
|
999
|
-
"types": "./d1/index.d.cts",
|
|
1000
|
-
"default": "./d1/index.cjs"
|
|
1001
|
-
},
|
|
1002
|
-
"types": "./d1/index.d.ts",
|
|
1003
|
-
"default": "./d1/index.js"
|
|
1004
|
-
},
|
|
1005
|
-
"./d1/migrator": {
|
|
1006
|
-
"import": {
|
|
1007
|
-
"types": "./d1/migrator.d.ts",
|
|
1008
|
-
"default": "./d1/migrator.js"
|
|
1009
|
-
},
|
|
1010
|
-
"require": {
|
|
1011
|
-
"types": "./d1/migrator.d.cts",
|
|
1012
|
-
"default": "./d1/migrator.cjs"
|
|
1013
|
-
},
|
|
1014
|
-
"types": "./d1/migrator.d.ts",
|
|
1015
|
-
"default": "./d1/migrator.js"
|
|
1016
|
-
},
|
|
1017
|
-
"./d1/session": {
|
|
1018
|
-
"import": {
|
|
1019
|
-
"types": "./d1/session.d.ts",
|
|
1020
|
-
"default": "./d1/session.js"
|
|
1021
|
-
},
|
|
1022
|
-
"require": {
|
|
1023
|
-
"types": "./d1/session.d.cts",
|
|
1024
|
-
"default": "./d1/session.cjs"
|
|
1025
|
-
},
|
|
1026
|
-
"types": "./d1/session.d.ts",
|
|
1027
|
-
"default": "./d1/session.js"
|
|
1028
|
-
},
|
|
1029
1029
|
"./durable-sqlite/driver": {
|
|
1030
1030
|
"import": {
|
|
1031
1031
|
"types": "./durable-sqlite/driver.d.ts",
|
|
@@ -95,6 +95,7 @@ class SQLiteTimestamp extends SQLiteBaseInteger {
|
|
|
95
95
|
static [import_entity.entityKind] = "SQLiteTimestamp";
|
|
96
96
|
mode = this.config.mode;
|
|
97
97
|
mapFromDriverValue(value) {
|
|
98
|
+
if (typeof value === "string") return new Date(value.replaceAll('"', ""));
|
|
98
99
|
if (this.config.mode === "timestamp") {
|
|
99
100
|
return new Date(value * 1e3);
|
|
100
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnType, HasDefault, IsPrimaryKey, NotNull } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport { type Equal, getColumnNameAndConfig, type Or } from '~/utils.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: string, dataType: T['dataType'], columnType: string) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as IsPrimaryKey<HasDefault<NotNull<this>>>;\n\t}\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport class SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'number int53';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number int53', 'SQLiteInteger');\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteInteger(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger<T extends ColumnBaseConfig<'number int53'>> extends SQLiteBaseInteger<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport class SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: number;\n}, { mode: 'timestamp' | 'timestamp_ms' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: string, mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'object date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTimestamp(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): Date {\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date | number): number {\n\t\tif (typeof value === 'number') return value;\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'boolean';\n\tdata: boolean;\n\tdriverParam: number;\n}, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: string, mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBoolean(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean<T extends ColumnBaseConfig<'boolean'>> extends SQLiteBaseInteger<T, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tname: string,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer(a?: string | IntegerConfig, b?: IntegerConfig) {\n\tconst { name, config } = getColumnNameAndConfig<IntegerConfig | undefined>(a, b);\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAC3B,iBAAoB;AAEpB,mBAA4D;AAE5D,oBAAkD;AAO3C,MAAe,iCAGZ,kCAIR;AAAA,EACD,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAc,UAAyB,YAAoB;AACtE,UAAM,MAAM,UAAU,UAAU;AAChC,SAAK,OAAO,gBAAgB;AAAA,EAC7B;AAAA,EAES,WAAW,QAAoE;AACvF,QAAI,QAAQ,eAAe;AAC1B,WAAK,OAAO,gBAAgB;AAAA,IAC7B;AACA,SAAK,OAAO,aAAa;AACzB,WAAO,MAAM,WAAW;AAAA,EACzB;AACD;AAEO,MAAe,0BAGZ,2BAA6D;AAAA,EACtE,QAA0B,wBAAU,IAAY;AAAA,EAEvC,gBAAyB,KAAK,OAAO;AAAA,EAE9C,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAEO,MAAM,6BAA6B,yBAIvC;AAAA,EACF,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAc;AACzB,UAAM,MAAM,gBAAgB,eAAe;AAAA,EAC5C;AAAA,EAES,MAAM,OAAoB;AAClC,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBAAkE,kBAAqB;AAAA,EACnG,QAA0B,wBAAU,IAAY;AACjD;AAEO,MAAM,+BAA+B,yBAID;AAAA,EAC1C,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAc,MAAoC;AAC7D,UAAM,MAAM,eAAe,iBAAiB;AAC5C,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAA+B;AAC9B,WAAO,KAAK,QAAQ,0EAA+D;AAAA,EACpF;AAAA,EAES,MAAM,OAAoB;AAClC,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,wBACJ,kBACT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAEvC,OAAqC,KAAK,OAAO;AAAA,EAEjD,mBAAmB,
|
|
1
|
+
{"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnType, HasDefault, IsPrimaryKey, NotNull } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport { type Equal, getColumnNameAndConfig, type Or } from '~/utils.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: string, dataType: T['dataType'], columnType: string) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as IsPrimaryKey<HasDefault<NotNull<this>>>;\n\t}\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport class SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'number int53';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number int53', 'SQLiteInteger');\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteInteger(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger<T extends ColumnBaseConfig<'number int53'>> extends SQLiteBaseInteger<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport class SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: number;\n}, { mode: 'timestamp' | 'timestamp_ms' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: string, mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'object date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTimestamp(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number | string): Date {\n\t\t// legacy issue if integer had string date format\n\t\t// old kit generated defaults as quoted strings \"<string>\"\n\t\tif (typeof value === 'string') return new Date(value.replaceAll('\"', ''));\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date | number): number {\n\t\tif (typeof value === 'number') return value;\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'boolean';\n\tdata: boolean;\n\tdriverParam: number;\n}, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: string, mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBoolean(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean<T extends ColumnBaseConfig<'boolean'>> extends SQLiteBaseInteger<T, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tname: string,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer(a?: string | IntegerConfig, b?: IntegerConfig) {\n\tconst { name, config } = getColumnNameAndConfig<IntegerConfig | undefined>(a, b);\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":"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","names":[]}
|
|
@@ -59,7 +59,7 @@ export declare class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>
|
|
|
59
59
|
}> {
|
|
60
60
|
static readonly [entityKind]: string;
|
|
61
61
|
readonly mode: 'timestamp' | 'timestamp_ms';
|
|
62
|
-
mapFromDriverValue(value: number): Date;
|
|
62
|
+
mapFromDriverValue(value: number | string): Date;
|
|
63
63
|
mapToDriverValue(value: Date | number): number;
|
|
64
64
|
}
|
|
65
65
|
export declare class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{
|
|
@@ -59,7 +59,7 @@ export declare class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>
|
|
|
59
59
|
}> {
|
|
60
60
|
static readonly [entityKind]: string;
|
|
61
61
|
readonly mode: 'timestamp' | 'timestamp_ms';
|
|
62
|
-
mapFromDriverValue(value: number): Date;
|
|
62
|
+
mapFromDriverValue(value: number | string): Date;
|
|
63
63
|
mapToDriverValue(value: Date | number): number;
|
|
64
64
|
}
|
|
65
65
|
export declare class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{
|
|
@@ -63,6 +63,7 @@ class SQLiteTimestamp extends SQLiteBaseInteger {
|
|
|
63
63
|
static [entityKind] = "SQLiteTimestamp";
|
|
64
64
|
mode = this.config.mode;
|
|
65
65
|
mapFromDriverValue(value) {
|
|
66
|
+
if (typeof value === "string") return new Date(value.replaceAll('"', ""));
|
|
66
67
|
if (this.config.mode === "timestamp") {
|
|
67
68
|
return new Date(value * 1e3);
|
|
68
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnType, HasDefault, IsPrimaryKey, NotNull } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport { type Equal, getColumnNameAndConfig, type Or } from '~/utils.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: string, dataType: T['dataType'], columnType: string) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as IsPrimaryKey<HasDefault<NotNull<this>>>;\n\t}\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport class SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'number int53';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number int53', 'SQLiteInteger');\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteInteger(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger<T extends ColumnBaseConfig<'number int53'>> extends SQLiteBaseInteger<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport class SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: number;\n}, { mode: 'timestamp' | 'timestamp_ms' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: string, mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'object date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTimestamp(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): Date {\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date | number): number {\n\t\tif (typeof value === 'number') return value;\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'boolean';\n\tdata: boolean;\n\tdriverParam: number;\n}, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: string, mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBoolean(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean<T extends ColumnBaseConfig<'boolean'>> extends SQLiteBaseInteger<T, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tname: string,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer(a?: string | IntegerConfig, b?: IntegerConfig) {\n\tconst { name, config } = getColumnNameAndConfig<IntegerConfig | undefined>(a, b);\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,WAAW;AAEpB,SAAqB,8BAAuC;AAE5D,SAAS,cAAc,2BAA2B;AAO3C,MAAe,iCAGZ,oBAIR;AAAA,EACD,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAc,UAAyB,YAAoB;AACtE,UAAM,MAAM,UAAU,UAAU;AAChC,SAAK,OAAO,gBAAgB;AAAA,EAC7B;AAAA,EAES,WAAW,QAAoE;AACvF,QAAI,QAAQ,eAAe;AAC1B,WAAK,OAAO,gBAAgB;AAAA,IAC7B;AACA,SAAK,OAAO,aAAa;AACzB,WAAO,MAAM,WAAW;AAAA,EACzB;AACD;AAEO,MAAe,0BAGZ,aAA6D;AAAA,EACtE,QAA0B,UAAU,IAAY;AAAA,EAEvC,gBAAyB,KAAK,OAAO;AAAA,EAE9C,aAAqB;AACpB,WAAO;AAAA,EACR;AACD;AAEO,MAAM,6BAA6B,yBAIvC;AAAA,EACF,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAc;AACzB,UAAM,MAAM,gBAAgB,eAAe;AAAA,EAC5C;AAAA,EAES,MAAM,OAAoB;AAClC,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,sBAAkE,kBAAqB;AAAA,EACnG,QAA0B,UAAU,IAAY;AACjD;AAEO,MAAM,+BAA+B,yBAID;AAAA,EAC1C,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAc,MAAoC;AAC7D,UAAM,MAAM,eAAe,iBAAiB;AAC5C,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAA+B;AAC9B,WAAO,KAAK,QAAQ,+DAA+D;AAAA,EACpF;AAAA,EAES,MAAM,OAAoB;AAClC,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,wBACJ,kBACT;AAAA,EACC,QAA0B,UAAU,IAAY;AAAA,EAEvC,OAAqC,KAAK,OAAO;AAAA,EAEjD,mBAAmB,
|
|
1
|
+
{"version":3,"sources":["../../../src/sqlite-core/columns/integer.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnType, HasDefault, IsPrimaryKey, NotNull } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport { type Equal, getColumnNameAndConfig, type Or } from '~/utils.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: string, dataType: T['dataType'], columnType: string) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as IsPrimaryKey<HasDefault<NotNull<this>>>;\n\t}\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport class SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'number int53';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number int53', 'SQLiteInteger');\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteInteger(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger<T extends ColumnBaseConfig<'number int53'>> extends SQLiteBaseInteger<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport class SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: number;\n}, { mode: 'timestamp' | 'timestamp_ms' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: string, mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'object date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTimestamp(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number | string): Date {\n\t\t// legacy issue if integer had string date format\n\t\t// old kit generated defaults as quoted strings \"<string>\"\n\t\tif (typeof value === 'string') return new Date(value.replaceAll('\"', ''));\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t}\n\n\toverride mapToDriverValue(value: Date | number): number {\n\t\tif (typeof value === 'number') return value;\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t}\n}\n\nexport class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'boolean';\n\tdata: boolean;\n\tdriverParam: number;\n}, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: string, mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBoolean(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean<T extends ColumnBaseConfig<'boolean'>> extends SQLiteBaseInteger<T, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue(value: number): boolean {\n\t\treturn Number(value) === 1;\n\t}\n\n\toverride mapToDriverValue(value: boolean): number {\n\t\treturn value ? 1 : 0;\n\t}\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tname: string,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer(a?: string | IntegerConfig, b?: IntegerConfig) {\n\tconst { name, config } = getColumnNameAndConfig<IntegerConfig | undefined>(a, b);\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n"],"mappings":"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","names":[]}
|
package/version.cjs
CHANGED
package/version.d.cts
CHANGED
package/version.d.ts
CHANGED
package/version.js
CHANGED