@hedystia/db 2.0.3 → 2.0.5
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/cache/manager.cjs +23 -0
- package/dist/cache/manager.cjs.map +1 -1
- package/dist/cache/manager.d.cts +14 -0
- package/dist/cache/manager.d.mts +14 -0
- package/dist/cache/manager.mjs +23 -0
- package/dist/cache/manager.mjs.map +1 -1
- package/dist/core/database.cjs +17 -5
- package/dist/core/database.cjs.map +1 -1
- package/dist/core/database.d.cts +4 -9
- package/dist/core/database.d.mts +4 -9
- package/dist/core/database.mjs +17 -5
- package/dist/core/database.mjs.map +1 -1
- package/dist/core/repository.cjs +32 -10
- package/dist/core/repository.cjs.map +1 -1
- package/dist/core/repository.d.cts +8 -1
- package/dist/core/repository.d.mts +8 -1
- package/dist/core/repository.mjs +32 -10
- package/dist/core/repository.mjs.map +1 -1
- package/dist/drivers/sql-compiler.cjs +6 -0
- package/dist/drivers/sql-compiler.cjs.map +1 -1
- package/dist/drivers/sql-compiler.mjs +6 -0
- package/dist/drivers/sql-compiler.mjs.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/schema/column.cjs +2 -2
- package/dist/schema/column.cjs.map +1 -1
- package/dist/schema/column.d.cts +2 -2
- package/dist/schema/column.d.mts +2 -2
- package/dist/schema/column.mjs +2 -2
- package/dist/schema/column.mjs.map +1 -1
- package/dist/schema/columns/index.cjs +12 -0
- package/dist/schema/columns/index.cjs.map +1 -1
- package/dist/schema/columns/index.d.cts +10 -2
- package/dist/schema/columns/index.d.mts +10 -2
- package/dist/schema/columns/index.mjs +12 -1
- package/dist/schema/columns/index.mjs.map +1 -1
- package/dist/schema/table.cjs +2 -1
- package/dist/schema/table.cjs.map +1 -1
- package/dist/schema/table.d.cts +4 -2
- package/dist/schema/table.d.mts +4 -2
- package/dist/schema/table.mjs +2 -1
- package/dist/schema/table.mjs.map +1 -1
- package/dist/types.d.cts +109 -4
- package/dist/types.d.mts +109 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-compiler.mjs","names":[],"sources":["../../src/drivers/sql-compiler.ts"],"sourcesContent":["import type {\n ColumnDataType,\n ColumnMetadata,\n DatabaseType,\n TableMetadata,\n WhereClause,\n WhereCondition,\n} from \"../types\";\n\n/**\n * Compile column type to SQL string for a specific database dialect\n * @param {ColumnMetadata} col - Column metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} SQL column type string\n */\nexport function compileColumnType(col: ColumnMetadata, dialect: DatabaseType): string {\n const name = typeof dialect === \"string\" ? dialect : dialect.name;\n\n const typeMap: Record<ColumnDataType, Record<string, string>> = {\n integer: { mysql: \"INT\", mariadb: \"INT\", sqlite: \"INTEGER\", file: \"INTEGER\" },\n bigint: { mysql: \"BIGINT\", mariadb: \"BIGINT\", sqlite: \"INTEGER\", file: \"BIGINT\" },\n varchar: {\n mysql: `VARCHAR(${col.length ?? 255})`,\n mariadb: `VARCHAR(${col.length ?? 255})`,\n sqlite: \"TEXT\",\n file: \"VARCHAR\",\n },\n char: {\n mysql: `CHAR(${col.length ?? 1})`,\n mariadb: `CHAR(${col.length ?? 1})`,\n sqlite: \"TEXT\",\n file: \"CHAR\",\n },\n text: { mysql: \"TEXT\", mariadb: \"TEXT\", sqlite: \"TEXT\", file: \"TEXT\" },\n boolean: { mysql: \"TINYINT(1)\", mariadb: \"TINYINT(1)\", sqlite: \"INTEGER\", file: \"BOOLEAN\" },\n json: { mysql: \"JSON\", mariadb: \"JSON\", sqlite: \"TEXT\", file: \"JSON\" },\n datetime: { mysql: \"DATETIME\", mariadb: \"DATETIME\", sqlite: \"TEXT\", file: \"DATETIME\" },\n timestamp: { mysql: \"TIMESTAMP\", mariadb: \"TIMESTAMP\", sqlite: \"TEXT\", file: \"TIMESTAMP\" },\n decimal: {\n mysql: `DECIMAL(${col.precision ?? 10},${col.scale ?? 2})`,\n mariadb: `DECIMAL(${col.precision ?? 10},${col.scale ?? 2})`,\n sqlite: \"REAL\",\n file: \"DECIMAL\",\n },\n float: { mysql: \"FLOAT\", mariadb: \"FLOAT\", sqlite: \"REAL\", file: \"FLOAT\" },\n blob: { mysql: \"BLOB\", mariadb: \"BLOB\", sqlite: \"BLOB\", file: \"BLOB\" },\n };\n\n return typeMap[col.type]?.[name] ?? \"TEXT\";\n}\n\n/**\n * Compile a column definition to a SQL fragment\n * @param {ColumnMetadata} col - Column metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} SQL column definition\n */\nexport function compileColumnDef(col: ColumnMetadata, dialect: DatabaseType): string {\n const parts: string[] = [`\\`${col.name}\\``, compileColumnType(col, dialect)];\n\n if (col.primaryKey) {\n parts.push(\"PRIMARY KEY\");\n }\n if (col.autoIncrement) {\n parts.push(dialect === \"mysql\" ? \"AUTO_INCREMENT\" : \"AUTOINCREMENT\");\n }\n if (col.notNull && !col.primaryKey) {\n parts.push(\"NOT NULL\");\n }\n if (col.unique && !col.primaryKey) {\n parts.push(\"UNIQUE\");\n }\n if (col.defaultValue !== undefined) {\n if (typeof col.defaultValue === \"string\") {\n parts.push(`DEFAULT '${col.defaultValue}'`);\n } else if (col.defaultValue === null) {\n parts.push(\"DEFAULT NULL\");\n } else {\n parts.push(`DEFAULT ${col.defaultValue}`);\n }\n }\n\n return parts.join(\" \");\n}\n\n/**\n * Compile a CREATE TABLE statement from table metadata\n * @param {TableMetadata} table - Table metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} CREATE TABLE SQL statement\n */\nexport function compileCreateTable(table: TableMetadata, dialect: DatabaseType): string {\n const columnDefs: string[] = [];\n const constraints: string[] = [];\n\n for (const col of table.columns) {\n columnDefs.push(compileColumnDef(col, dialect));\n\n if (col.references) {\n const onDelete = col.references.onDelete ? ` ON DELETE ${col.references.onDelete}` : \"\";\n const onUpdate = col.references.onUpdate ? ` ON UPDATE ${col.references.onUpdate}` : \"\";\n constraints.push(\n `FOREIGN KEY (\\`${col.name}\\`) REFERENCES \\`${col.references.table}\\`(\\`${col.references.column}\\`)${onDelete}${onUpdate}`,\n );\n }\n }\n\n const allDefs = [...columnDefs, ...constraints].join(\", \");\n return `CREATE TABLE IF NOT EXISTS \\`${table.name}\\` (${allDefs})`;\n}\n\n/**\n * Compile a WHERE clause from a condition object\n * @param {WhereClause} where - Where clause object\n * @param {unknown[]} params - Parameter array to push values into\n * @returns {string} SQL WHERE fragment\n */\nexport function compileWhere(where: WhereClause, params: unknown[]): string {\n const conditions: string[] = [];\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"OR\" && Array.isArray(value)) {\n const orParts = (value as WhereClause[]).map((sub) => compileWhere(sub, params));\n if (orParts.length > 0) {\n conditions.push(`(${orParts.join(\" OR \")})`);\n }\n continue;\n }\n if (key === \"AND\" && Array.isArray(value)) {\n const andParts = (value as WhereClause[]).map((sub) => compileWhere(sub, params));\n if (andParts.length > 0) {\n conditions.push(`(${andParts.join(\" AND \")})`);\n }\n continue;\n }\n\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n const cond = value as WhereCondition;\n if (cond.eq !== undefined) {\n params.push(cond.eq);\n conditions.push(`\\`${key}\\` = ?`);\n }\n if (cond.neq !== undefined) {\n params.push(cond.neq);\n conditions.push(`\\`${key}\\` != ?`);\n }\n if (cond.gt !== undefined) {\n params.push(cond.gt);\n conditions.push(`\\`${key}\\` > ?`);\n }\n if (cond.gte !== undefined) {\n params.push(cond.gte);\n conditions.push(`\\`${key}\\` >= ?`);\n }\n if (cond.lt !== undefined) {\n params.push(cond.lt);\n conditions.push(`\\`${key}\\` < ?`);\n }\n if (cond.lte !== undefined) {\n params.push(cond.lte);\n conditions.push(`\\`${key}\\` <= ?`);\n }\n if (cond.like !== undefined) {\n params.push(cond.like);\n conditions.push(`\\`${key}\\` LIKE ?`);\n }\n if (cond.notLike !== undefined) {\n params.push(cond.notLike);\n conditions.push(`\\`${key}\\` NOT LIKE ?`);\n }\n if (cond.in !== undefined && Array.isArray(cond.in)) {\n const placeholders = cond.in.map(() => \"?\").join(\", \");\n params.push(...cond.in);\n conditions.push(`\\`${key}\\` IN (${placeholders})`);\n }\n if (cond.notIn !== undefined && Array.isArray(cond.notIn)) {\n const placeholders = cond.notIn.map(() => \"?\").join(\", \");\n params.push(...cond.notIn);\n conditions.push(`\\`${key}\\` NOT IN (${placeholders})`);\n }\n if (cond.isNull === true) {\n conditions.push(`\\`${key}\\` IS NULL`);\n }\n if (cond.isNull === false) {\n conditions.push(`\\`${key}\\` IS NOT NULL`);\n }\n if (cond.between !== undefined && Array.isArray(cond.between)) {\n params.push(cond.between[0], cond.between[1]);\n conditions.push(`\\`${key}\\` BETWEEN ? AND ?`);\n }\n } else {\n params.push(value);\n conditions.push(`\\`${key}\\` = ?`);\n }\n }\n\n return conditions.length > 0 ? conditions.join(\" AND \") : \"1=1\";\n}\n\n/**\n * Compile a SELECT query from options\n * @param {string} tableName - Table name\n * @param {object} options - Query options\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL SELECT statement\n */\nexport function compileSelect(\n tableName: string,\n options: {\n select?: string[];\n where?: WhereClause;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n take?: number;\n skip?: number;\n },\n params: unknown[],\n): string {\n const cols = options.select?.map((c) => `\\`${String(c)}\\``).join(\", \") ?? \"*\";\n let sql = `SELECT ${cols} FROM \\`${tableName}\\``;\n\n if (options.where && Object.keys(options.where).length > 0) {\n sql += ` WHERE ${compileWhere(options.where, params)}`;\n }\n if (options.orderBy) {\n const orderParts = Object.entries(options.orderBy).map(\n ([col, dir]) => `\\`${col}\\` ${dir.toUpperCase()}`,\n );\n if (orderParts.length > 0) {\n sql += ` ORDER BY ${orderParts.join(\", \")}`;\n }\n }\n if (options.take !== undefined) {\n sql += ` LIMIT ${options.take}`;\n }\n if (options.skip !== undefined) {\n sql += ` OFFSET ${options.skip}`;\n }\n\n return sql;\n}\n\n/**\n * Compile an INSERT statement\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>} data - Data to insert\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL INSERT statement\n */\nexport function compileInsert(\n tableName: string,\n data: Record<string, unknown>,\n params: unknown[],\n): string {\n const keys = Object.keys(data);\n const cols = keys.map((k) => `\\`${k}\\``).join(\", \");\n const placeholders = keys.map(() => \"?\").join(\", \");\n params.push(...keys.map((k) => data[k]));\n return `INSERT INTO \\`${tableName}\\` (${cols}) VALUES (${placeholders})`;\n}\n\n/**\n * Compile a bulk INSERT statement for multiple rows\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>[]} data - Array of data to insert\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL bulk INSERT statement\n */\nexport function compileBulkInsert(\n tableName: string,\n data: Record<string, unknown>[],\n params: unknown[],\n): string {\n if (data.length === 0) {\n return \"\";\n }\n const keys = Object.keys(data[0]!);\n const cols = keys.map((k) => `\\`${k}\\``).join(\", \");\n const valuePlaceholders = data.map(() => `(${keys.map(() => \"?\").join(\", \")})`).join(\", \");\n\n for (const row of data) {\n for (const key of keys) {\n params.push(row[key]);\n }\n }\n\n return `INSERT INTO \\`${tableName}\\` (${cols}) VALUES ${valuePlaceholders}`;\n}\n\n/**\n * Compile an UPDATE statement\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>} data - Data to update\n * @param {WhereClause} where - Where clause\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL UPDATE statement\n */\nexport function compileUpdate(\n tableName: string,\n data: Record<string, unknown>,\n where: WhereClause,\n params: unknown[],\n): string {\n const setParts = Object.keys(data).map((k) => {\n params.push(data[k]);\n return `\\`${k}\\` = ?`;\n });\n let sql = `UPDATE \\`${tableName}\\` SET ${setParts.join(\", \")}`;\n if (Object.keys(where).length > 0) {\n sql += ` WHERE ${compileWhere(where, params)}`;\n }\n return sql;\n}\n\n/**\n * Compile a DELETE statement\n * @param {string} tableName - Table name\n * @param {WhereClause} where - Where clause\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL DELETE statement\n */\nexport function compileDelete(tableName: string, where: WhereClause, params: unknown[]): string {\n let sql = `DELETE FROM \\`${tableName}\\``;\n if (Object.keys(where).length > 0) {\n sql += ` WHERE ${compileWhere(where, params)}`;\n }\n return sql;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql-compiler.mjs","names":[],"sources":["../../src/drivers/sql-compiler.ts"],"sourcesContent":["import type {\n ColumnDataType,\n ColumnMetadata,\n DatabaseType,\n TableMetadata,\n WhereClause,\n WhereCondition,\n} from \"../types\";\n\n/**\n * Compile column type to SQL string for a specific database dialect\n * @param {ColumnMetadata} col - Column metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} SQL column type string\n */\nexport function compileColumnType(col: ColumnMetadata, dialect: DatabaseType): string {\n const name = typeof dialect === \"string\" ? dialect : dialect.name;\n\n const typeMap: Record<ColumnDataType, Record<string, string>> = {\n integer: { mysql: \"INT\", mariadb: \"INT\", sqlite: \"INTEGER\", file: \"INTEGER\" },\n bigint: { mysql: \"BIGINT\", mariadb: \"BIGINT\", sqlite: \"INTEGER\", file: \"BIGINT\" },\n varchar: {\n mysql: `VARCHAR(${col.length ?? 255})`,\n mariadb: `VARCHAR(${col.length ?? 255})`,\n sqlite: \"TEXT\",\n file: \"VARCHAR\",\n },\n char: {\n mysql: `CHAR(${col.length ?? 1})`,\n mariadb: `CHAR(${col.length ?? 1})`,\n sqlite: \"TEXT\",\n file: \"CHAR\",\n },\n text: { mysql: \"TEXT\", mariadb: \"TEXT\", sqlite: \"TEXT\", file: \"TEXT\" },\n boolean: { mysql: \"TINYINT(1)\", mariadb: \"TINYINT(1)\", sqlite: \"INTEGER\", file: \"BOOLEAN\" },\n json: { mysql: \"JSON\", mariadb: \"JSON\", sqlite: \"TEXT\", file: \"JSON\" },\n array: { mysql: \"JSON\", mariadb: \"JSON\", sqlite: \"TEXT\", file: \"JSON\" },\n datetime: { mysql: \"DATETIME\", mariadb: \"DATETIME\", sqlite: \"TEXT\", file: \"DATETIME\" },\n timestamp: { mysql: \"TIMESTAMP\", mariadb: \"TIMESTAMP\", sqlite: \"TEXT\", file: \"TIMESTAMP\" },\n decimal: {\n mysql: `DECIMAL(${col.precision ?? 10},${col.scale ?? 2})`,\n mariadb: `DECIMAL(${col.precision ?? 10},${col.scale ?? 2})`,\n sqlite: \"REAL\",\n file: \"DECIMAL\",\n },\n float: { mysql: \"FLOAT\", mariadb: \"FLOAT\", sqlite: \"REAL\", file: \"FLOAT\" },\n blob: { mysql: \"BLOB\", mariadb: \"BLOB\", sqlite: \"BLOB\", file: \"BLOB\" },\n };\n\n return typeMap[col.type]?.[name] ?? \"TEXT\";\n}\n\n/**\n * Compile a column definition to a SQL fragment\n * @param {ColumnMetadata} col - Column metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} SQL column definition\n */\nexport function compileColumnDef(col: ColumnMetadata, dialect: DatabaseType): string {\n const parts: string[] = [`\\`${col.name}\\``, compileColumnType(col, dialect)];\n\n if (col.primaryKey) {\n parts.push(\"PRIMARY KEY\");\n }\n if (col.autoIncrement) {\n parts.push(dialect === \"mysql\" ? \"AUTO_INCREMENT\" : \"AUTOINCREMENT\");\n }\n if (col.notNull && !col.primaryKey) {\n parts.push(\"NOT NULL\");\n }\n if (col.unique && !col.primaryKey) {\n parts.push(\"UNIQUE\");\n }\n if (col.defaultValue !== undefined) {\n if (typeof col.defaultValue === \"string\") {\n parts.push(`DEFAULT '${col.defaultValue}'`);\n } else if (col.defaultValue === null) {\n parts.push(\"DEFAULT NULL\");\n } else {\n parts.push(`DEFAULT ${col.defaultValue}`);\n }\n }\n\n return parts.join(\" \");\n}\n\n/**\n * Compile a CREATE TABLE statement from table metadata\n * @param {TableMetadata} table - Table metadata\n * @param {DatabaseType} dialect - Database dialect\n * @returns {string} CREATE TABLE SQL statement\n */\nexport function compileCreateTable(table: TableMetadata, dialect: DatabaseType): string {\n const columnDefs: string[] = [];\n const constraints: string[] = [];\n\n for (const col of table.columns) {\n columnDefs.push(compileColumnDef(col, dialect));\n\n if (col.references) {\n const onDelete = col.references.onDelete ? ` ON DELETE ${col.references.onDelete}` : \"\";\n const onUpdate = col.references.onUpdate ? ` ON UPDATE ${col.references.onUpdate}` : \"\";\n constraints.push(\n `FOREIGN KEY (\\`${col.name}\\`) REFERENCES \\`${col.references.table}\\`(\\`${col.references.column}\\`)${onDelete}${onUpdate}`,\n );\n }\n }\n\n const allDefs = [...columnDefs, ...constraints].join(\", \");\n return `CREATE TABLE IF NOT EXISTS \\`${table.name}\\` (${allDefs})`;\n}\n\n/**\n * Compile a WHERE clause from a condition object\n * @param {WhereClause} where - Where clause object\n * @param {unknown[]} params - Parameter array to push values into\n * @returns {string} SQL WHERE fragment\n */\nexport function compileWhere(where: WhereClause, params: unknown[]): string {\n const conditions: string[] = [];\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"OR\" && Array.isArray(value)) {\n const orParts = (value as WhereClause[]).map((sub) => compileWhere(sub, params));\n if (orParts.length > 0) {\n conditions.push(`(${orParts.join(\" OR \")})`);\n }\n continue;\n }\n if (key === \"AND\" && Array.isArray(value)) {\n const andParts = (value as WhereClause[]).map((sub) => compileWhere(sub, params));\n if (andParts.length > 0) {\n conditions.push(`(${andParts.join(\" AND \")})`);\n }\n continue;\n }\n\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n const cond = value as WhereCondition;\n if (cond.eq !== undefined) {\n params.push(cond.eq);\n conditions.push(`\\`${key}\\` = ?`);\n }\n if (cond.neq !== undefined) {\n params.push(cond.neq);\n conditions.push(`\\`${key}\\` != ?`);\n }\n if (cond.gt !== undefined) {\n params.push(cond.gt);\n conditions.push(`\\`${key}\\` > ?`);\n }\n if (cond.gte !== undefined) {\n params.push(cond.gte);\n conditions.push(`\\`${key}\\` >= ?`);\n }\n if (cond.lt !== undefined) {\n params.push(cond.lt);\n conditions.push(`\\`${key}\\` < ?`);\n }\n if (cond.lte !== undefined) {\n params.push(cond.lte);\n conditions.push(`\\`${key}\\` <= ?`);\n }\n if (cond.like !== undefined) {\n params.push(cond.like);\n conditions.push(`\\`${key}\\` LIKE ?`);\n }\n if (cond.notLike !== undefined) {\n params.push(cond.notLike);\n conditions.push(`\\`${key}\\` NOT LIKE ?`);\n }\n if (cond.in !== undefined && Array.isArray(cond.in)) {\n const placeholders = cond.in.map(() => \"?\").join(\", \");\n params.push(...cond.in);\n conditions.push(`\\`${key}\\` IN (${placeholders})`);\n }\n if (cond.notIn !== undefined && Array.isArray(cond.notIn)) {\n const placeholders = cond.notIn.map(() => \"?\").join(\", \");\n params.push(...cond.notIn);\n conditions.push(`\\`${key}\\` NOT IN (${placeholders})`);\n }\n if (cond.isNull === true) {\n conditions.push(`\\`${key}\\` IS NULL`);\n }\n if (cond.isNull === false) {\n conditions.push(`\\`${key}\\` IS NOT NULL`);\n }\n if (cond.between !== undefined && Array.isArray(cond.between)) {\n params.push(cond.between[0], cond.between[1]);\n conditions.push(`\\`${key}\\` BETWEEN ? AND ?`);\n }\n } else {\n params.push(value);\n conditions.push(`\\`${key}\\` = ?`);\n }\n }\n\n return conditions.length > 0 ? conditions.join(\" AND \") : \"1=1\";\n}\n\n/**\n * Compile a SELECT query from options\n * @param {string} tableName - Table name\n * @param {object} options - Query options\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL SELECT statement\n */\nexport function compileSelect(\n tableName: string,\n options: {\n select?: string[];\n where?: WhereClause;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n take?: number;\n skip?: number;\n },\n params: unknown[],\n): string {\n const cols = options.select?.map((c) => `\\`${String(c)}\\``).join(\", \") ?? \"*\";\n let sql = `SELECT ${cols} FROM \\`${tableName}\\``;\n\n if (options.where && Object.keys(options.where).length > 0) {\n sql += ` WHERE ${compileWhere(options.where, params)}`;\n }\n if (options.orderBy) {\n const orderParts = Object.entries(options.orderBy).map(\n ([col, dir]) => `\\`${col}\\` ${dir.toUpperCase()}`,\n );\n if (orderParts.length > 0) {\n sql += ` ORDER BY ${orderParts.join(\", \")}`;\n }\n }\n if (options.take !== undefined) {\n sql += ` LIMIT ${options.take}`;\n }\n if (options.skip !== undefined) {\n sql += ` OFFSET ${options.skip}`;\n }\n\n return sql;\n}\n\n/**\n * Compile an INSERT statement\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>} data - Data to insert\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL INSERT statement\n */\nexport function compileInsert(\n tableName: string,\n data: Record<string, unknown>,\n params: unknown[],\n): string {\n const keys = Object.keys(data);\n const cols = keys.map((k) => `\\`${k}\\``).join(\", \");\n const placeholders = keys.map(() => \"?\").join(\", \");\n params.push(...keys.map((k) => data[k]));\n return `INSERT INTO \\`${tableName}\\` (${cols}) VALUES (${placeholders})`;\n}\n\n/**\n * Compile a bulk INSERT statement for multiple rows\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>[]} data - Array of data to insert\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL bulk INSERT statement\n */\nexport function compileBulkInsert(\n tableName: string,\n data: Record<string, unknown>[],\n params: unknown[],\n): string {\n if (data.length === 0) {\n return \"\";\n }\n const keys = Object.keys(data[0]!);\n const cols = keys.map((k) => `\\`${k}\\``).join(\", \");\n const valuePlaceholders = data.map(() => `(${keys.map(() => \"?\").join(\", \")})`).join(\", \");\n\n for (const row of data) {\n for (const key of keys) {\n params.push(row[key]);\n }\n }\n\n return `INSERT INTO \\`${tableName}\\` (${cols}) VALUES ${valuePlaceholders}`;\n}\n\n/**\n * Compile an UPDATE statement\n * @param {string} tableName - Table name\n * @param {Record<string, unknown>} data - Data to update\n * @param {WhereClause} where - Where clause\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL UPDATE statement\n */\nexport function compileUpdate(\n tableName: string,\n data: Record<string, unknown>,\n where: WhereClause,\n params: unknown[],\n): string {\n const setParts = Object.keys(data).map((k) => {\n params.push(data[k]);\n return `\\`${k}\\` = ?`;\n });\n let sql = `UPDATE \\`${tableName}\\` SET ${setParts.join(\", \")}`;\n if (Object.keys(where).length > 0) {\n sql += ` WHERE ${compileWhere(where, params)}`;\n }\n return sql;\n}\n\n/**\n * Compile a DELETE statement\n * @param {string} tableName - Table name\n * @param {WhereClause} where - Where clause\n * @param {unknown[]} params - Parameter array\n * @returns {string} SQL DELETE statement\n */\nexport function compileDelete(tableName: string, where: WhereClause, params: unknown[]): string {\n let sql = `DELETE FROM \\`${tableName}\\``;\n if (Object.keys(where).length > 0) {\n sql += ` WHERE ${compileWhere(where, params)}`;\n }\n return sql;\n}\n"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -31,6 +31,7 @@ exports.SchemaRegistry = require_registry.SchemaRegistry;
|
|
|
31
31
|
exports.SyncError = require_errors.SyncError;
|
|
32
32
|
exports.Synchronizer = require_synchronizer.Synchronizer;
|
|
33
33
|
exports.TableRepository = require_repository.TableRepository;
|
|
34
|
+
exports.array = require_index$1.array;
|
|
34
35
|
exports.bigint = require_index$1.bigint;
|
|
35
36
|
exports.blob = require_index$1.blob;
|
|
36
37
|
exports.boolean = require_index$1.boolean;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["database"],"sources":["../src/index.ts"],"sourcesContent":["import { CacheManager } from \"./cache\";\nimport { database } from \"./core/database\";\nimport { TableRepository } from \"./core/repository\";\nimport { createDriver } from \"./drivers\";\nimport {\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n} from \"./drivers/sql-compiler\";\nimport { migration } from \"./migrations/definition\";\nimport { generateMigrationTemplate, generateSchemaTemplate } from \"./migrations/templates\";\nimport { ColumnBuilder } from \"./schema/column\";\nimport * as columns from \"./schema/columns\";\nimport { SchemaRegistry } from \"./schema/registry\";\nimport { table } from \"./schema/table\";\nimport { Synchronizer } from \"./sync/synchronizer\";\n\nexport {\n CacheError,\n DatabaseError,\n DriverError,\n MigrationError,\n QueryError,\n SchemaError,\n SyncError,\n} from \"./errors\";\nexport * from \"./schema/columns\";\nexport type {\n CacheConfig,\n ColumnDataType,\n ColumnMetadata,\n ConnectionConfig,\n DatabaseConfig,\n DatabaseDriver,\n DatabaseType,\n DeferredRefMeta,\n DeleteOptions,\n FileConnectionConfig,\n InferInsert,\n InferRow,\n InferUpdate,\n MigrationContext,\n MigrationDefinition,\n MySQLConnectionConfig,\n QueryOptions,\n ReferenceAction,\n RelationQueryMap,\n RelationsFor,\n Repository,\n ResolveResult,\n SQLiteConnectionConfig,\n TableDefinition,\n TableMetadata,\n UpdateOptions,\n WhereClause,\n WhereCondition,\n} from \"./types\";\nexport {\n CacheManager,\n ColumnBuilder,\n columns,\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n createDriver,\n database,\n generateMigrationTemplate,\n generateSchemaTemplate,\n migration,\n SchemaRegistry,\n Synchronizer,\n TableRepository,\n table,\n};\n\nexport default database;\n"],"mappings":";;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["database"],"sources":["../src/index.ts"],"sourcesContent":["import { CacheManager } from \"./cache\";\nimport { database } from \"./core/database\";\nimport { TableRepository } from \"./core/repository\";\nimport { createDriver } from \"./drivers\";\nimport {\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n} from \"./drivers/sql-compiler\";\nimport { migration } from \"./migrations/definition\";\nimport { generateMigrationTemplate, generateSchemaTemplate } from \"./migrations/templates\";\nimport { ColumnBuilder } from \"./schema/column\";\nimport * as columns from \"./schema/columns\";\nimport { SchemaRegistry } from \"./schema/registry\";\nimport { table } from \"./schema/table\";\nimport { Synchronizer } from \"./sync/synchronizer\";\n\nexport {\n CacheError,\n DatabaseError,\n DriverError,\n MigrationError,\n QueryError,\n SchemaError,\n SyncError,\n} from \"./errors\";\nexport * from \"./schema/columns\";\nexport type {\n CacheConfig,\n ColumnDataType,\n ColumnMetadata,\n ConnectionConfig,\n DatabaseConfig,\n DatabaseDriver,\n DatabaseType,\n DeferredRefMeta,\n DeleteOptions,\n FileConnectionConfig,\n InferInsert,\n InferRow,\n InferUpdate,\n MigrationContext,\n MigrationDefinition,\n MySQLConnectionConfig,\n QueryOptions,\n ReferenceAction,\n RelationQueryMap,\n RelationsFor,\n Repository,\n ResolveResult,\n SQLiteConnectionConfig,\n TableCacheConfig,\n TableDefinition,\n TableMetadata,\n UpdateOptions,\n WhereClause,\n WhereCondition,\n} from \"./types\";\nexport {\n CacheManager,\n ColumnBuilder,\n columns,\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n createDriver,\n database,\n generateMigrationTemplate,\n generateSchemaTemplate,\n migration,\n SchemaRegistry,\n Synchronizer,\n TableRepository,\n table,\n};\n\nexport default database;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoFA,IAAA,cAAeA,iBAAAA"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition } from "./types.cjs";
|
|
1
|
+
import { CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableCacheConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition } from "./types.cjs";
|
|
2
2
|
import { CacheManager } from "./cache/manager.cjs";
|
|
3
3
|
import { ColumnBuilder } from "./schema/column.cjs";
|
|
4
|
-
import { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.cjs";
|
|
4
|
+
import { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.cjs";
|
|
5
5
|
import { SchemaRegistry } from "./schema/registry.cjs";
|
|
6
6
|
import { table } from "./schema/table.cjs";
|
|
7
7
|
import { database } from "./core/database.cjs";
|
|
@@ -12,4 +12,4 @@ import { migration } from "./migrations/definition.cjs";
|
|
|
12
12
|
import { generateMigrationTemplate, generateSchemaTemplate } from "./migrations/templates.cjs";
|
|
13
13
|
import { Synchronizer } from "./sync/synchronizer.cjs";
|
|
14
14
|
import { CacheError, DatabaseError, DriverError, MigrationError, QueryError, SchemaError, SyncError } from "./errors.cjs";
|
|
15
|
-
export { type CacheConfig, CacheError, CacheManager, ColumnBuilder, type ColumnDataType, type ColumnMetadata, type ConnectionConfig, type DatabaseConfig, type DatabaseDriver, DatabaseError, type DatabaseType, type DeferredRefMeta, type DeleteOptions, DriverError, type FileConnectionConfig, type InferInsert, type InferRow, type InferUpdate, type MigrationContext, type MigrationDefinition, MigrationError, type MySQLConnectionConfig, NamedColumnStarter, QueryError, type QueryOptions, type ReferenceAction, type RelationQueryMap, type RelationsFor, type Repository, type ResolveResult, type SQLiteConnectionConfig, SchemaError, SchemaRegistry, SyncError, Synchronizer, type TableDefinition, type TableMetadata, TableRepository, type UpdateOptions, type WhereClause, type WhereCondition, bigint, blob, boolean, char, index_d_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, database as default, datetime, decimal, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
|
15
|
+
export { type CacheConfig, CacheError, CacheManager, ColumnBuilder, type ColumnDataType, type ColumnMetadata, type ConnectionConfig, type DatabaseConfig, type DatabaseDriver, DatabaseError, type DatabaseType, type DeferredRefMeta, type DeleteOptions, DriverError, type FileConnectionConfig, type InferInsert, type InferRow, type InferUpdate, type MigrationContext, type MigrationDefinition, MigrationError, type MySQLConnectionConfig, NamedColumnStarter, QueryError, type QueryOptions, type ReferenceAction, type RelationQueryMap, type RelationsFor, type Repository, type ResolveResult, type SQLiteConnectionConfig, SchemaError, SchemaRegistry, SyncError, Synchronizer, type TableCacheConfig, type TableDefinition, type TableMetadata, TableRepository, type UpdateOptions, type WhereClause, type WhereCondition, array, bigint, blob, boolean, char, index_d_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, database as default, datetime, decimal, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition } from "./types.mjs";
|
|
1
|
+
import { CacheConfig, ColumnDataType, ColumnMetadata, ConnectionConfig, DatabaseConfig, DatabaseDriver, DatabaseType, DeferredRefMeta, DeleteOptions, FileConnectionConfig, InferInsert, InferRow, InferUpdate, MigrationContext, MigrationDefinition, MySQLConnectionConfig, QueryOptions, ReferenceAction, RelationQueryMap, RelationsFor, Repository, ResolveResult, SQLiteConnectionConfig, TableCacheConfig, TableDefinition, TableMetadata, UpdateOptions, WhereClause, WhereCondition } from "./types.mjs";
|
|
2
2
|
import { CacheManager } from "./cache/manager.mjs";
|
|
3
3
|
import { ColumnBuilder } from "./schema/column.mjs";
|
|
4
|
-
import { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.mjs";
|
|
4
|
+
import { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.mjs";
|
|
5
5
|
import { SchemaRegistry } from "./schema/registry.mjs";
|
|
6
6
|
import { table } from "./schema/table.mjs";
|
|
7
7
|
import { database } from "./core/database.mjs";
|
|
@@ -12,4 +12,4 @@ import { migration } from "./migrations/definition.mjs";
|
|
|
12
12
|
import { generateMigrationTemplate, generateSchemaTemplate } from "./migrations/templates.mjs";
|
|
13
13
|
import { Synchronizer } from "./sync/synchronizer.mjs";
|
|
14
14
|
import { CacheError, DatabaseError, DriverError, MigrationError, QueryError, SchemaError, SyncError } from "./errors.mjs";
|
|
15
|
-
export { type CacheConfig, CacheError, CacheManager, ColumnBuilder, type ColumnDataType, type ColumnMetadata, type ConnectionConfig, type DatabaseConfig, type DatabaseDriver, DatabaseError, type DatabaseType, type DeferredRefMeta, type DeleteOptions, DriverError, type FileConnectionConfig, type InferInsert, type InferRow, type InferUpdate, type MigrationContext, type MigrationDefinition, MigrationError, type MySQLConnectionConfig, NamedColumnStarter, QueryError, type QueryOptions, type ReferenceAction, type RelationQueryMap, type RelationsFor, type Repository, type ResolveResult, type SQLiteConnectionConfig, SchemaError, SchemaRegistry, SyncError, Synchronizer, type TableDefinition, type TableMetadata, TableRepository, type UpdateOptions, type WhereClause, type WhereCondition, bigint, blob, boolean, char, index_d_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, database as default, datetime, decimal, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
|
15
|
+
export { type CacheConfig, CacheError, CacheManager, ColumnBuilder, type ColumnDataType, type ColumnMetadata, type ConnectionConfig, type DatabaseConfig, type DatabaseDriver, DatabaseError, type DatabaseType, type DeferredRefMeta, type DeleteOptions, DriverError, type FileConnectionConfig, type InferInsert, type InferRow, type InferUpdate, type MigrationContext, type MigrationDefinition, MigrationError, type MySQLConnectionConfig, NamedColumnStarter, QueryError, type QueryOptions, type ReferenceAction, type RelationQueryMap, type RelationsFor, type Repository, type ResolveResult, type SQLiteConnectionConfig, SchemaError, SchemaRegistry, SyncError, Synchronizer, type TableCacheConfig, type TableDefinition, type TableMetadata, TableRepository, type UpdateOptions, type WhereClause, type WhereCondition, array, bigint, blob, boolean, char, index_d_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, database as default, datetime, decimal, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { CacheError, DatabaseError, DriverError, MigrationError, QueryError, Sch
|
|
|
3
3
|
import { compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere } from "./drivers/sql-compiler.mjs";
|
|
4
4
|
import { createDriver } from "./drivers/index.mjs";
|
|
5
5
|
import { ColumnBuilder } from "./schema/column.mjs";
|
|
6
|
-
import { NamedColumnStarter, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.mjs";
|
|
6
|
+
import { NamedColumnStarter, array, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar } from "./schema/columns/index.mjs";
|
|
7
7
|
import { SchemaRegistry } from "./schema/registry.mjs";
|
|
8
8
|
import { table } from "./schema/table.mjs";
|
|
9
9
|
import { TableRepository } from "./core/repository.mjs";
|
|
@@ -16,6 +16,6 @@ init_definition();
|
|
|
16
16
|
init_templates();
|
|
17
17
|
var src_default = database;
|
|
18
18
|
//#endregion
|
|
19
|
-
export { CacheError, CacheManager, ColumnBuilder, DatabaseError, DriverError, MigrationError, NamedColumnStarter, QueryError, SchemaError, SchemaRegistry, SyncError, Synchronizer, TableRepository, bigint, blob, boolean, char, columns_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, datetime, decimal, src_default as default, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
|
19
|
+
export { CacheError, CacheManager, ColumnBuilder, DatabaseError, DriverError, MigrationError, NamedColumnStarter, QueryError, SchemaError, SchemaRegistry, SyncError, Synchronizer, TableRepository, array, bigint, blob, boolean, char, columns_exports as columns, compileColumnDef, compileCreateTable, compileDelete, compileInsert, compileSelect, compileUpdate, compileWhere, createDriver, d, database, datetime, decimal, src_default as default, float, generateMigrationTemplate, generateSchemaTemplate, integer, json, migration, name, table, text, timestamp, varchar };
|
|
20
20
|
|
|
21
21
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { CacheManager } from \"./cache\";\nimport { database } from \"./core/database\";\nimport { TableRepository } from \"./core/repository\";\nimport { createDriver } from \"./drivers\";\nimport {\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n} from \"./drivers/sql-compiler\";\nimport { migration } from \"./migrations/definition\";\nimport { generateMigrationTemplate, generateSchemaTemplate } from \"./migrations/templates\";\nimport { ColumnBuilder } from \"./schema/column\";\nimport * as columns from \"./schema/columns\";\nimport { SchemaRegistry } from \"./schema/registry\";\nimport { table } from \"./schema/table\";\nimport { Synchronizer } from \"./sync/synchronizer\";\n\nexport {\n CacheError,\n DatabaseError,\n DriverError,\n MigrationError,\n QueryError,\n SchemaError,\n SyncError,\n} from \"./errors\";\nexport * from \"./schema/columns\";\nexport type {\n CacheConfig,\n ColumnDataType,\n ColumnMetadata,\n ConnectionConfig,\n DatabaseConfig,\n DatabaseDriver,\n DatabaseType,\n DeferredRefMeta,\n DeleteOptions,\n FileConnectionConfig,\n InferInsert,\n InferRow,\n InferUpdate,\n MigrationContext,\n MigrationDefinition,\n MySQLConnectionConfig,\n QueryOptions,\n ReferenceAction,\n RelationQueryMap,\n RelationsFor,\n Repository,\n ResolveResult,\n SQLiteConnectionConfig,\n TableDefinition,\n TableMetadata,\n UpdateOptions,\n WhereClause,\n WhereCondition,\n} from \"./types\";\nexport {\n CacheManager,\n ColumnBuilder,\n columns,\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n createDriver,\n database,\n generateMigrationTemplate,\n generateSchemaTemplate,\n migration,\n SchemaRegistry,\n Synchronizer,\n TableRepository,\n table,\n};\n\nexport default database;\n"],"mappings":";;;;;;;;;;;;;;iBAaoD;gBACuC;
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import { CacheManager } from \"./cache\";\nimport { database } from \"./core/database\";\nimport { TableRepository } from \"./core/repository\";\nimport { createDriver } from \"./drivers\";\nimport {\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n} from \"./drivers/sql-compiler\";\nimport { migration } from \"./migrations/definition\";\nimport { generateMigrationTemplate, generateSchemaTemplate } from \"./migrations/templates\";\nimport { ColumnBuilder } from \"./schema/column\";\nimport * as columns from \"./schema/columns\";\nimport { SchemaRegistry } from \"./schema/registry\";\nimport { table } from \"./schema/table\";\nimport { Synchronizer } from \"./sync/synchronizer\";\n\nexport {\n CacheError,\n DatabaseError,\n DriverError,\n MigrationError,\n QueryError,\n SchemaError,\n SyncError,\n} from \"./errors\";\nexport * from \"./schema/columns\";\nexport type {\n CacheConfig,\n ColumnDataType,\n ColumnMetadata,\n ConnectionConfig,\n DatabaseConfig,\n DatabaseDriver,\n DatabaseType,\n DeferredRefMeta,\n DeleteOptions,\n FileConnectionConfig,\n InferInsert,\n InferRow,\n InferUpdate,\n MigrationContext,\n MigrationDefinition,\n MySQLConnectionConfig,\n QueryOptions,\n ReferenceAction,\n RelationQueryMap,\n RelationsFor,\n Repository,\n ResolveResult,\n SQLiteConnectionConfig,\n TableCacheConfig,\n TableDefinition,\n TableMetadata,\n UpdateOptions,\n WhereClause,\n WhereCondition,\n} from \"./types\";\nexport {\n CacheManager,\n ColumnBuilder,\n columns,\n compileColumnDef,\n compileCreateTable,\n compileDelete,\n compileInsert,\n compileSelect,\n compileUpdate,\n compileWhere,\n createDriver,\n database,\n generateMigrationTemplate,\n generateSchemaTemplate,\n migration,\n SchemaRegistry,\n Synchronizer,\n TableRepository,\n table,\n};\n\nexport default database;\n"],"mappings":";;;;;;;;;;;;;;iBAaoD;gBACuC;AAsE3F,IAAA,cAAe"}
|
package/dist/schema/column.cjs
CHANGED
|
@@ -105,7 +105,7 @@ var ColumnBuilder = class {
|
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* Add a foreign key reference to another table's column
|
|
108
|
-
* @param {() => ColumnBuilder<any>} ref - A function returning
|
|
108
|
+
* @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one
|
|
109
109
|
* @param {object} [options] - Reference options
|
|
110
110
|
* @param {ReferenceAction} [options.onDelete] - Action on delete
|
|
111
111
|
* @param {ReferenceAction} [options.onUpdate] - Action on update
|
|
@@ -115,7 +115,7 @@ var ColumnBuilder = class {
|
|
|
115
115
|
references(ref, options) {
|
|
116
116
|
this._references = {
|
|
117
117
|
resolve: () => {
|
|
118
|
-
const col = ref();
|
|
118
|
+
const col = typeof ref === "function" ? ref() : ref;
|
|
119
119
|
return {
|
|
120
120
|
table: col.__tableName ?? "",
|
|
121
121
|
column: col.__columnName ?? ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.cjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {() => ColumnBuilder<any>} ref - A function returning
|
|
1
|
+
{"version":3,"file":"column.cjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one\n * @param {object} [options] - Reference options\n * @param {ReferenceAction} [options.onDelete] - Action on delete\n * @param {ReferenceAction} [options.onUpdate] - Action on update\n * @param {string} [options.relationName] - Name for the relation\n * @returns {ColumnBuilder<T>} The column builder for chaining\n */\n references<\n R extends ColumnBuilder<any, string, string, any>,\n O extends {\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } = never,\n >(\n ref: (() => R) | R,\n options?: O,\n ): ColumnBuilder<\n T,\n TN,\n CN,\n DeferredRefMeta<\n CN,\n R[\"__tableName\"],\n R[\"__columnName\"],\n O extends { relationName: infer N extends string } ? N : undefined\n >\n > {\n this._references = {\n resolve: () => {\n const col = typeof ref === \"function\" ? ref() : ref;\n return {\n table: (col as any).__tableName ?? \"\",\n column: (col as any).__columnName ?? \"\",\n };\n },\n onDelete: options?.onDelete,\n onUpdate: options?.onUpdate,\n relationName: options?.relationName,\n };\n return this as any;\n }\n\n /**\n * Build the column metadata from the builder configuration\n * @param {string} name - The column name\n * @returns {ColumnMetadata} The built column metadata\n */\n __build(name: string): ColumnMetadata {\n return {\n name: this._columnAlias ?? name,\n type: this._type,\n primaryKey: this._primaryKey,\n autoIncrement: this._autoIncrement,\n notNull: this._notNull || this._primaryKey,\n unique: this._unique || this._primaryKey,\n defaultValue: this._defaultValue,\n length: this._length,\n precision: this._precision,\n scale: this._scale,\n columnAlias: this._columnAlias,\n };\n }\n\n /**\n * Get deferred reference data if this column has a foreign key reference\n * @returns {object | null} The deferred reference data or null\n */\n __getDeferredRef(): {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } | null {\n return this._references ?? null;\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,gBAAb,MAKE;CAKA;CACA,cAAsB;CACtB,iBAAyB;CACzB,WAAmB;CACnB,UAAkB;CAClB,gBAAiC,KAAA;CACjC;CACA;CACA;CACA;CACA;CAOA,YAAY,MAAsB,QAAiB,WAAoB,OAAgB;AACrF,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,aAAa;AAClB,OAAK,SAAS;;;;;;;;;;CAWhB,KAAK,OAA8C;AACjD,OAAK,eAAe;AACpB,SAAO;;;;;;;;;;CAWT,OAAyC;AACvC,SAAO;;;;;;CAOT,aAA4C;AAC1C,OAAK,cAAc;AACnB,SAAO;;;;;;CAOT,gBAA+C;AAC7C,OAAK,iBAAiB;AACtB,SAAO;;;;;;CAOT,UAAsD;AACpD,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,WAAiD;AAC/C,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,OAA6C;AAC3C,SAAO,KAAK,UAAU;;;;;;;CAQxB,QAAQ,OAAyC;AAC/C,OAAK,gBAAgB;AACrB,SAAO;;;;;;CAOT,SAAwC;AACtC,OAAK,UAAU;AACf,SAAO;;;;;;;;;;;CAYT,WAQE,KACA,SAWA;AACA,OAAK,cAAc;GACjB,eAAe;IACb,MAAM,MAAM,OAAO,QAAQ,aAAa,KAAK,GAAG;AAChD,WAAO;KACL,OAAQ,IAAY,eAAe;KACnC,QAAS,IAAY,gBAAgB;KACtC;;GAEH,UAAU,SAAS;GACnB,UAAU,SAAS;GACnB,cAAc,SAAS;GACxB;AACD,SAAO;;;;;;;CAQT,QAAQ,MAA8B;AACpC,SAAO;GACL,MAAM,KAAK,gBAAgB;GAC3B,MAAM,KAAK;GACX,YAAY,KAAK;GACjB,eAAe,KAAK;GACpB,SAAS,KAAK,YAAY,KAAK;GAC/B,QAAQ,KAAK,WAAW,KAAK;GAC7B,cAAc,KAAK;GACnB,QAAQ,KAAK;GACb,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,aAAa,KAAK;GACnB;;;;;;CAOH,mBAKS;AACP,SAAO,KAAK,eAAe"}
|
package/dist/schema/column.d.cts
CHANGED
|
@@ -81,7 +81,7 @@ declare class ColumnBuilder<T = unknown, TN extends string = string, CN extends
|
|
|
81
81
|
unique(): ColumnBuilder<T, TN, CN, Ref>;
|
|
82
82
|
/**
|
|
83
83
|
* Add a foreign key reference to another table's column
|
|
84
|
-
* @param {() => ColumnBuilder<any>} ref - A function returning
|
|
84
|
+
* @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one
|
|
85
85
|
* @param {object} [options] - Reference options
|
|
86
86
|
* @param {ReferenceAction} [options.onDelete] - Action on delete
|
|
87
87
|
* @param {ReferenceAction} [options.onUpdate] - Action on update
|
|
@@ -92,7 +92,7 @@ declare class ColumnBuilder<T = unknown, TN extends string = string, CN extends
|
|
|
92
92
|
onDelete?: ReferenceAction;
|
|
93
93
|
onUpdate?: ReferenceAction;
|
|
94
94
|
relationName?: string;
|
|
95
|
-
} = never>(ref: () => R, options?: O): ColumnBuilder<T, TN, CN, DeferredRefMeta<CN, R["__tableName"], R["__columnName"], O extends {
|
|
95
|
+
} = never>(ref: (() => R) | R, options?: O): ColumnBuilder<T, TN, CN, DeferredRefMeta<CN, R["__tableName"], R["__columnName"], O extends {
|
|
96
96
|
relationName: infer N extends string;
|
|
97
97
|
} ? N : undefined>>;
|
|
98
98
|
/**
|
package/dist/schema/column.d.mts
CHANGED
|
@@ -81,7 +81,7 @@ declare class ColumnBuilder<T = unknown, TN extends string = string, CN extends
|
|
|
81
81
|
unique(): ColumnBuilder<T, TN, CN, Ref>;
|
|
82
82
|
/**
|
|
83
83
|
* Add a foreign key reference to another table's column
|
|
84
|
-
* @param {() => ColumnBuilder<any>} ref - A function returning
|
|
84
|
+
* @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one
|
|
85
85
|
* @param {object} [options] - Reference options
|
|
86
86
|
* @param {ReferenceAction} [options.onDelete] - Action on delete
|
|
87
87
|
* @param {ReferenceAction} [options.onUpdate] - Action on update
|
|
@@ -92,7 +92,7 @@ declare class ColumnBuilder<T = unknown, TN extends string = string, CN extends
|
|
|
92
92
|
onDelete?: ReferenceAction;
|
|
93
93
|
onUpdate?: ReferenceAction;
|
|
94
94
|
relationName?: string;
|
|
95
|
-
} = never>(ref: () => R, options?: O): ColumnBuilder<T, TN, CN, DeferredRefMeta<CN, R["__tableName"], R["__columnName"], O extends {
|
|
95
|
+
} = never>(ref: (() => R) | R, options?: O): ColumnBuilder<T, TN, CN, DeferredRefMeta<CN, R["__tableName"], R["__columnName"], O extends {
|
|
96
96
|
relationName: infer N extends string;
|
|
97
97
|
} ? N : undefined>>;
|
|
98
98
|
/**
|
package/dist/schema/column.mjs
CHANGED
|
@@ -105,7 +105,7 @@ var ColumnBuilder = class {
|
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* Add a foreign key reference to another table's column
|
|
108
|
-
* @param {() => ColumnBuilder<any>} ref - A function returning
|
|
108
|
+
* @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one
|
|
109
109
|
* @param {object} [options] - Reference options
|
|
110
110
|
* @param {ReferenceAction} [options.onDelete] - Action on delete
|
|
111
111
|
* @param {ReferenceAction} [options.onUpdate] - Action on update
|
|
@@ -115,7 +115,7 @@ var ColumnBuilder = class {
|
|
|
115
115
|
references(ref, options) {
|
|
116
116
|
this._references = {
|
|
117
117
|
resolve: () => {
|
|
118
|
-
const col = ref();
|
|
118
|
+
const col = typeof ref === "function" ? ref() : ref;
|
|
119
119
|
return {
|
|
120
120
|
table: col.__tableName ?? "",
|
|
121
121
|
column: col.__columnName ?? ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.mjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {() => ColumnBuilder<any>} ref - A function returning
|
|
1
|
+
{"version":3,"file":"column.mjs","names":[],"sources":["../../src/schema/column.ts"],"sourcesContent":["import type { ColumnDataType, ColumnMetadata, DeferredRefMeta, ReferenceAction } from \"../types\";\n\n/**\n * Base column builder with chainable methods for defining column properties\n * @template T - The TypeScript type this column resolves to\n * @template TN - The table name this column belongs to (set by table())\n * @template CN - The column name (set by table())\n * @template Ref - The deferred reference metadata (set by references())\n */\nexport class ColumnBuilder<\n T = unknown,\n TN extends string = string,\n CN extends string = string,\n Ref extends DeferredRefMeta = never,\n> {\n declare readonly __type: T;\n declare readonly __tableName: TN;\n declare readonly __columnName: CN;\n declare readonly __ref: Ref;\n private _type: ColumnDataType;\n private _primaryKey = false;\n private _autoIncrement = false;\n private _notNull = false;\n private _unique = false;\n private _defaultValue: unknown = undefined;\n private _length?: number;\n private _precision?: number;\n private _scale?: number;\n private _columnAlias?: string;\n private _references?: {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n };\n\n constructor(type: ColumnDataType, length?: number, precision?: number, scale?: number) {\n this._type = type;\n this._length = length;\n this._precision = precision;\n this._scale = scale;\n }\n\n /**\n * Set a custom database column name different from the property key\n * @param {string} alias - The column name to use in the database\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n * @example\n * // In code: guildId, In database: guild_id\n * guildId: varchar(255).name(\"guild_id\")\n */\n name(alias: string): ColumnBuilder<T, TN, CN, Ref> {\n this._columnAlias = alias;\n return this;\n }\n\n /**\n * Override the TypeScript type for this column with a custom type literal\n * @template U - The custom type to use\n * @returns {ColumnBuilder<U, TN, CN, Ref>} The column builder with the new type\n * @example\n * // Limits autocomplete to specific values\n * locale: varchar(25).type<\"en_US\" | \"es_ES\">()\n */\n type<U>(): ColumnBuilder<U, TN, CN, Ref> {\n return this as unknown as ColumnBuilder<U, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as a primary key\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n primaryKey(): ColumnBuilder<T, TN, CN, Ref> {\n this._primaryKey = true;\n return this;\n }\n\n /**\n * Mark this column as auto-incrementing\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n autoIncrement(): ColumnBuilder<T, TN, CN, Ref> {\n this._autoIncrement = true;\n return this;\n }\n\n /**\n * Mark this column as NOT NULL\n * @returns {ColumnBuilder<NonNullable<T>, TN, CN, Ref>} The column builder for chaining\n */\n notNull(): ColumnBuilder<NonNullable<T>, TN, CN, Ref> {\n this._notNull = true;\n return this as unknown as ColumnBuilder<NonNullable<T>, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n nullable(): ColumnBuilder<T | null, TN, CN, Ref> {\n this._notNull = false;\n return this as unknown as ColumnBuilder<T | null, TN, CN, Ref>;\n }\n\n /**\n * Mark this column as nullable (alias for {@link nullable})\n * @returns {ColumnBuilder<T | null, TN, CN, Ref>} The column builder for chaining\n */\n null(): ColumnBuilder<T | null, TN, CN, Ref> {\n return this.nullable();\n }\n\n /**\n * Set a default value for this column\n * @param {T} value - The default value\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n default(value: T): ColumnBuilder<T, TN, CN, Ref> {\n this._defaultValue = value;\n return this;\n }\n\n /**\n * Mark this column as having a unique constraint\n * @returns {ColumnBuilder<T, TN, CN, Ref>} The column builder for chaining\n */\n unique(): ColumnBuilder<T, TN, CN, Ref> {\n this._unique = true;\n return this;\n }\n\n /**\n * Add a foreign key reference to another table's column\n * @param {(() => ColumnBuilder<any>) | ColumnBuilder<any>} ref - A column reference or a function returning one\n * @param {object} [options] - Reference options\n * @param {ReferenceAction} [options.onDelete] - Action on delete\n * @param {ReferenceAction} [options.onUpdate] - Action on update\n * @param {string} [options.relationName] - Name for the relation\n * @returns {ColumnBuilder<T>} The column builder for chaining\n */\n references<\n R extends ColumnBuilder<any, string, string, any>,\n O extends {\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } = never,\n >(\n ref: (() => R) | R,\n options?: O,\n ): ColumnBuilder<\n T,\n TN,\n CN,\n DeferredRefMeta<\n CN,\n R[\"__tableName\"],\n R[\"__columnName\"],\n O extends { relationName: infer N extends string } ? N : undefined\n >\n > {\n this._references = {\n resolve: () => {\n const col = typeof ref === \"function\" ? ref() : ref;\n return {\n table: (col as any).__tableName ?? \"\",\n column: (col as any).__columnName ?? \"\",\n };\n },\n onDelete: options?.onDelete,\n onUpdate: options?.onUpdate,\n relationName: options?.relationName,\n };\n return this as any;\n }\n\n /**\n * Build the column metadata from the builder configuration\n * @param {string} name - The column name\n * @returns {ColumnMetadata} The built column metadata\n */\n __build(name: string): ColumnMetadata {\n return {\n name: this._columnAlias ?? name,\n type: this._type,\n primaryKey: this._primaryKey,\n autoIncrement: this._autoIncrement,\n notNull: this._notNull || this._primaryKey,\n unique: this._unique || this._primaryKey,\n defaultValue: this._defaultValue,\n length: this._length,\n precision: this._precision,\n scale: this._scale,\n columnAlias: this._columnAlias,\n };\n }\n\n /**\n * Get deferred reference data if this column has a foreign key reference\n * @returns {object | null} The deferred reference data or null\n */\n __getDeferredRef(): {\n resolve: () => { table: string; column: string };\n onDelete?: ReferenceAction;\n onUpdate?: ReferenceAction;\n relationName?: string;\n } | null {\n return this._references ?? null;\n }\n}\n"],"mappings":";;;;;;;;AASA,IAAa,gBAAb,MAKE;CAKA;CACA,cAAsB;CACtB,iBAAyB;CACzB,WAAmB;CACnB,UAAkB;CAClB,gBAAiC,KAAA;CACjC;CACA;CACA;CACA;CACA;CAOA,YAAY,MAAsB,QAAiB,WAAoB,OAAgB;AACrF,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,aAAa;AAClB,OAAK,SAAS;;;;;;;;;;CAWhB,KAAK,OAA8C;AACjD,OAAK,eAAe;AACpB,SAAO;;;;;;;;;;CAWT,OAAyC;AACvC,SAAO;;;;;;CAOT,aAA4C;AAC1C,OAAK,cAAc;AACnB,SAAO;;;;;;CAOT,gBAA+C;AAC7C,OAAK,iBAAiB;AACtB,SAAO;;;;;;CAOT,UAAsD;AACpD,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,WAAiD;AAC/C,OAAK,WAAW;AAChB,SAAO;;;;;;CAOT,OAA6C;AAC3C,SAAO,KAAK,UAAU;;;;;;;CAQxB,QAAQ,OAAyC;AAC/C,OAAK,gBAAgB;AACrB,SAAO;;;;;;CAOT,SAAwC;AACtC,OAAK,UAAU;AACf,SAAO;;;;;;;;;;;CAYT,WAQE,KACA,SAWA;AACA,OAAK,cAAc;GACjB,eAAe;IACb,MAAM,MAAM,OAAO,QAAQ,aAAa,KAAK,GAAG;AAChD,WAAO;KACL,OAAQ,IAAY,eAAe;KACnC,QAAS,IAAY,gBAAgB;KACtC;;GAEH,UAAU,SAAS;GACnB,UAAU,SAAS;GACnB,cAAc,SAAS;GACxB;AACD,SAAO;;;;;;;CAQT,QAAQ,MAA8B;AACpC,SAAO;GACL,MAAM,KAAK,gBAAgB;GAC3B,MAAM,KAAK;GACX,YAAY,KAAK;GACjB,eAAe,KAAK;GACpB,SAAS,KAAK,YAAY,KAAK;GAC/B,QAAQ,KAAK,WAAW,KAAK;GAC7B,cAAc,KAAK;GACnB,QAAQ,KAAK;GACb,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,aAAa,KAAK;GACnB;;;;;;CAOH,mBAKS;AACP,SAAO,KAAK,eAAe"}
|
|
@@ -3,6 +3,7 @@ const require_column = require("../column.cjs");
|
|
|
3
3
|
//#region src/schema/columns/index.ts
|
|
4
4
|
var columns_exports = /* @__PURE__ */ require_runtime.__exportAll({
|
|
5
5
|
NamedColumnStarter: () => NamedColumnStarter,
|
|
6
|
+
array: () => array,
|
|
6
7
|
bigint: () => bigint,
|
|
7
8
|
blob: () => blob,
|
|
8
9
|
boolean: () => boolean,
|
|
@@ -56,6 +57,11 @@ const boolean = () => new require_column.ColumnBuilder("boolean");
|
|
|
56
57
|
*/
|
|
57
58
|
const json = () => new require_column.ColumnBuilder("json");
|
|
58
59
|
/**
|
|
60
|
+
* Create an ARRAY column (stored as JSON)
|
|
61
|
+
* @returns {ColumnBuilder<unknown[]>} Column builder for array type
|
|
62
|
+
*/
|
|
63
|
+
const array = () => new require_column.ColumnBuilder("array");
|
|
64
|
+
/**
|
|
59
65
|
* Create a DATETIME column
|
|
60
66
|
* @returns {ColumnBuilder<Date>} Column builder for datetime type
|
|
61
67
|
*/
|
|
@@ -125,6 +131,10 @@ var NamedColumnStarter = class {
|
|
|
125
131
|
json() {
|
|
126
132
|
return new require_column.ColumnBuilder("json").name(this._alias);
|
|
127
133
|
}
|
|
134
|
+
/** Create an ARRAY column with this database column name */
|
|
135
|
+
array() {
|
|
136
|
+
return new require_column.ColumnBuilder("array").name(this._alias);
|
|
137
|
+
}
|
|
128
138
|
/** Create a DATETIME column with this database column name */
|
|
129
139
|
datetime() {
|
|
130
140
|
return new require_column.ColumnBuilder("datetime").name(this._alias);
|
|
@@ -169,6 +179,7 @@ const d = {
|
|
|
169
179
|
text,
|
|
170
180
|
boolean,
|
|
171
181
|
json,
|
|
182
|
+
array,
|
|
172
183
|
datetime,
|
|
173
184
|
timestamp,
|
|
174
185
|
decimal,
|
|
@@ -178,6 +189,7 @@ const d = {
|
|
|
178
189
|
};
|
|
179
190
|
//#endregion
|
|
180
191
|
exports.NamedColumnStarter = NamedColumnStarter;
|
|
192
|
+
exports.array = array;
|
|
181
193
|
exports.bigint = bigint;
|
|
182
194
|
exports.blob = blob;
|
|
183
195
|
exports.boolean = boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["ColumnBuilder"],"sources":["../../../src/schema/columns/index.ts"],"sourcesContent":["import { ColumnBuilder } from \"../column\";\n\n/**\n * Create an INTEGER column\n * @returns {ColumnBuilder<number>} Column builder for integer type\n */\nexport const integer = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"integer\");\n\n/**\n * Create a BIGINT column\n * @returns {ColumnBuilder<number>} Column builder for bigint type\n */\nexport const bigint = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"bigint\");\n\n/**\n * Create a VARCHAR column with specified length\n * @param {number} [length=255] - Maximum character length\n * @returns {ColumnBuilder<string>} Column builder for varchar type\n */\nexport const varchar = (length = 255): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"varchar\", length);\n\n/**\n * Create a CHAR column with specified length\n * @param {number} [length=1] - Fixed character length\n * @returns {ColumnBuilder<string>} Column builder for char type\n */\nexport const char = (length = 1): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"char\", length);\n\n/**\n * Create a TEXT column\n * @returns {ColumnBuilder<string>} Column builder for text type\n */\nexport const text = (): ColumnBuilder<string> => new ColumnBuilder<string>(\"text\");\n\n/**\n * Create a BOOLEAN column\n * @returns {ColumnBuilder<boolean>} Column builder for boolean type\n */\nexport const boolean = (): ColumnBuilder<boolean> => new ColumnBuilder<boolean>(\"boolean\");\n\n/**\n * Create a JSON column\n * @returns {ColumnBuilder<unknown>} Column builder for json type\n */\nexport const json = (): ColumnBuilder<unknown> => new ColumnBuilder<unknown>(\"json\");\n\n/**\n * Create a DATETIME column\n * @returns {ColumnBuilder<Date>} Column builder for datetime type\n */\nexport const datetime = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"datetime\");\n\n/**\n * Create a TIMESTAMP column\n * @returns {ColumnBuilder<Date>} Column builder for timestamp type\n */\nexport const timestamp = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"timestamp\");\n\n/**\n * Create a DECIMAL column with precision and scale\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n * @returns {ColumnBuilder<number>} Column builder for decimal type\n */\nexport const decimal = (precision = 10, scale = 2): ColumnBuilder<number> =>\n new ColumnBuilder<number>(\"decimal\", undefined, precision, scale);\n\n/**\n * Create a FLOAT column\n * @returns {ColumnBuilder<number>} Column builder for float type\n */\nexport const float = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"float\");\n\n/**\n * Create a BLOB column\n * @returns {ColumnBuilder<Buffer>} Column builder for blob type\n */\nexport const blob = (): ColumnBuilder<Buffer> => new ColumnBuilder<Buffer>(\"blob\");\n\n/**\n * Starter class for creating columns with a pre-set database column name\n * @example\n * // Start with name, then pick column type\n * guildId: name(\"guild_id\").varchar(255)\n */\nexport class NamedColumnStarter {\n private _alias: string;\n\n constructor(alias: string) {\n this._alias = alias;\n }\n\n /** Create an INTEGER column with this database column name */\n integer(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"integer\").name(this._alias);\n }\n\n /** Create a BIGINT column with this database column name */\n bigint(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"bigint\").name(this._alias);\n }\n\n /** Create a VARCHAR column with this database column name\n * @param {number} [length=255] - Maximum character length\n */\n varchar(length = 255): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"varchar\", length).name(this._alias);\n }\n\n /** Create a CHAR column with this database column name\n * @param {number} [length=1] - Fixed character length\n */\n char(length = 1): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"char\", length).name(this._alias);\n }\n\n /** Create a TEXT column with this database column name */\n text(): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"text\").name(this._alias);\n }\n\n /** Create a BOOLEAN column with this database column name */\n boolean(): ColumnBuilder<boolean> {\n return new ColumnBuilder<boolean>(\"boolean\").name(this._alias);\n }\n\n /** Create a JSON column with this database column name */\n json(): ColumnBuilder<unknown> {\n return new ColumnBuilder<unknown>(\"json\").name(this._alias);\n }\n\n /** Create a DATETIME column with this database column name */\n datetime(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"datetime\").name(this._alias);\n }\n\n /** Create a TIMESTAMP column with this database column name */\n timestamp(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"timestamp\").name(this._alias);\n }\n\n /** Create a DECIMAL column with this database column name\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n */\n decimal(precision = 10, scale = 2): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"decimal\", undefined, precision, scale).name(this._alias);\n }\n\n /** Create a FLOAT column with this database column name */\n float(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"float\").name(this._alias);\n }\n\n /** Create a BLOB column with this database column name */\n blob(): ColumnBuilder<Buffer> {\n return new ColumnBuilder<Buffer>(\"blob\").name(this._alias);\n }\n}\n\n/**\n * Create a column with a custom database column name, then pick the column type\n * @param {string} alias - The column name to use in the database\n * @returns {NamedColumnStarter} A starter object to pick the column type\n * @example\n * guildId: name(\"guild_id\").varchar(255).notNull()\n */\nexport const name = (alias: string): NamedColumnStarter => new NamedColumnStarter(alias);\n\n/**\n * Column type helpers object for schema definitions\n * @returns {typeof d} Column type helpers\n */\nexport const d = {\n integer,\n bigint,\n varchar,\n char,\n text,\n boolean,\n json,\n datetime,\n timestamp,\n decimal,\n float,\n blob,\n name,\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["ColumnBuilder"],"sources":["../../../src/schema/columns/index.ts"],"sourcesContent":["import { ColumnBuilder } from \"../column\";\n\n/**\n * Create an INTEGER column\n * @returns {ColumnBuilder<number>} Column builder for integer type\n */\nexport const integer = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"integer\");\n\n/**\n * Create a BIGINT column\n * @returns {ColumnBuilder<number>} Column builder for bigint type\n */\nexport const bigint = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"bigint\");\n\n/**\n * Create a VARCHAR column with specified length\n * @param {number} [length=255] - Maximum character length\n * @returns {ColumnBuilder<string>} Column builder for varchar type\n */\nexport const varchar = (length = 255): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"varchar\", length);\n\n/**\n * Create a CHAR column with specified length\n * @param {number} [length=1] - Fixed character length\n * @returns {ColumnBuilder<string>} Column builder for char type\n */\nexport const char = (length = 1): ColumnBuilder<string> =>\n new ColumnBuilder<string>(\"char\", length);\n\n/**\n * Create a TEXT column\n * @returns {ColumnBuilder<string>} Column builder for text type\n */\nexport const text = (): ColumnBuilder<string> => new ColumnBuilder<string>(\"text\");\n\n/**\n * Create a BOOLEAN column\n * @returns {ColumnBuilder<boolean>} Column builder for boolean type\n */\nexport const boolean = (): ColumnBuilder<boolean> => new ColumnBuilder<boolean>(\"boolean\");\n\n/**\n * Create a JSON column\n * @returns {ColumnBuilder<unknown>} Column builder for json type\n */\nexport const json = (): ColumnBuilder<unknown> => new ColumnBuilder<unknown>(\"json\");\n\n/**\n * Create an ARRAY column (stored as JSON)\n * @returns {ColumnBuilder<unknown[]>} Column builder for array type\n */\nexport const array = (): ColumnBuilder<unknown[]> => new ColumnBuilder<unknown[]>(\"array\");\n\n/**\n * Create a DATETIME column\n * @returns {ColumnBuilder<Date>} Column builder for datetime type\n */\nexport const datetime = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"datetime\");\n\n/**\n * Create a TIMESTAMP column\n * @returns {ColumnBuilder<Date>} Column builder for timestamp type\n */\nexport const timestamp = (): ColumnBuilder<Date> => new ColumnBuilder<Date>(\"timestamp\");\n\n/**\n * Create a DECIMAL column with precision and scale\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n * @returns {ColumnBuilder<number>} Column builder for decimal type\n */\nexport const decimal = (precision = 10, scale = 2): ColumnBuilder<number> =>\n new ColumnBuilder<number>(\"decimal\", undefined, precision, scale);\n\n/**\n * Create a FLOAT column\n * @returns {ColumnBuilder<number>} Column builder for float type\n */\nexport const float = (): ColumnBuilder<number> => new ColumnBuilder<number>(\"float\");\n\n/**\n * Create a BLOB column\n * @returns {ColumnBuilder<Buffer>} Column builder for blob type\n */\nexport const blob = (): ColumnBuilder<Buffer> => new ColumnBuilder<Buffer>(\"blob\");\n\n/**\n * Starter class for creating columns with a pre-set database column name\n * @example\n * // Start with name, then pick column type\n * guildId: name(\"guild_id\").varchar(255)\n */\nexport class NamedColumnStarter {\n private _alias: string;\n\n constructor(alias: string) {\n this._alias = alias;\n }\n\n /** Create an INTEGER column with this database column name */\n integer(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"integer\").name(this._alias);\n }\n\n /** Create a BIGINT column with this database column name */\n bigint(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"bigint\").name(this._alias);\n }\n\n /** Create a VARCHAR column with this database column name\n * @param {number} [length=255] - Maximum character length\n */\n varchar(length = 255): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"varchar\", length).name(this._alias);\n }\n\n /** Create a CHAR column with this database column name\n * @param {number} [length=1] - Fixed character length\n */\n char(length = 1): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"char\", length).name(this._alias);\n }\n\n /** Create a TEXT column with this database column name */\n text(): ColumnBuilder<string> {\n return new ColumnBuilder<string>(\"text\").name(this._alias);\n }\n\n /** Create a BOOLEAN column with this database column name */\n boolean(): ColumnBuilder<boolean> {\n return new ColumnBuilder<boolean>(\"boolean\").name(this._alias);\n }\n\n /** Create a JSON column with this database column name */\n json(): ColumnBuilder<unknown> {\n return new ColumnBuilder<unknown>(\"json\").name(this._alias);\n }\n\n /** Create an ARRAY column with this database column name */\n array(): ColumnBuilder<unknown[]> {\n return new ColumnBuilder<unknown[]>(\"array\").name(this._alias);\n }\n\n /** Create a DATETIME column with this database column name */\n datetime(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"datetime\").name(this._alias);\n }\n\n /** Create a TIMESTAMP column with this database column name */\n timestamp(): ColumnBuilder<Date> {\n return new ColumnBuilder<Date>(\"timestamp\").name(this._alias);\n }\n\n /** Create a DECIMAL column with this database column name\n * @param {number} [precision=10] - Total number of digits\n * @param {number} [scale=2] - Number of decimal digits\n */\n decimal(precision = 10, scale = 2): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"decimal\", undefined, precision, scale).name(this._alias);\n }\n\n /** Create a FLOAT column with this database column name */\n float(): ColumnBuilder<number> {\n return new ColumnBuilder<number>(\"float\").name(this._alias);\n }\n\n /** Create a BLOB column with this database column name */\n blob(): ColumnBuilder<Buffer> {\n return new ColumnBuilder<Buffer>(\"blob\").name(this._alias);\n }\n}\n\n/**\n * Create a column with a custom database column name, then pick the column type\n * @param {string} alias - The column name to use in the database\n * @returns {NamedColumnStarter} A starter object to pick the column type\n * @example\n * guildId: name(\"guild_id\").varchar(255).notNull()\n */\nexport const name = (alias: string): NamedColumnStarter => new NamedColumnStarter(alias);\n\n/**\n * Column type helpers object for schema definitions\n * @returns {typeof d} Column type helpers\n */\nexport const d = {\n integer,\n bigint,\n varchar,\n char,\n text,\n boolean,\n json,\n array,\n datetime,\n timestamp,\n decimal,\n float,\n blob,\n name,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAa,gBAAuC,IAAIA,eAAAA,cAAsB,UAAU;;;;;AAMxF,MAAa,eAAsC,IAAIA,eAAAA,cAAsB,SAAS;;;;;;AAOtF,MAAa,WAAW,SAAS,QAC/B,IAAIA,eAAAA,cAAsB,WAAW,OAAO;;;;;;AAO9C,MAAa,QAAQ,SAAS,MAC5B,IAAIA,eAAAA,cAAsB,QAAQ,OAAO;;;;;AAM3C,MAAa,aAAoC,IAAIA,eAAAA,cAAsB,OAAO;;;;;AAMlF,MAAa,gBAAwC,IAAIA,eAAAA,cAAuB,UAAU;;;;;AAM1F,MAAa,aAAqC,IAAIA,eAAAA,cAAuB,OAAO;;;;;AAMpF,MAAa,cAAwC,IAAIA,eAAAA,cAAyB,QAAQ;;;;;AAM1F,MAAa,iBAAsC,IAAIA,eAAAA,cAAoB,WAAW;;;;;AAMtF,MAAa,kBAAuC,IAAIA,eAAAA,cAAoB,YAAY;;;;;;;AAQxF,MAAa,WAAW,YAAY,IAAI,QAAQ,MAC9C,IAAIA,eAAAA,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM;;;;;AAMnE,MAAa,cAAqC,IAAIA,eAAAA,cAAsB,QAAQ;;;;;AAMpF,MAAa,aAAoC,IAAIA,eAAAA,cAAsB,OAAO;;;;;;;AAQlF,IAAa,qBAAb,MAAgC;CAC9B;CAEA,YAAY,OAAe;AACzB,OAAK,SAAS;;;CAIhB,UAAiC;AAC/B,SAAO,IAAIA,eAAAA,cAAsB,UAAU,CAAC,KAAK,KAAK,OAAO;;;CAI/D,SAAgC;AAC9B,SAAO,IAAIA,eAAAA,cAAsB,SAAS,CAAC,KAAK,KAAK,OAAO;;;;;CAM9D,QAAQ,SAAS,KAA4B;AAC3C,SAAO,IAAIA,eAAAA,cAAsB,WAAW,OAAO,CAAC,KAAK,KAAK,OAAO;;;;;CAMvE,KAAK,SAAS,GAA0B;AACtC,SAAO,IAAIA,eAAAA,cAAsB,QAAQ,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAIpE,OAA8B;AAC5B,SAAO,IAAIA,eAAAA,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAI5D,UAAkC;AAChC,SAAO,IAAIA,eAAAA,cAAuB,UAAU,CAAC,KAAK,KAAK,OAAO;;;CAIhE,OAA+B;AAC7B,SAAO,IAAIA,eAAAA,cAAuB,OAAO,CAAC,KAAK,KAAK,OAAO;;;CAI7D,QAAkC;AAChC,SAAO,IAAIA,eAAAA,cAAyB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;CAIhE,WAAgC;AAC9B,SAAO,IAAIA,eAAAA,cAAoB,WAAW,CAAC,KAAK,KAAK,OAAO;;;CAI9D,YAAiC;AAC/B,SAAO,IAAIA,eAAAA,cAAoB,YAAY,CAAC,KAAK,KAAK,OAAO;;;;;;CAO/D,QAAQ,YAAY,IAAI,QAAQ,GAA0B;AACxD,SAAO,IAAIA,eAAAA,cAAsB,WAAW,KAAA,GAAW,WAAW,MAAM,CAAC,KAAK,KAAK,OAAO;;;CAI5F,QAA+B;AAC7B,SAAO,IAAIA,eAAAA,cAAsB,QAAQ,CAAC,KAAK,KAAK,OAAO;;;CAI7D,OAA8B;AAC5B,SAAO,IAAIA,eAAAA,cAAsB,OAAO,CAAC,KAAK,KAAK,OAAO;;;;;;;;;;AAW9D,MAAa,QAAQ,UAAsC,IAAI,mBAAmB,MAAM;;;;;AAMxF,MAAa,IAAI;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
|
@@ -2,7 +2,7 @@ import { ColumnBuilder } from "../column.cjs";
|
|
|
2
2
|
|
|
3
3
|
//#region src/schema/columns/index.d.ts
|
|
4
4
|
declare namespace index_d_exports {
|
|
5
|
-
export { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
5
|
+
export { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Create an INTEGER column
|
|
@@ -41,6 +41,11 @@ declare const boolean: () => ColumnBuilder<boolean>;
|
|
|
41
41
|
* @returns {ColumnBuilder<unknown>} Column builder for json type
|
|
42
42
|
*/
|
|
43
43
|
declare const json: () => ColumnBuilder<unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Create an ARRAY column (stored as JSON)
|
|
46
|
+
* @returns {ColumnBuilder<unknown[]>} Column builder for array type
|
|
47
|
+
*/
|
|
48
|
+
declare const array: () => ColumnBuilder<unknown[]>;
|
|
44
49
|
/**
|
|
45
50
|
* Create a DATETIME column
|
|
46
51
|
* @returns {ColumnBuilder<Date>} Column builder for datetime type
|
|
@@ -95,6 +100,8 @@ declare class NamedColumnStarter {
|
|
|
95
100
|
boolean(): ColumnBuilder<boolean>;
|
|
96
101
|
/** Create a JSON column with this database column name */
|
|
97
102
|
json(): ColumnBuilder<unknown>;
|
|
103
|
+
/** Create an ARRAY column with this database column name */
|
|
104
|
+
array(): ColumnBuilder<unknown[]>;
|
|
98
105
|
/** Create a DATETIME column with this database column name */
|
|
99
106
|
datetime(): ColumnBuilder<Date>;
|
|
100
107
|
/** Create a TIMESTAMP column with this database column name */
|
|
@@ -129,6 +136,7 @@ declare const d: {
|
|
|
129
136
|
text: () => ColumnBuilder<string>;
|
|
130
137
|
boolean: () => ColumnBuilder<boolean>;
|
|
131
138
|
json: () => ColumnBuilder<unknown>;
|
|
139
|
+
array: () => ColumnBuilder<unknown[]>;
|
|
132
140
|
datetime: () => ColumnBuilder<Date>;
|
|
133
141
|
timestamp: () => ColumnBuilder<Date>;
|
|
134
142
|
decimal: (precision?: number, scale?: number) => ColumnBuilder<number>;
|
|
@@ -137,5 +145,5 @@ declare const d: {
|
|
|
137
145
|
name: (alias: string) => NamedColumnStarter;
|
|
138
146
|
};
|
|
139
147
|
//#endregion
|
|
140
|
-
export { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar };
|
|
148
|
+
export { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar };
|
|
141
149
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -2,7 +2,7 @@ import { ColumnBuilder } from "../column.mjs";
|
|
|
2
2
|
|
|
3
3
|
//#region src/schema/columns/index.d.ts
|
|
4
4
|
declare namespace index_d_exports {
|
|
5
|
-
export { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
5
|
+
export { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Create an INTEGER column
|
|
@@ -41,6 +41,11 @@ declare const boolean: () => ColumnBuilder<boolean>;
|
|
|
41
41
|
* @returns {ColumnBuilder<unknown>} Column builder for json type
|
|
42
42
|
*/
|
|
43
43
|
declare const json: () => ColumnBuilder<unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Create an ARRAY column (stored as JSON)
|
|
46
|
+
* @returns {ColumnBuilder<unknown[]>} Column builder for array type
|
|
47
|
+
*/
|
|
48
|
+
declare const array: () => ColumnBuilder<unknown[]>;
|
|
44
49
|
/**
|
|
45
50
|
* Create a DATETIME column
|
|
46
51
|
* @returns {ColumnBuilder<Date>} Column builder for datetime type
|
|
@@ -95,6 +100,8 @@ declare class NamedColumnStarter {
|
|
|
95
100
|
boolean(): ColumnBuilder<boolean>;
|
|
96
101
|
/** Create a JSON column with this database column name */
|
|
97
102
|
json(): ColumnBuilder<unknown>;
|
|
103
|
+
/** Create an ARRAY column with this database column name */
|
|
104
|
+
array(): ColumnBuilder<unknown[]>;
|
|
98
105
|
/** Create a DATETIME column with this database column name */
|
|
99
106
|
datetime(): ColumnBuilder<Date>;
|
|
100
107
|
/** Create a TIMESTAMP column with this database column name */
|
|
@@ -129,6 +136,7 @@ declare const d: {
|
|
|
129
136
|
text: () => ColumnBuilder<string>;
|
|
130
137
|
boolean: () => ColumnBuilder<boolean>;
|
|
131
138
|
json: () => ColumnBuilder<unknown>;
|
|
139
|
+
array: () => ColumnBuilder<unknown[]>;
|
|
132
140
|
datetime: () => ColumnBuilder<Date>;
|
|
133
141
|
timestamp: () => ColumnBuilder<Date>;
|
|
134
142
|
decimal: (precision?: number, scale?: number) => ColumnBuilder<number>;
|
|
@@ -137,5 +145,5 @@ declare const d: {
|
|
|
137
145
|
name: (alias: string) => NamedColumnStarter;
|
|
138
146
|
};
|
|
139
147
|
//#endregion
|
|
140
|
-
export { NamedColumnStarter, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar };
|
|
148
|
+
export { NamedColumnStarter, array, bigint, blob, boolean, char, d, datetime, decimal, float, index_d_exports, integer, json, name, text, timestamp, varchar };
|
|
141
149
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -3,6 +3,7 @@ import { ColumnBuilder } from "../column.mjs";
|
|
|
3
3
|
//#region src/schema/columns/index.ts
|
|
4
4
|
var columns_exports = /* @__PURE__ */ __exportAll({
|
|
5
5
|
NamedColumnStarter: () => NamedColumnStarter,
|
|
6
|
+
array: () => array,
|
|
6
7
|
bigint: () => bigint,
|
|
7
8
|
blob: () => blob,
|
|
8
9
|
boolean: () => boolean,
|
|
@@ -56,6 +57,11 @@ const boolean = () => new ColumnBuilder("boolean");
|
|
|
56
57
|
*/
|
|
57
58
|
const json = () => new ColumnBuilder("json");
|
|
58
59
|
/**
|
|
60
|
+
* Create an ARRAY column (stored as JSON)
|
|
61
|
+
* @returns {ColumnBuilder<unknown[]>} Column builder for array type
|
|
62
|
+
*/
|
|
63
|
+
const array = () => new ColumnBuilder("array");
|
|
64
|
+
/**
|
|
59
65
|
* Create a DATETIME column
|
|
60
66
|
* @returns {ColumnBuilder<Date>} Column builder for datetime type
|
|
61
67
|
*/
|
|
@@ -125,6 +131,10 @@ var NamedColumnStarter = class {
|
|
|
125
131
|
json() {
|
|
126
132
|
return new ColumnBuilder("json").name(this._alias);
|
|
127
133
|
}
|
|
134
|
+
/** Create an ARRAY column with this database column name */
|
|
135
|
+
array() {
|
|
136
|
+
return new ColumnBuilder("array").name(this._alias);
|
|
137
|
+
}
|
|
128
138
|
/** Create a DATETIME column with this database column name */
|
|
129
139
|
datetime() {
|
|
130
140
|
return new ColumnBuilder("datetime").name(this._alias);
|
|
@@ -169,6 +179,7 @@ const d = {
|
|
|
169
179
|
text,
|
|
170
180
|
boolean,
|
|
171
181
|
json,
|
|
182
|
+
array,
|
|
172
183
|
datetime,
|
|
173
184
|
timestamp,
|
|
174
185
|
decimal,
|
|
@@ -177,6 +188,6 @@ const d = {
|
|
|
177
188
|
name
|
|
178
189
|
};
|
|
179
190
|
//#endregion
|
|
180
|
-
export { NamedColumnStarter, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
191
|
+
export { NamedColumnStarter, array, bigint, blob, boolean, char, columns_exports, d, datetime, decimal, float, integer, json, name, text, timestamp, varchar };
|
|
181
192
|
|
|
182
193
|
//# sourceMappingURL=index.mjs.map
|