/
opt
/
canhelp
/
node_modules
/
drizzle-orm
/
sqlite-core
/
/opt/canhelp/node_modules/drizzle-orm/sqlite-core
mkdir
upload
Name
Size
Mode
Actions
columns/
-
0755
rm
query-builders/
-
0755
rm
alias.cjs
1214
0644
edit
dl
rm
alias.cjs.map
736
0644
edit
dl
rm
alias.d.cts
339
0644
edit
dl
rm
alias.d.ts
336
0644
edit
dl
rm
alias.js
211
0644
edit
dl
rm
alias.js.map
698
0644
edit
dl
rm
checks.cjs
1693
0644
edit
dl
rm
checks.cjs.map
1421
0644
edit
dl
rm
checks.d.cts
704
0644
edit
dl
rm
checks.d.ts
701
0644
edit
dl
rm
checks.js
601
0644
edit
dl
rm
checks.js.map
1371
0644
edit
dl
rm
db.cjs
11849
0644
edit
dl
rm
db.cjs.map
28271
0644
edit
dl
rm
db.d.cts
11216
0644
edit
dl
rm
db.d.ts
11202
0644
edit
dl
rm
db.js
10470
0644
edit
dl
rm
db.js.map
28310
0644
edit
dl
rm
dialect.cjs
28653
0644
edit
dl
rm
dialect.cjs.map
47449
0644
edit
dl
rm
dialect.d.cts
3539
0644
edit
dl
rm
dialect.d.ts
3529
0644
edit
dl
rm
dialect.js
24547
0644
edit
dl
rm
dialect.js.map
47334
0644
edit
dl
rm
expressions.cjs
2117
0644
edit
dl
rm
expressions.cjs.map
1548
0644
edit
dl
rm
expressions.d.cts
460
0644
edit
dl
rm
expressions.d.ts
457
0644
edit
dl
rm
expressions.js
655
0644
edit
dl
rm
expressions.js.map
1488
0644
edit
dl
rm
foreign-keys.cjs
3104
0644
edit
dl
rm
foreign-keys.cjs.map
5530
0644
edit
dl
rm
foreign-keys.d.cts
2376
0644
edit
dl
rm
foreign-keys.d.ts
2373
0644
edit
dl
rm
foreign-keys.js
1917
0644
edit
dl
rm
foreign-keys.js.map
5483
0644
edit
dl
rm
index.cjs
2663
0644
edit
dl
rm
index.cjs.map
875
0644
edit
dl
rm
index.d.cts
490
0644
edit
dl
rm
index.d.ts
475
0644
edit
dl
rm
index.js
508
0644
edit
dl
rm
index.js.map
745
0644
edit
dl
rm
indexes.cjs
2292
0644
edit
dl
rm
indexes.cjs.map
2754
0644
edit
dl
rm
indexes.d.cts
1268
0644
edit
dl
rm
indexes.d.ts
1264
0644
edit
dl
rm
indexes.js
1109
0644
edit
dl
rm
indexes.js.map
2693
0644
edit
dl
rm
primary-keys.cjs
2176
0644
edit
dl
rm
primary-keys.cjs.map
2765
0644
edit
dl
rm
primary-keys.d.cts
1200
0644
edit
dl
rm
primary-keys.d.ts
1197
0644
edit
dl
rm
primary-keys.js
1022
0644
edit
dl
rm
primary-keys.js.map
2719
0644
edit
dl
rm
session.cjs
4725
0644
edit
dl
rm
session.cjs.map
9936
0644
edit
dl
rm
session.d.cts
4855
0644
edit
dl
rm
session.d.ts
4846
0644
edit
dl
rm
session.js
3469
0644
edit
dl
rm
session.js.map
9897
0644
edit
dl
rm
subquery.cjs
784
0644
edit
dl
rm
subquery.cjs.map
1650
0644
edit
dl
rm
subquery.d.cts
1481
0644
edit
dl
rm
subquery.d.ts
1476
0644
edit
dl
rm
subquery.js
36
0644
edit
dl
rm
subquery.js.map
71
0644
edit
dl
rm
table.cjs
3081
0644
edit
dl
rm
table.cjs.map
8611
0644
edit
dl
rm
table.d.cts
4354
0644
edit
dl
rm
table.d.ts
4344
0644
edit
dl
rm
table.js
1836
0644
edit
dl
rm
table.js.map
8560
0644
edit
dl
rm
unique-constraint.cjs
2625
0644
edit
dl
rm
unique-constraint.cjs.map
2668
0644
edit
dl
rm
unique-constraint.d.cts
989
0644
edit
dl
rm
unique-constraint.d.ts
986
0644
edit
dl
rm
unique-constraint.js
1312
0644
edit
dl
rm
unique-constraint.js.map
2611
0644
edit
dl
rm
utils.cjs
3284
0644
edit
dl
rm
utils.cjs.map
3824
0644
edit
dl
rm
utils.d.cts
1160
0644
edit
dl
rm
utils.d.ts
1153
0644
edit
dl
rm
utils.js
1919
0644
edit
dl
rm
utils.js.map
3785
0644
edit
dl
rm
view-base.cjs
1291
0644
edit
dl
rm
view-base.cjs.map
760
0644
edit
dl
rm
view-base.d.cts
488
0644
edit
dl
rm
view-base.d.ts
485
0644
edit
dl
rm
view-base.js
227
0644
edit
dl
rm
view-base.js.map
723
0644
edit
dl
rm
view-common.cjs
1175
0644
edit
dl
rm
view-common.cjs.map
261
0644
edit
dl
rm
view-common.d.cts
54
0644
edit
dl
rm
view-common.d.ts
54
0644
edit
dl
rm
view-common.js
135
0644
edit
dl
rm
view-common.js.map
218
0644
edit
dl
rm
view.cjs
4032
0644
edit
dl
rm
view.cjs.map
7392
0644
edit
dl
rm
view.d.cts
2980
0644
edit
dl
rm
view.d.ts
2972
0644
edit
dl
rm
view.js
2640
0644
edit
dl
rm
view.js.map
7347
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/drizzle-orm/sqlite-core/dialect.js
(24547B)
import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from "../alias.js"; import { CasingCache } from "../casing.js"; import { Column } from "../column.js"; import { entityKind, is } from "../entity.js"; import { DrizzleError } from "../errors.js"; import { getOperators, getOrderByOperators, Many, normalizeRelation, One } from "../relations.js"; import { and, eq } from "../sql/index.js"; import { Param, SQL, sql } from "../sql/sql.js"; import { SQLiteColumn } from "./columns/index.js"; import { SQLiteTable } from "./table.js"; import { Subquery } from "../subquery.js"; import { getTableName, getTableUniqueName, Table } from "../table.js"; import { orderSelectedFields } from "../utils.js"; import { ViewBaseConfig } from "../view-common.js"; import { SQLiteViewBase } from "./view-base.js"; class SQLiteDialect { static [entityKind] = "SQLiteDialect"; /** @internal */ casing; constructor(config) { this.casing = new CasingCache(config?.casing); } escapeName(name) { return `"${name}"`; } escapeParam(_num) { return "?"; } escapeString(str) { return `'${str.replace(/'/g, "''")}'`; } buildWithCTE(queries) { if (!queries?.length) return void 0; const withSqlChunks = [sql`with `]; for (const [i, w] of queries.entries()) { withSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`); if (i < queries.length - 1) { withSqlChunks.push(sql`, `); } } withSqlChunks.push(sql` `); return sql.join(withSqlChunks); } buildDeleteQuery({ table, where, returning, withList, limit, orderBy }) { const withSql = this.buildWithCTE(withList); const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0; const whereSql = where ? sql` where ${where}` : void 0; const orderBySql = this.buildOrderBy(orderBy); const limitSql = this.buildLimit(limit); return sql`${withSql}delete from ${table}${whereSql}${returningSql}${orderBySql}${limitSql}`; } buildUpdateSet(table, set) { const tableColumns = table[Table.Symbol.Columns]; const columnNames = Object.keys(tableColumns).filter( (colName) => set[colName] !== void 0 || tableColumns[colName]?.onUpdateFn !== void 0 ); const setSize = columnNames.length; return sql.join(columnNames.flatMap((colName, i) => { const col = tableColumns[colName]; const value = set[colName] ?? sql.param(col.onUpdateFn(), col); const res = sql`${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`; if (i < setSize - 1) { return [res, sql.raw(", ")]; } return [res]; })); } buildUpdateQuery({ table, set, where, returning, withList, joins, from, limit, orderBy }) { const withSql = this.buildWithCTE(withList); const setSql = this.buildUpdateSet(table, set); const fromSql = from && sql.join([sql.raw(" from "), this.buildFromTable(from)]); const joinsSql = this.buildJoins(joins); const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0; const whereSql = where ? sql` where ${where}` : void 0; const orderBySql = this.buildOrderBy(orderBy); const limitSql = this.buildLimit(limit); return sql`${withSql}update ${table} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}${orderBySql}${limitSql}`; } /** * Builds selection SQL with provided fields/expressions * * Examples: * * `select <selection> from` * * `insert ... returning <selection>` * * If `isSingleTable` is true, then columns won't be prefixed with table name */ buildSelection(fields, { isSingleTable = false } = {}) { const columnsLen = fields.length; const chunks = fields.flatMap(({ field }, i) => { const chunk = []; if (is(field, SQL.Aliased) && field.isSelectionField) { chunk.push(sql.identifier(field.fieldAlias)); } else if (is(field, SQL.Aliased) || is(field, SQL)) { const query = is(field, SQL.Aliased) ? field.sql : field; if (isSingleTable) { chunk.push( new SQL( query.queryChunks.map((c) => { if (is(c, Column)) { return sql.identifier(this.casing.getColumnCasing(c)); } return c; }) ) ); } else { chunk.push(query); } if (is(field, SQL.Aliased)) { chunk.push(sql` as ${sql.identifier(field.fieldAlias)}`); } } else if (is(field, Column)) { const tableName = field.table[Table.Symbol.Name]; if (field.columnType === "SQLiteNumericBigInt") { if (isSingleTable) { chunk.push(sql`cast(${sql.identifier(this.casing.getColumnCasing(field))} as text)`); } else { chunk.push( sql`cast(${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))} as text)` ); } } else { if (isSingleTable) { chunk.push(sql.identifier(this.casing.getColumnCasing(field))); } else { chunk.push(sql`${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))}`); } } } if (i < columnsLen - 1) { chunk.push(sql`, `); } return chunk; }); return sql.join(chunks); } buildJoins(joins) { if (!joins || joins.length === 0) { return void 0; } const joinsArray = []; if (joins) { for (const [index, joinMeta] of joins.entries()) { if (index === 0) { joinsArray.push(sql` `); } const table = joinMeta.table; if (is(table, SQLiteTable)) { const tableName = table[SQLiteTable.Symbol.Name]; const tableSchema = table[SQLiteTable.Symbol.Schema]; const origTableName = table[SQLiteTable.Symbol.OriginalName]; const alias = tableName === origTableName ? void 0 : joinMeta.alias; joinsArray.push( sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}` ); } else { joinsArray.push( sql`${sql.raw(joinMeta.joinType)} join ${table} on ${joinMeta.on}` ); } if (index < joins.length - 1) { joinsArray.push(sql` `); } } } return sql.join(joinsArray); } buildLimit(limit) { return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0; } buildOrderBy(orderBy) { const orderByList = []; if (orderBy) { for (const [index, orderByValue] of orderBy.entries()) { orderByList.push(orderByValue); if (index < orderBy.length - 1) { orderByList.push(sql`, `); } } } return orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : void 0; } buildFromTable(table) { if (is(table, Table) && table[Table.Symbol.IsAlias]) { return sql`${sql`${sql.identifier(table[Table.Symbol.Schema] ?? "")}.`.if(table[Table.Symbol.Schema])}${sql.identifier(table[Table.Symbol.OriginalName])} ${sql.identifier(table[Table.Symbol.Name])}`; } return table; } buildSelectQuery({ withList, fields, fieldsFlat, where, having, table, joins, orderBy, groupBy, limit, offset, distinct, setOperators }) { const fieldsList = fieldsFlat ?? orderSelectedFields(fields); for (const f of fieldsList) { if (is(f.field, Column) && getTableName(f.field.table) !== (is(table, Subquery) ? table._.alias : is(table, SQLiteViewBase) ? table[ViewBaseConfig].name : is(table, SQL) ? void 0 : getTableName(table)) && !((table2) => joins?.some( ({ alias }) => alias === (table2[Table.Symbol.IsAlias] ? getTableName(table2) : table2[Table.Symbol.BaseName]) ))(f.field.table)) { const tableName = getTableName(f.field.table); throw new Error( `Your "${f.path.join("->")}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?` ); } } const isSingleTable = !joins || joins.length === 0; const withSql = this.buildWithCTE(withList); const distinctSql = distinct ? sql` distinct` : void 0; const selection = this.buildSelection(fieldsList, { isSingleTable }); const tableSql = this.buildFromTable(table); const joinsSql = this.buildJoins(joins); const whereSql = where ? sql` where ${where}` : void 0; const havingSql = having ? sql` having ${having}` : void 0; const groupByList = []; if (groupBy) { for (const [index, groupByValue] of groupBy.entries()) { groupByList.push(groupByValue); if (index < groupBy.length - 1) { groupByList.push(sql`, `); } } } const groupBySql = groupByList.length > 0 ? sql` group by ${sql.join(groupByList)}` : void 0; const orderBySql = this.buildOrderBy(orderBy); const limitSql = this.buildLimit(limit); const offsetSql = offset ? sql` offset ${offset}` : void 0; const finalQuery = sql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}`; if (setOperators.length > 0) { return this.buildSetOperations(finalQuery, setOperators); } return finalQuery; } buildSetOperations(leftSelect, setOperators) { const [setOperator, ...rest] = setOperators; if (!setOperator) { throw new Error("Cannot pass undefined values to any set operator"); } if (rest.length === 0) { return this.buildSetOperationQuery({ leftSelect, setOperator }); } return this.buildSetOperations( this.buildSetOperationQuery({ leftSelect, setOperator }), rest ); } buildSetOperationQuery({ leftSelect, setOperator: { type, isAll, rightSelect, limit, orderBy, offset } }) { const leftChunk = sql`${leftSelect.getSQL()} `; const rightChunk = sql`${rightSelect.getSQL()}`; let orderBySql; if (orderBy && orderBy.length > 0) { const orderByValues = []; for (const singleOrderBy of orderBy) { if (is(singleOrderBy, SQLiteColumn)) { orderByValues.push(sql.identifier(singleOrderBy.name)); } else if (is(singleOrderBy, SQL)) { for (let i = 0; i < singleOrderBy.queryChunks.length; i++) { const chunk = singleOrderBy.queryChunks[i]; if (is(chunk, SQLiteColumn)) { singleOrderBy.queryChunks[i] = sql.identifier(this.casing.getColumnCasing(chunk)); } } orderByValues.push(sql`${singleOrderBy}`); } else { orderByValues.push(sql`${singleOrderBy}`); } } orderBySql = sql` order by ${sql.join(orderByValues, sql`, `)}`; } const limitSql = typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0; const operatorChunk = sql.raw(`${type} ${isAll ? "all " : ""}`); const offsetSql = offset ? sql` offset ${offset}` : void 0; return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`; } buildInsertQuery({ table, values: valuesOrSelect, onConflict, returning, withList, select }) { const valuesSqlList = []; const columns = table[Table.Symbol.Columns]; const colEntries = Object.entries(columns).filter( ([_, col]) => !col.shouldDisableInsert() ); const insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column))); if (select) { const select2 = valuesOrSelect; if (is(select2, SQL)) { valuesSqlList.push(select2); } else { valuesSqlList.push(select2.getSQL()); } } else { const values = valuesOrSelect; valuesSqlList.push(sql.raw("values ")); for (const [valueIndex, value] of values.entries()) { const valueList = []; for (const [fieldName, col] of colEntries) { const colValue = value[fieldName]; if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) { let defaultValue; if (col.default !== null && col.default !== void 0) { defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col); } else if (col.defaultFn !== void 0) { const defaultFnResult = col.defaultFn(); defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col); } else if (!col.default && col.onUpdateFn !== void 0) { const onUpdateFnResult = col.onUpdateFn(); defaultValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col); } else { defaultValue = sql`null`; } valueList.push(defaultValue); } else { valueList.push(colValue); } } valuesSqlList.push(valueList); if (valueIndex < values.length - 1) { valuesSqlList.push(sql`, `); } } } const withSql = this.buildWithCTE(withList); const valuesSql = sql.join(valuesSqlList); const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0; const onConflictSql = onConflict?.length ? sql.join(onConflict) : void 0; return sql`${withSql}insert into ${table} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`; } sqlToQuery(sql2, invokeSource) { return sql2.toQuery({ casing: this.casing, escapeName: this.escapeName, escapeParam: this.escapeParam, escapeString: this.escapeString, invokeSource }); } buildRelationalQuery({ fullSchema, schema, tableNamesMap, table, tableConfig, queryConfig: config, tableAlias, nestedQueryRelation, joinOn }) { let selection = []; let limit, offset, orderBy = [], where; const joins = []; if (config === true) { const selectionEntries = Object.entries(tableConfig.columns); selection = selectionEntries.map(([key, value]) => ({ dbKey: value.name, tsKey: key, field: aliasedTableColumn(value, tableAlias), relationTableTsKey: void 0, isJson: false, selection: [] })); } else { const aliasedColumns = Object.fromEntries( Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]) ); if (config.where) { const whereSql = typeof config.where === "function" ? config.where(aliasedColumns, getOperators()) : config.where; where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias); } const fieldsSelection = []; let selectedColumns = []; if (config.columns) { let isIncludeMode = false; for (const [field, value] of Object.entries(config.columns)) { if (value === void 0) { continue; } if (field in tableConfig.columns) { if (!isIncludeMode && value === true) { isIncludeMode = true; } selectedColumns.push(field); } } if (selectedColumns.length > 0) { selectedColumns = isIncludeMode ? selectedColumns.filter((c) => config.columns?.[c] === true) : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key)); } } else { selectedColumns = Object.keys(tableConfig.columns); } for (const field of selectedColumns) { const column = tableConfig.columns[field]; fieldsSelection.push({ tsKey: field, value: column }); } let selectedRelations = []; if (config.with) { selectedRelations = Object.entries(config.with).filter((entry) => !!entry[1]).map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey] })); } let extras; if (config.extras) { extras = typeof config.extras === "function" ? config.extras(aliasedColumns, { sql }) : config.extras; for (const [tsKey, value] of Object.entries(extras)) { fieldsSelection.push({ tsKey, value: mapColumnsInAliasedSQLToAlias(value, tableAlias) }); } } for (const { tsKey, value } of fieldsSelection) { selection.push({ dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name, tsKey, field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value, relationTableTsKey: void 0, isJson: false, selection: [] }); } let orderByOrig = typeof config.orderBy === "function" ? config.orderBy(aliasedColumns, getOrderByOperators()) : config.orderBy ?? []; if (!Array.isArray(orderByOrig)) { orderByOrig = [orderByOrig]; } orderBy = orderByOrig.map((orderByValue) => { if (is(orderByValue, Column)) { return aliasedTableColumn(orderByValue, tableAlias); } return mapColumnsInSQLToAlias(orderByValue, tableAlias); }); limit = config.limit; offset = config.offset; for (const { tsKey: selectedRelationTsKey, queryConfig: selectedRelationConfigValue, relation } of selectedRelations) { const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation); const relationTableName = getTableUniqueName(relation.referencedTable); const relationTableTsName = tableNamesMap[relationTableName]; const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`; const joinOn2 = and( ...normalizedRelation.fields.map( (field2, i) => eq( aliasedTableColumn(normalizedRelation.references[i], relationTableAlias), aliasedTableColumn(field2, tableAlias) ) ) ); const builtRelation = this.buildRelationalQuery({ fullSchema, schema, tableNamesMap, table: fullSchema[relationTableTsName], tableConfig: schema[relationTableTsName], queryConfig: is(relation, One) ? selectedRelationConfigValue === true ? { limit: 1 } : { ...selectedRelationConfigValue, limit: 1 } : selectedRelationConfigValue, tableAlias: relationTableAlias, joinOn: joinOn2, nestedQueryRelation: relation }); const field = sql`(${builtRelation.sql})`.as(selectedRelationTsKey); selection.push({ dbKey: selectedRelationTsKey, tsKey: selectedRelationTsKey, field, relationTableTsKey: relationTableTsName, isJson: true, selection: builtRelation.selection }); } } if (selection.length === 0) { throw new DrizzleError({ message: `No fields selected for table "${tableConfig.tsName}" ("${tableAlias}"). You need to have at least one item in "columns", "with" or "extras". If you need to select all columns, omit the "columns" key or set it to undefined.` }); } let result; where = and(joinOn, where); if (nestedQueryRelation) { let field = sql`json_array(${sql.join( selection.map( ({ field: field2 }) => is(field2, SQLiteColumn) ? sql.identifier(this.casing.getColumnCasing(field2)) : is(field2, SQL.Aliased) ? field2.sql : field2 ), sql`, ` )})`; if (is(nestedQueryRelation, Many)) { field = sql`coalesce(json_group_array(${field}), json_array())`; } const nestedSelection = [{ dbKey: "data", tsKey: "data", field: field.as("data"), isJson: true, relationTableTsKey: tableConfig.tsName, selection }]; const needsSubquery = limit !== void 0 || offset !== void 0 || orderBy.length > 0; if (needsSubquery) { result = this.buildSelectQuery({ table: aliasedTable(table, tableAlias), fields: {}, fieldsFlat: [ { path: [], field: sql.raw("*") } ], where, limit, offset, orderBy, setOperators: [] }); where = void 0; limit = void 0; offset = void 0; orderBy = void 0; } else { result = aliasedTable(table, tableAlias); } result = this.buildSelectQuery({ table: is(result, SQLiteTable) ? result : new Subquery(result, {}, tableAlias), fields: {}, fieldsFlat: nestedSelection.map(({ field: field2 }) => ({ path: [], field: is(field2, Column) ? aliasedTableColumn(field2, tableAlias) : field2 })), joins, where, limit, offset, orderBy, setOperators: [] }); } else { result = this.buildSelectQuery({ table: aliasedTable(table, tableAlias), fields: {}, fieldsFlat: selection.map(({ field }) => ({ path: [], field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field })), joins, where, limit, offset, orderBy, setOperators: [] }); } return { tableTsKey: tableConfig.tsName, sql: result, selection }; } } class SQLiteSyncDialect extends SQLiteDialect { static [entityKind] = "SQLiteSyncDialect"; migrate(migrations, session, config) { const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations"; const migrationTableCreate = sql` CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} ( id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric ) `; session.run(migrationTableCreate); const dbMigrations = session.values( sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1` ); const lastDbMigration = dbMigrations[0] ?? void 0; session.run(sql`BEGIN`); try { for (const migration of migrations) { if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) { for (const stmt of migration.sql) { session.run(sql.raw(stmt)); } session.run( sql`INSERT INTO ${sql.identifier(migrationsTable)} ("hash", "created_at") VALUES(${migration.hash}, ${migration.folderMillis})` ); } } session.run(sql`COMMIT`); } catch (e) { session.run(sql`ROLLBACK`); throw e; } } } class SQLiteAsyncDialect extends SQLiteDialect { static [entityKind] = "SQLiteAsyncDialect"; async migrate(migrations, session, config) { const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations"; const migrationTableCreate = sql` CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} ( id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric ) `; await session.run(migrationTableCreate); const dbMigrations = await session.values( sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1` ); const lastDbMigration = dbMigrations[0] ?? void 0; await session.transaction(async (tx) => { for (const migration of migrations) { if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) { for (const stmt of migration.sql) { await tx.run(sql.raw(stmt)); } await tx.run( sql`INSERT INTO ${sql.identifier(migrationsTable)} ("hash", "created_at") VALUES(${migration.hash}, ${migration.folderMillis})` ); } } }); } } export { SQLiteAsyncDialect, SQLiteDialect, SQLiteSyncDialect }; //# sourceMappingURL=dialect.js.map
Save
cmd:
run