@prisma/orm-target-mysql 0.0.0-stage → 8.0.0-rc.21-dev.23
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/LICENSE +201 -0
- package/README.md +20 -2
- package/dist/adapter-_WBomuTw.d.mts +27 -0
- package/dist/adapter-_WBomuTw.d.mts.map +1 -0
- package/dist/adapter.d.mts +6 -0
- package/dist/adapter.mjs +3 -0
- package/dist/adapter__adapter.d.mts +2 -0
- package/dist/adapter__adapter.mjs +2 -0
- package/dist/adapter__codec-types.d.mts +3 -0
- package/dist/adapter__codec-types.mjs +1 -0
- package/dist/adapter__control.d.mts +2 -0
- package/dist/adapter__control.mjs +2 -0
- package/dist/adapter__runtime.d.mts +2 -0
- package/dist/adapter__runtime.mjs +417 -0
- package/dist/adapter__runtime.mjs.map +1 -0
- package/dist/codec-descriptor-DXyubAS6-siA0R8Ow.d.mts +43 -0
- package/dist/codec-descriptor-DXyubAS6-siA0R8Ow.d.mts.map +1 -0
- package/dist/codec-descriptor-Du6DSz-3-ytBCu_mq.mjs +93 -0
- package/dist/codec-descriptor-Du6DSz-3-ytBCu_mq.mjs.map +1 -0
- package/dist/codec-descriptor-J3TP08l8-ekLvUVxW.d.mts +1 -0
- package/dist/codec-descriptor-oLRh9E29.d.mts +2 -0
- package/dist/codec-ids-BHUwoNOM.d.mts +2 -0
- package/dist/codec-ids-C00hAFkc.mjs +2 -0
- package/dist/codec-ids-cjxtOcLM-vFeQhgPm.mjs +10 -0
- package/dist/codec-ids-cjxtOcLM-vFeQhgPm.mjs.map +1 -0
- package/dist/codec-ids-sMOU8F-B-BQbCq2dr.d.mts +10 -0
- package/dist/codec-ids-sMOU8F-B-BQbCq2dr.d.mts.map +1 -0
- package/dist/codec-types-Bd7DL1Mr-CZWNfnp9.d.mts +21 -0
- package/dist/codec-types-Bd7DL1Mr-CZWNfnp9.d.mts.map +1 -0
- package/dist/codec-types-Bo3Jfilx.d.mts +1 -0
- package/dist/codec-types-Ja2kLzLS.d.mts +1 -0
- package/dist/codecs-C00kjHgh.mjs +282 -0
- package/dist/codecs-C00kjHgh.mjs.map +1 -0
- package/dist/codecs-CO_VNEYU-CwAnKzRs.d.mts +102 -0
- package/dist/codecs-CO_VNEYU-CwAnKzRs.d.mts.map +1 -0
- package/dist/codecs-DM61agRr.d.mts +21 -0
- package/dist/codecs-DM61agRr.d.mts.map +1 -0
- package/dist/contract-contributions-B9njRJbt-ClEtrK2L.mjs +14 -0
- package/dist/contract-contributions-B9njRJbt-ClEtrK2L.mjs.map +1 -0
- package/dist/contract-free-BvCdx_Ee.mjs +71 -0
- package/dist/contract-free-BvCdx_Ee.mjs.map +1 -0
- package/dist/contract-free-Cw9Mjcro.d.mts +22 -0
- package/dist/contract-free-Cw9Mjcro.d.mts.map +1 -0
- package/dist/control-C9zxRXNN.mjs +74 -0
- package/dist/control-C9zxRXNN.mjs.map +1 -0
- package/dist/control-DHkZbo58.d.mts +25 -0
- package/dist/control-DHkZbo58.d.mts.map +1 -0
- package/dist/control-Ez_PtlFI.d.mts +121 -0
- package/dist/control-Ez_PtlFI.d.mts.map +1 -0
- package/dist/control-WTY7Jpxk.mjs +577 -0
- package/dist/control-WTY7Jpxk.mjs.map +1 -0
- package/dist/control-_4epnrIW.d.mts +27 -0
- package/dist/control-_4epnrIW.d.mts.map +1 -0
- package/dist/control-tables-CHw2F-rg.d.mts +9 -0
- package/dist/control-tables-CHw2F-rg.d.mts.map +1 -0
- package/dist/control-tables-CcQ77JE7-CxTQYoQJ.mjs +9 -0
- package/dist/control-tables-CcQ77JE7-CxTQYoQJ.mjs.map +1 -0
- package/dist/data-type-entries-B0AoBozh-f9AEUIUQ.mjs +42 -0
- package/dist/data-type-entries-B0AoBozh-f9AEUIUQ.mjs.map +1 -0
- package/dist/data-types-BpihGKoK-BMW-m4EN.d.mts +52 -0
- package/dist/data-types-BpihGKoK-BMW-m4EN.d.mts.map +1 -0
- package/dist/data-types-Dv9gwVRV-BZPzCWZk.mjs +181 -0
- package/dist/data-types-Dv9gwVRV-BZPzCWZk.mjs.map +1 -0
- package/dist/data-types-SXrh0Lou.d.mts +8 -0
- package/dist/data-types-SXrh0Lou.d.mts.map +1 -0
- package/dist/ddl-CT6DPEqg.d.mts +1 -0
- package/dist/ddl-DDmMHyA_-Bb8sXoS0.mjs +12 -0
- package/dist/ddl-DDmMHyA_-Bb8sXoS0.mjs.map +1 -0
- package/dist/default-normalizer-BBhGpw7r.d.mts +27 -0
- package/dist/default-normalizer-BBhGpw7r.d.mts.map +1 -0
- package/dist/default-normalizer-BDUgHXUn-Xk7HQJuI.mjs +90 -0
- package/dist/default-normalizer-BDUgHXUn-Xk7HQJuI.mjs.map +1 -0
- package/dist/descriptor-meta-BurjcSiU-Cbk2L1jf.mjs +82 -0
- package/dist/descriptor-meta-BurjcSiU-Cbk2L1jf.mjs.map +1 -0
- package/dist/descriptor-meta-runtime-Bk_00UrX-BLN4Ahpj.mjs +17 -0
- package/dist/descriptor-meta-runtime-Bk_00UrX-BLN4Ahpj.mjs.map +1 -0
- package/dist/driver.d.mts +3 -0
- package/dist/driver.mjs +2 -0
- package/dist/driver__control.d.mts +2 -0
- package/dist/driver__control.mjs +2 -0
- package/dist/driver__runtime.d.mts +2 -0
- package/dist/driver__runtime.mjs +325 -0
- package/dist/driver__runtime.mjs.map +1 -0
- package/dist/errors-BYhjQT7y.d.mts +10 -0
- package/dist/errors-BYhjQT7y.d.mts.map +1 -0
- package/dist/errors-rvH_F2Yj-BQrO_--u.mjs +20 -0
- package/dist/errors-rvH_F2Yj-BQrO_--u.mjs.map +1 -0
- package/dist/marker-lock-CmGvN4hw-Com29AtQ.mjs +51 -0
- package/dist/marker-lock-CmGvN4hw-Com29AtQ.mjs.map +1 -0
- package/dist/marker-lock-su6IxinO.d.mts +18 -0
- package/dist/marker-lock-su6IxinO.d.mts.map +1 -0
- package/dist/marker-read-aEaHihYj-Cyg16yn1.mjs +78 -0
- package/dist/marker-read-aEaHihYj-Cyg16yn1.mjs.map +1 -0
- package/dist/migration-DmlblTTw.d.mts +284 -0
- package/dist/migration-DmlblTTw.d.mts.map +1 -0
- package/dist/migration-tFuoN9GB.mjs +5 -0
- package/dist/mysql-contract-serializer-DLv0uW_f-Cg4A43Ry.mjs +160 -0
- package/dist/mysql-contract-serializer-DLv0uW_f-Cg4A43Ry.mjs.map +1 -0
- package/dist/nodes-CvcX47ot-B-ZaUYRj.mjs +25 -0
- package/dist/nodes-CvcX47ot-B-ZaUYRj.mjs.map +1 -0
- package/dist/nodes-xc0cR0_c-2YbhgEjb.d.mts +27 -0
- package/dist/nodes-xc0cR0_c-2YbhgEjb.d.mts.map +1 -0
- package/dist/pack-YVG-iBMQ.d.mts +1073 -0
- package/dist/pack-YVG-iBMQ.d.mts.map +1 -0
- package/dist/planner-target-details-D6g2uSp--C5NKHmCc.d.mts +12 -0
- package/dist/planner-target-details-D6g2uSp--C5NKHmCc.d.mts.map +1 -0
- package/dist/runner-C4r6yEd1-BWQrxW9q.mjs +1644 -0
- package/dist/runner-C4r6yEd1-BWQrxW9q.mjs.map +1 -0
- package/dist/runtime-BGyTXcQH.d.mts +36 -0
- package/dist/runtime-BGyTXcQH.d.mts.map +1 -0
- package/dist/runtime-CeuRr9nE.d.mts +29 -0
- package/dist/runtime-CeuRr9nE.d.mts.map +1 -0
- package/dist/runtime-Cl0BbTZq.d.mts +22 -0
- package/dist/runtime-Cl0BbTZq.d.mts.map +1 -0
- package/dist/sql-utils-BOS1c2QT.d.mts +30 -0
- package/dist/sql-utils-BOS1c2QT.d.mts.map +1 -0
- package/dist/sql-utils-Db0IQO_B-PaULnfrE.mjs +30 -0
- package/dist/sql-utils-Db0IQO_B-PaULnfrE.mjs.map +1 -0
- package/dist/sql-utils-RW0vJvDl.mjs +94 -0
- package/dist/sql-utils-RW0vJvDl.mjs.map +1 -0
- package/dist/statement-A6bbPBf1-q61iHQLb.mjs +483 -0
- package/dist/statement-A6bbPBf1-q61iHQLb.mjs.map +1 -0
- package/dist/target.d.mts +24 -0
- package/dist/target.mjs +19 -0
- package/dist/target__codec-descriptor.d.mts +3 -0
- package/dist/target__codec-descriptor.mjs +2 -0
- package/dist/target__codec-ids.d.mts +3 -0
- package/dist/target__codec-ids.mjs +3 -0
- package/dist/target__codec-types.d.mts +3 -0
- package/dist/target__codec-types.mjs +1 -0
- package/dist/target__codecs.d.mts +3 -0
- package/dist/target__codecs.mjs +2 -0
- package/dist/target__contract-free.d.mts +2 -0
- package/dist/target__contract-free.mjs +3 -0
- package/dist/target__control-tables.d.mts +2 -0
- package/dist/target__control-tables.mjs +2 -0
- package/dist/target__control.d.mts +3 -0
- package/dist/target__control.mjs +58 -0
- package/dist/target__control.mjs.map +1 -0
- package/dist/target__data-types.d.mts +3 -0
- package/dist/target__data-types.mjs +3 -0
- package/dist/target__ddl.d.mts +3 -0
- package/dist/target__ddl.mjs +2 -0
- package/dist/target__default-normalizer.d.mts +2 -0
- package/dist/target__default-normalizer.mjs +2 -0
- package/dist/target__errors.d.mts +2 -0
- package/dist/target__errors.mjs +2 -0
- package/dist/target__marker-lock.d.mts +2 -0
- package/dist/target__marker-lock.mjs +2 -0
- package/dist/target__migration.d.mts +2 -0
- package/dist/target__migration.mjs +3 -0
- package/dist/target__pack.d.mts +2 -0
- package/dist/target__pack.mjs +2 -0
- package/dist/target__runtime.d.mts +2 -0
- package/dist/target__runtime.mjs +17 -0
- package/dist/target__runtime.mjs.map +1 -0
- package/dist/target__sql-utils.d.mts +2 -0
- package/dist/target__sql-utils.mjs +3 -0
- package/package.json +71 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-WTY7Jpxk.mjs","names":["#inTransaction"],"sources":["../../../../3-targets/mysql/2-adapter/dist/control.mjs"],"sourcesContent":["import { a as tableExists, i as readMarkerRows, n as parseJsonColumn, o as mysqlAdapterDescriptorMeta, r as readMarkerResult, t as decodeMysqlMarkerRow } from \"./marker-read-aEaHihYj.mjs\";\nimport { checkSqlDefaultText, contractColumns, readColumnDefault, sqlDefaultFunctions } from \"@internal/family-sql/control\";\nimport { assembleMysqlCodecRegistry, decodeMysqlDatetime, encodeMysqlDatetime } from \"@internal/target-mysql/codecs\";\nimport { parseMarkerRowSafely, withMarkerReadErrorHandling } from \"@internal/errors/execution\";\nimport { codecForRef } from \"@internal/framework-components/codec\";\nimport { APP_SPACE_ID } from \"@internal/framework-components/control\";\nimport { encodeLiteralDefault, isDdlNode, renderOpaqueSql } from \"@internal/sql-relational-core/ast\";\nimport { buildControlTableBootstrapQueries, buildSignMarkerBootstrapQueries } from \"@internal/target-mysql/contract-free\";\nimport { CONTROL_TABLE_NAMES, LEDGER_TABLE_NAME, MARKER_TABLE_NAME } from \"@internal/target-mysql/control-tables\";\nimport { mysqlQueryNotYetSupported } from \"@internal/target-mysql/errors\";\nimport { withMarkerLock } from \"@internal/target-mysql/marker-lock\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { quoteIdentifier, quoteLiteral } from \"@internal/target-mysql/sql-utils\";\nimport { REFERENTIAL_ACTION_SQL } from \"@internal/sql-contract/referential-action-sql\";\nimport { resolveIntrospectedColumnType } from \"@internal/family-sql/control-adapter\";\nimport { RelationalSchemaNodeKind, SqlSchemaIR, SqlTableIR } from \"@internal/sql-schema-ir/types\";\nimport { readMysqlDefault } from \"@internal/target-mysql/default-normalizer\";\nimport { ifDefined } from \"@internal/utils/defined\";\nimport { ledgerOriginFromStored } from \"@internal/migration-tools/ledger-origin\";\n//#region src/core/migrations/ddl-renderer.ts\n/** Column types MySQL gives a default only when it is written as an expression in parentheses. */\nconst EXPRESSION_DEFAULT_ONLY = /^(?:(?:tiny|medium|long)?(?:text|blob)|json|geometry)\\b/i;\nconst FRACTIONAL_SECONDS = /^(?:datetime|timestamp)\\((\\d)\\)$/i;\nfunction refusedDefault(where, why) {\n\tthrow structuredError(\"CONTRACT.DEFAULT_INVALID\", `Column \"${where.table}\".\"${where.column}\" has a default MySQL cannot store: ${why}`, { meta: {\n\t\ttable: where.table,\n\t\tcolumn: where.column\n\t} });\n}\n/** A wire value as the SQL literal MySQL reads for it. */\nfunction mysqlInlineLiteral(wire, where) {\n\tif (wire === null) return \"NULL\";\n\tif (typeof wire === \"boolean\") return wire ? \"1\" : \"0\";\n\tif (typeof wire === \"number\") {\n\t\tif (!Number.isFinite(wire)) return refusedDefault(where, `${wire} is not a finite number`);\n\t\treturn String(wire);\n\t}\n\tif (typeof wire === \"bigint\") return String(wire);\n\tif (typeof wire === \"string\") return quoteLiteral(wire);\n\tif (wire instanceof Date) return quoteLiteral(encodeMysqlDatetime(wire));\n\tif (wire instanceof Uint8Array) return `X'${Buffer.from(wire).toString(\"hex\")}'`;\n\tif (typeof wire === \"object\") return quoteLiteral(JSON.stringify(wire));\n\treturn refusedDefault(where, `a ${typeof wire} has no SQL literal`);\n}\nfunction withinParentheses(columnType, literal) {\n\treturn EXPRESSION_DEFAULT_ONLY.test(columnType.trim()) ? `(${literal})` : literal;\n}\n/** `CURRENT_TIMESTAMP` with the column's fractional-second precision, which MySQL requires to match. */\nfunction currentTimestampFor(columnType) {\n\tconst precision = FRACTIONAL_SECONDS.exec(columnType.trim())?.[1];\n\treturn precision === void 0 ? \"CURRENT_TIMESTAMP\" : `CURRENT_TIMESTAMP(${precision})`;\n}\n/**\n* The `DEFAULT …` clause of a column, or `''` for an `autoincrement()` default, which a column writes as `AUTO_INCREMENT` instead. A literal is read by the column's codec, and a text or blob column's literal is written as an expression, as MySQL requires.\n*/\nasync function renderMysqlColumnDefault(def, columnType, codecLookup, codecRef, where) {\n\tif (def.kind === \"function\") {\n\t\tconst text = def.expression.text;\n\t\tif (text === \"autoincrement()\") return \"\";\n\t\tif (text === \"now()\") return `DEFAULT (${currentTimestampFor(columnType)})`;\n\t\tif (checkSqlDefaultText(text) !== void 0) throw structuredError(\"CONTRACT.DEFAULT_INVALID\", `Unsafe default expression in contract: \"${text}\". Default expressions must not contain semicolons, SQL comment tokens, dollar-quoting, or subqueries.`, { meta: { expression: text } });\n\t\treturn `DEFAULT (${renderOpaqueSql(def.expression)})`;\n\t}\n\tconst encoded = codecRef === void 0 ? void 0 : await encodeLiteralDefault(codecLookup, codecRef, def.value, where);\n\tif (encoded?.kind === \"sql-null\") return \"DEFAULT NULL\";\n\treturn `DEFAULT ${withinParentheses(columnType, mysqlInlineLiteral(encoded === void 0 ? def.value : encoded.wire, where))}`;\n}\nfunction isAutoincrement(column) {\n\treturn column.default?.kind === \"function\" && column.default.expression.text === \"autoincrement()\";\n}\nasync function renderColumn(column, codecLookup, table) {\n\tconst parts = [quoteIdentifier(column.name), column.type];\n\tif (column.notNull) parts.push(\"NOT NULL\");\n\tif (column.default !== void 0) {\n\t\tconst clause = await renderMysqlColumnDefault(column.default, column.type, codecLookup, column.codecRef, {\n\t\t\ttable,\n\t\t\tcolumn: column.name\n\t\t});\n\t\tif (clause.length > 0) parts.push(clause);\n\t}\n\tif (isAutoincrement(column)) parts.push(\"AUTO_INCREMENT\");\n\tif (column.primaryKey) parts.push(\"PRIMARY KEY\");\n\treturn parts.join(\" \");\n}\nfunction columnList(columns) {\n\treturn columns.map(quoteIdentifier).join(\", \");\n}\nfunction named(name, body) {\n\treturn name === void 0 ? body : `CONSTRAINT ${quoteIdentifier(name)} ${body}`;\n}\nfunction renderConstraint(constraint) {\n\tswitch (constraint.kind) {\n\t\tcase \"primary-key\": return named(constraint.name, `PRIMARY KEY (${columnList(constraint.columns)})`);\n\t\tcase \"unique\": return named(constraint.name, `UNIQUE (${columnList(constraint.columns)})`);\n\t\tcase \"foreign-key\": {\n\t\t\tconst actions = [constraint.onDelete === void 0 ? void 0 : `ON DELETE ${REFERENTIAL_ACTION_SQL[constraint.onDelete]}`, constraint.onUpdate === void 0 ? void 0 : `ON UPDATE ${REFERENTIAL_ACTION_SQL[constraint.onUpdate]}`].filter((action) => action !== void 0);\n\t\t\treturn named(constraint.name, [`FOREIGN KEY (${columnList(constraint.columns)}) REFERENCES ${quoteIdentifier(constraint.refTable)} (${columnList(constraint.refColumns)})`, ...actions].join(\" \"));\n\t\t}\n\t\tcase \"check-expression\": throw structuredError(\"CONTRACT.CONSTRAINT_INVALID\", `The MySQL target does not write CHECK constraints yet (constraint \"${constraint.name}\").`, { meta: { constraintName: constraint.name } });\n\t}\n}\n/** The `CREATE TABLE` statement of a MySQL DDL node. */\nasync function renderMysqlCreateTable(node, codecLookup) {\n\tconst definitions = [...await Promise.all(node.columns.map((column) => renderColumn(column, codecLookup, node.table))), ...(node.constraints ?? []).map(renderConstraint)];\n\treturn {\n\t\tsql: `CREATE TABLE ${node.ifNotExists === true ? \"IF NOT EXISTS \" : \"\"}${quoteIdentifier(node.table)} (\\n ${definitions.join(\",\\n \")}\\n)`,\n\t\tparams: []\n\t};\n}\n//#endregion\n//#region src/core/migrations/declared-indexes.ts\nfunction isLoose(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\nfunction child(value, key) {\n\tconst found = isLoose(value) ? value[key] : void 0;\n\treturn isLoose(found) ? found : void 0;\n}\nfunction tableIndexKey(tableName, indexName) {\n\treturn JSON.stringify([tableName, indexName]);\n}\n/** The indexes the contract handed to introspection declares, read from every contract space it holds. */\nfunction declaredIndexes(contract) {\n\tconst contracts = isLoose(contract) && Array.isArray(contract[\"contracts\"]) ? contract[\"contracts\"] : [contract];\n\tconst declared = /* @__PURE__ */ new Set();\n\tconst declaredUnique = /* @__PURE__ */ new Set();\n\tfor (const space of contracts) for (const namespace of Object.values(child(child(space, \"storage\"), \"namespaces\") ?? {})) for (const [tableName, table] of Object.entries(child(child(namespace, \"entries\"), \"table\") ?? {})) {\n\t\tconst indexes = isLoose(table) ? table[\"indexes\"] : void 0;\n\t\tfor (const index of Array.isArray(indexes) ? indexes : []) {\n\t\t\tif (!isLoose(index) || typeof index[\"name\"] !== \"string\") continue;\n\t\t\tconst key = tableIndexKey(tableName, index[\"name\"]);\n\t\t\tdeclared.add(key);\n\t\t\tif (index[\"unique\"] === true) declaredUnique.add(key);\n\t\t}\n\t}\n\treturn {\n\t\tdeclaresIndex: (tableName, indexName) => declared.has(tableIndexKey(tableName, indexName)),\n\t\tdeclaresUniqueIndex: (tableName, indexName) => declaredUnique.has(tableIndexKey(tableName, indexName))\n\t};\n}\n//#endregion\n//#region src/core/migrations/introspection.ts\nconst NOTHING_DECLARED = {\n\tdeclaresIndex: () => false,\n\tdeclaresUniqueIndex: () => false\n};\nconst PRIMARY_INDEX = \"PRIMARY\";\nconst REFERENTIAL_ACTIONS = {\n\tRESTRICT: \"restrict\",\n\tCASCADE: \"cascade\",\n\t\"SET NULL\": \"setNull\",\n\t\"SET DEFAULT\": \"setDefault\"\n};\n/** A rule `REFERENTIAL_CONSTRAINTS` reports, with `NO ACTION`, MySQL's default, as no action at all. */\nfunction referentialAction(rule) {\n\tconst normalized = rule.toUpperCase();\n\tif (normalized === \"NO ACTION\") return void 0;\n\tconst action = REFERENTIAL_ACTIONS[normalized];\n\tif (action === void 0) throw structuredError(\"CONTRACT.INTROSPECTION_UNSUPPORTED\", `Unknown MySQL referential action rule: \"${rule}\". Expected one of: NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT.`, { meta: { rule } });\n\treturn action;\n}\nfunction tableDependsOn(tableName) {\n\treturn [{\n\t\tnodeKind: RelationalSchemaNodeKind.schema,\n\t\tid: \"database\"\n\t}, {\n\t\tnodeKind: RelationalSchemaNodeKind.table,\n\t\tid: tableName\n\t}];\n}\nfunction columnDependsOn(tableName, columns) {\n\treturn columns.map((column) => [...tableDependsOn(tableName), {\n\t\tnodeKind: RelationalSchemaNodeKind.column,\n\t\tid: `column:${column}`\n\t}]);\n}\nfunction groupBy(rows, key) {\n\tconst groups = /* @__PURE__ */ new Map();\n\tfor (const row of rows) {\n\t\tconst group = groups.get(key(row));\n\t\tif (group === void 0) groups.set(key(row), [row]);\n\t\telse group.push(row);\n\t}\n\treturn groups;\n}\nfunction byPosition(position) {\n\treturn (a, b) => Number(position(a)) - Number(position(b));\n}\nasync function columnOf(row, dataTypes, readLiteralDefault) {\n\tconst reported = readMysqlDefault(row.column_default, row.extra);\n\tconst readDefault = reported === void 0 ? {} : reported.kind === \"function\" ? { resolvedDefault: reported } : await readLiteralDefault(row.table_name, row.column_name, reported.literal.body);\n\tconst reportedType = {\n\t\ttext: row.column_type,\n\t\tkind: void 0,\n\t\tschema: void 0,\n\t\tname: void 0\n\t};\n\treturn {\n\t\tname: row.column_name,\n\t\ttypeText: row.column_type,\n\t\tnullable: row.is_nullable === \"YES\",\n\t\t...ifDefined(\"default\", row.column_default ?? void 0),\n\t\t...readDefault,\n\t\treportedType,\n\t\t...resolveIntrospectedColumnType(reportedType, dataTypes)\n\t};\n}\nfunction indexesOf(rows) {\n\treturn [...groupBy(rows, (row) => row.index_name).entries()].map(([name, parts]) => {\n\t\tconst ordered = [...parts].sort(byPosition((part) => part.seq_in_index));\n\t\tconst expressions = ordered.flatMap((part) => part.expression === null ? [] : [part.expression]);\n\t\treturn {\n\t\t\tname,\n\t\t\tunique: ordered[0]?.non_unique === \"0\",\n\t\t\tcolumns: ordered.flatMap((part) => part.column_name === null ? [] : [part.column_name]),\n\t\t\texpression: expressions.length === 0 ? void 0 : expressions.join(\", \")\n\t\t};\n\t});\n}\nfunction sameColumns(a, b) {\n\treturn a.length === b.length && a.every((column, index) => column === b[index]);\n}\nfunction foreignKeysOf(tableName, rows) {\n\treturn [...groupBy(rows, (row) => row.constraint_name).entries()].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([name, parts]) => {\n\t\tconst ordered = [...parts].sort(byPosition((part) => part.ordinal_position));\n\t\tconst [first] = ordered;\n\t\tconst columns = ordered.map((part) => part.column_name);\n\t\tconst referencedTable = first?.referenced_table_name ?? \"\";\n\t\tconst referencedSchema = first?.referenced_table_schema ?? void 0;\n\t\treturn {\n\t\t\tcolumns,\n\t\t\treferencedTable,\n\t\t\treferencedColumns: ordered.map((part) => part.referenced_column_name),\n\t\t\t...ifDefined(\"referencedSchema\", referencedSchema),\n\t\t\tname,\n\t\t\t...ifDefined(\"onDelete\", first === void 0 ? void 0 : referentialAction(first.delete_rule)),\n\t\t\t...ifDefined(\"onUpdate\", first === void 0 ? void 0 : referentialAction(first.update_rule)),\n\t\t\tdependsOn: [...referencedSchema === void 0 ? [tableDependsOn(referencedTable)] : [], ...columnDependsOn(tableName, columns)]\n\t\t};\n\t});\n}\n/**\n* The index InnoDB creates for a foreign key that no index already serves: it carries the key's name and exactly the key's columns. Introspection leaves it out, because the contract describes the key, not that index. An explicit index can look the same, so one the contract declares is kept.\n*/\nfunction isForeignKeyIndex(tableName, index, foreignKeys, declared) {\n\tif (declared.declaresIndex(tableName, index.name)) return false;\n\treturn foreignKeys.some((fk) => fk.name === index.name && index.expression === void 0 && sameColumns(fk.columns, index.columns));\n}\nasync function tableOf(tableName, rows, dataTypes, readLiteralDefault, declared) {\n\tconst columns = {};\n\tfor (const row of [...rows.columns].sort(byPosition((column) => column.ordinal_position))) columns[row.column_name] = await columnOf(row, dataTypes, readLiteralDefault);\n\tconst foreignKeys = foreignKeysOf(tableName, rows.foreignKeys);\n\tconst indexes = indexesOf(rows.indexes);\n\tconst expressionIndexNames = new Set(indexes.filter((index) => index.expression !== void 0).map((index) => index.name));\n\tconst uniqueConstraintNames = new Set(rows.constraints.filter((constraint) => constraint.constraint_type === \"UNIQUE\" && !expressionIndexNames.has(constraint.constraint_name) && !declared.declaresUniqueIndex(tableName, constraint.constraint_name)).map((constraint) => constraint.constraint_name));\n\tconst primary = indexes.find((index) => index.name === PRIMARY_INDEX);\n\tconst primaryKey = primary === void 0 ? void 0 : {\n\t\tcolumns: primary.columns,\n\t\tdependsOn: columnDependsOn(tableName, primary.columns)\n\t};\n\tconst uniques = indexes.filter((index) => uniqueConstraintNames.has(index.name)).map((index) => ({\n\t\tcolumns: index.columns,\n\t\tname: index.name,\n\t\tdependsOn: columnDependsOn(tableName, index.columns)\n\t}));\n\tconst plainIndexes = indexes.filter((index) => index.name !== PRIMARY_INDEX && !uniqueConstraintNames.has(index.name) && !isForeignKeyIndex(tableName, index, foreignKeys, declared)).map((index) => {\n\t\tconst base = {\n\t\t\tnaming: {\n\t\t\t\tkind: \"exact\",\n\t\t\t\tname: index.name\n\t\t\t},\n\t\t\twhere: void 0,\n\t\t\tunique: index.unique,\n\t\t\tpartial: false,\n\t\t\ttype: void 0,\n\t\t\toptions: void 0,\n\t\t\tannotations: void 0,\n\t\t\tdependsOn: columnDependsOn(tableName, index.columns)\n\t\t};\n\t\treturn index.expression === void 0 ? {\n\t\t\t...base,\n\t\t\tcolumns: index.columns\n\t\t} : {\n\t\t\t...base,\n\t\t\texpression: index.expression\n\t\t};\n\t});\n\treturn new SqlTableIR({\n\t\tname: tableName,\n\t\tcolumns,\n\t\t...ifDefined(\"primaryKey\", primaryKey),\n\t\tforeignKeys,\n\t\tuniques,\n\t\tindexes: plainIndexes\n\t});\n}\n/**\n* The schema IR of the database the rows describe: one flat tree of its tables. MySQL lists every unique index as a UNIQUE constraint, so one is reported as a unique constraint unless the contract declares a unique index of that name on the table, or it indexes an expression. The index InnoDB creates for a foreign key is left out, unless the contract declares an index of that name on the table.\n*/\nasync function buildMysqlSchemaIR(rows, dataTypes, readLiteralDefault, declared = NOTHING_DECLARED) {\n\tconst columnsByTable = groupBy(rows.columns, (row) => row.table_name);\n\tconst indexesByTable = groupBy(rows.indexes, (row) => row.table_name);\n\tconst constraintsByTable = groupBy(rows.constraints, (row) => row.table_name);\n\tconst foreignKeysByTable = groupBy(rows.foreignKeys, (row) => row.table_name);\n\tconst tables = {};\n\tfor (const tableName of rows.tables) tables[tableName] = await tableOf(tableName, {\n\t\tcolumns: columnsByTable.get(tableName) ?? [],\n\t\tindexes: indexesByTable.get(tableName) ?? [],\n\t\tconstraints: constraintsByTable.get(tableName) ?? [],\n\t\tforeignKeys: foreignKeysByTable.get(tableName) ?? []\n\t}, dataTypes, readLiteralDefault, declared);\n\treturn new SqlSchemaIR({ tables });\n}\n//#endregion\n//#region src/core/migrations/introspection-queries.ts\nconst TABLES = `SELECT TABLE_NAME AS table_name\n FROM information_schema.TABLES\n WHERE TABLE_SCHEMA = DATABASE() AND TABLE_TYPE = 'BASE TABLE'\n ORDER BY TABLE_NAME`;\nconst COLUMNS = `SELECT TABLE_NAME AS table_name, COLUMN_NAME AS column_name,\n ORDINAL_POSITION AS ordinal_position, COLUMN_DEFAULT AS column_default,\n IS_NULLABLE AS is_nullable, COLUMN_TYPE AS column_type, EXTRA AS extra\n FROM information_schema.COLUMNS\n WHERE TABLE_SCHEMA = DATABASE()\n ORDER BY TABLE_NAME, ORDINAL_POSITION`;\nconst INDEXES = `SELECT TABLE_NAME AS table_name, INDEX_NAME AS index_name,\n NON_UNIQUE AS non_unique, SEQ_IN_INDEX AS seq_in_index,\n COLUMN_NAME AS column_name, EXPRESSION AS expression\n FROM information_schema.STATISTICS\n WHERE TABLE_SCHEMA = DATABASE()\n ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX`;\nconst CONSTRAINTS = `SELECT TABLE_NAME AS table_name, CONSTRAINT_NAME AS constraint_name,\n CONSTRAINT_TYPE AS constraint_type\n FROM information_schema.TABLE_CONSTRAINTS\n WHERE TABLE_SCHEMA = DATABASE()`;\nconst FOREIGN_KEYS = `SELECT k.TABLE_NAME AS table_name, k.CONSTRAINT_NAME AS constraint_name,\n k.COLUMN_NAME AS column_name, k.ORDINAL_POSITION AS ordinal_position,\n NULLIF(k.REFERENCED_TABLE_SCHEMA, k.TABLE_SCHEMA) AS referenced_table_schema,\n k.REFERENCED_TABLE_NAME AS referenced_table_name,\n k.REFERENCED_COLUMN_NAME AS referenced_column_name,\n r.UPDATE_RULE AS update_rule, r.DELETE_RULE AS delete_rule\n FROM information_schema.KEY_COLUMN_USAGE k\n JOIN information_schema.REFERENTIAL_CONSTRAINTS r\n ON r.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA\n AND r.TABLE_NAME = k.TABLE_NAME\n AND r.CONSTRAINT_NAME = k.CONSTRAINT_NAME\n WHERE k.TABLE_SCHEMA = DATABASE() AND k.REFERENCED_TABLE_NAME IS NOT NULL\n ORDER BY k.TABLE_NAME, k.CONSTRAINT_NAME, k.ORDINAL_POSITION`;\n/** Reads the catalog rows of the connection's database, leaving out the runner's control tables. */\nasync function readMysqlCatalog(driver) {\n\tconst keep = (rows) => rows.filter((row) => !CONTROL_TABLE_NAMES.has(row.table_name));\n\tconst tables = await driver.query(TABLES);\n\tconst columns = await driver.query(COLUMNS);\n\tconst indexes = await driver.query(INDEXES);\n\tconst constraints = await driver.query(CONSTRAINTS);\n\tconst foreignKeys = await driver.query(FOREIGN_KEYS);\n\treturn {\n\t\ttables: keep(tables.rows).map((row) => row.table_name),\n\t\tcolumns: keep(columns.rows),\n\t\tindexes: keep(indexes.rows),\n\t\tconstraints: keep(constraints.rows),\n\t\tforeignKeys: keep(foreignKeys.rows)\n\t};\n}\n//#endregion\n//#region src/core/migrations/marker-ledger.ts\nconst LEDGER_COLUMNS = \"space, migration_name, migration_hash, origin_core_hash, destination_core_hash, operations, created_at\";\nfunction operationCount(operations) {\n\tconst parsed = typeof operations === \"string\" ? parseOperations(operations) : operations;\n\treturn Array.isArray(parsed) ? parsed.length : 0;\n}\nfunction parseOperations(text) {\n\ttry {\n\t\treturn JSON.parse(text);\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction text(row, column) {\n\tconst value = row[column];\n\treturn typeof value === \"string\" ? value : String(value);\n}\n/** The ledger's entries for `space`, or for every space, in the order they were applied. */\nasync function readLedgerEntries(driver, space) {\n\tif (!await tableExists(driver, LEDGER_TABLE_NAME)) return [];\n\tconst select = `SELECT ${LEDGER_COLUMNS} FROM ${quoteIdentifier(LEDGER_TABLE_NAME)}`;\n\tconst { rows } = space === void 0 ? await driver.query(`${select} ORDER BY id`) : await driver.query(`${select} WHERE space = ? ORDER BY id`, [space]);\n\treturn rows.map((row) => {\n\t\tconst origin = row[\"origin_core_hash\"];\n\t\treturn {\n\t\t\tspace: text(row, \"space\"),\n\t\t\tmigrationName: text(row, \"migration_name\"),\n\t\t\tmigrationHash: text(row, \"migration_hash\"),\n\t\t\tfrom: ledgerOriginFromStored(typeof origin === \"string\" ? origin : null),\n\t\t\tto: text(row, \"destination_core_hash\"),\n\t\t\tappliedAt: decodeMysqlDatetime(text(row, \"created_at\")),\n\t\t\toperationCount: operationCount(row[\"operations\"])\n\t\t};\n\t});\n}\nconst MARKER_INSERT = `INSERT INTO ${quoteIdentifier(MARKER_TABLE_NAME)} (space, core_hash, profile_hash, contract_json, canonical_version, updated_at, app_tag, meta, invariants) VALUES (?, ?, ?, NULL, NULL, CURRENT_TIMESTAMP(3), NULL, '{}', ?)`;\nfunction markerInsertParams(space, destination) {\n\treturn [\n\t\tspace,\n\t\tdestination.storageHash,\n\t\tdestination.profileHash,\n\t\tJSON.stringify(destination.invariants ?? [])\n\t];\n}\n/** Inserts the marker row of `space`; fails when the space already has one. */\nasync function insertMarkerRow(driver, space, destination) {\n\tawait driver.query(MARKER_INSERT, markerInsertParams(space, destination));\n}\n/** Writes the marker row of `space`, replacing the row the space already has. */\nasync function upsertMarkerRow(driver, space, destination) {\n\tawait driver.query(`${MARKER_INSERT} AS incoming ON DUPLICATE KEY UPDATE core_hash = incoming.core_hash, profile_hash = incoming.profile_hash, contract_json = incoming.contract_json, canonical_version = incoming.canonical_version, updated_at = CURRENT_TIMESTAMP(3), app_tag = incoming.app_tag, meta = incoming.meta, invariants = incoming.invariants`, markerInsertParams(space, destination));\n}\nfunction invariantsOf(text) {\n\tconst parsed = parseJsonColumn(\"invariants\", text);\n\treturn Array.isArray(parsed) ? parsed.filter((item) => typeof item === \"string\") : [];\n}\n/**\n* Advances the marker row of `space` from `expectedFrom` to `destination`, and says whether it did. MySQL has no `RETURNING`, so the row is read and locked with `FOR UPDATE` first, inside the transaction the caller holds, and written only when it still holds `expectedFrom`. Supplied invariants are merged with the stored ones.\n*/\nasync function compareAndSwapMarkerRow(driver, space, expectedFrom, destination) {\n\tconst { rows } = await driver.query(`SELECT core_hash, invariants FROM ${quoteIdentifier(MARKER_TABLE_NAME)} WHERE space = ? FOR UPDATE`, [space]);\n\tconst [row] = rows;\n\tif (row === void 0 || row[\"core_hash\"] !== expectedFrom) return false;\n\tconst invariants = destination.invariants === void 0 ? void 0 : [.../* @__PURE__ */ new Set([...invariantsOf(row[\"invariants\"]), ...destination.invariants])].sort();\n\tawait driver.query(`UPDATE ${quoteIdentifier(MARKER_TABLE_NAME)} SET core_hash = ?, profile_hash = ?, updated_at = CURRENT_TIMESTAMP(3)${invariants === void 0 ? \"\" : \", invariants = ?\"} WHERE space = ? AND core_hash = ?`, [\n\t\tdestination.storageHash,\n\t\tdestination.profileHash,\n\t\t...invariants === void 0 ? [] : [JSON.stringify(invariants)],\n\t\tspace,\n\t\texpectedFrom\n\t]);\n\treturn true;\n}\n/** Appends a ledger entry for `space`. */\nasync function insertLedgerRow(driver, space, entry) {\n\tawait driver.query(`INSERT INTO ${quoteIdentifier(LEDGER_TABLE_NAME)} (space, migration_name, migration_hash, origin_core_hash, destination_core_hash, operations) VALUES (?, ?, ?, ?, ?, ?)`, [\n\t\tspace,\n\t\tentry.migrationName,\n\t\tentry.migrationHash,\n\t\tentry.from,\n\t\tentry.to,\n\t\tJSON.stringify(entry.operations)\n\t]);\n}\n//#endregion\n//#region src/core/migrations/control-adapter.ts\n/** A DDL node MySQL does not build, such as one another target's visitor accepts. */\nfunction unsupportedDdl(ast) {\n\treturn structuredError(\"RUNTIME.DDL_UNSUPPORTED\", `The MySQL control adapter cannot lower the DDL node \"${ast.kind}\".`, { meta: {\n\t\tsurface: \"control-adapter\",\n\t\tkind: ast.kind\n\t} });\n}\n/**\n* The MySQL control adapter. It introspects the connection's database from `information_schema`, creates, reads and writes the marker and ledger tables, takes the marker lock, and runs work in a transaction. Query lowering refuses with `RUNTIME.AST_UNSUPPORTED`.\n*/\nvar MysqlControlAdapter = class {\n\tcodecRegistry;\n\tdeclaredDataTypes;\n\tfamilyId = \"sql\";\n\ttargetId = \"mysql\";\n\tmarkerLocation = MARKER_TABLE_NAME;\n\t/** `declaredDataTypes` are the stack's data types, which introspection resolves each column's reported type over. */\n\tconstructor(codecRegistry, declaredDataTypes) {\n\t\tthis.codecRegistry = codecRegistry;\n\t\tthis.declaredDataTypes = declaredDataTypes;\n\t}\n\tbootstrapControlTableQueries() {\n\t\treturn buildControlTableBootstrapQueries();\n\t}\n\tbootstrapSignMarkerQueries() {\n\t\treturn buildSignMarkerBootstrapQueries();\n\t}\n\tlower(ast) {\n\t\tif (isDdlNode(ast)) throw structuredError(\"RUNTIME.DDL_UNSUPPORTED\", \"lower() cannot lower DDL: DDL default literals require inline codec encoding, which is async. Use lowerToExecuteRequest().\", { meta: { surface: \"control-adapter\" } });\n\t\tthrow mysqlQueryNotYetSupported(\"Lowering queries\");\n\t}\n\tasync lowerToExecuteRequest(ast) {\n\t\tif (!isDdlNode(ast)) throw mysqlQueryNotYetSupported(\"Lowering queries\");\n\t\tif (typeof ast.accept !== \"function\") throw unsupportedDdl(ast);\n\t\treturn ast.accept(new Proxy({ createTable: (node) => renderMysqlCreateTable(node, this.codecRegistry) }, { get: (target, method) => Reflect.get(target, method) ?? (() => Promise.reject(unsupportedDdl(ast))) }));\n\t}\n\tasync renderColumnDefault(column, table) {\n\t\tif (column.default === void 0) return \"\";\n\t\treturn renderMysqlColumnDefault(column.default, column.type, this.codecRegistry, column.codecRef, {\n\t\t\ttable,\n\t\t\tcolumn: column.name\n\t\t});\n\t}\n\tasync readMarker(driver, space) {\n\t\tconst result = await readMarkerResult(driver, space);\n\t\treturn result.kind === \"present\" ? result.record : null;\n\t}\n\tasync readAllMarkers(driver) {\n\t\treturn withMarkerReadErrorHandling(async () => {\n\t\t\tconst markers = /* @__PURE__ */ new Map();\n\t\t\tfor (const row of await readMarkerRows(driver, void 0) ?? []) {\n\t\t\t\tconst space = String(row[\"space\"]);\n\t\t\t\tmarkers.set(space, parseMarkerRowSafely(row, () => decodeMysqlMarkerRow(row), {\n\t\t\t\t\tspace,\n\t\t\t\t\tmarkerLocation: MARKER_TABLE_NAME\n\t\t\t\t}));\n\t\t\t}\n\t\t\treturn markers;\n\t\t}, {\n\t\t\tspace: APP_SPACE_ID,\n\t\t\tmarkerLocation: MARKER_TABLE_NAME\n\t\t});\n\t}\n\tasync readLedger(driver, space) {\n\t\treturn withMarkerReadErrorHandling(() => readLedgerEntries(driver, space), {\n\t\t\tspace: space ?? \"*\",\n\t\t\tmarkerLocation: LEDGER_TABLE_NAME\n\t\t});\n\t}\n\tasync insertMarker(driver, space, destination) {\n\t\tawait insertMarkerRow(driver, space, destination);\n\t}\n\tasync initMarker(driver, space, destination) {\n\t\tawait upsertMarkerRow(driver, space, destination);\n\t}\n\tasync updateMarker(driver, space, expectedFrom, destination) {\n\t\treturn compareAndSwapMarkerRow(driver, space, expectedFrom, destination);\n\t}\n\tasync writeLedgerEntry(driver, space, entry) {\n\t\tawait insertLedgerRow(driver, space, entry);\n\t}\n\t/** Takes no lock: MySQL's `GET_LOCK` lives for the session, not the transaction, so {@link holdMarkerLock} takes it around the transaction instead. */\n\tasync lockMarker(_driver) {}\n\t/** Takes `GET_LOCK` before `work` runs and releases it when `work` ends, so `db sign` creates the marker table, whose DDL would end a transaction, under the lock. */\n\tasync holdMarkerLock(driver, work) {\n\t\treturn withMarkerLock(driver, work);\n\t}\n\tasync withTransaction(driver, fn) {\n\t\treturn this.#inTransaction(driver, fn);\n\t}\n\tasync #inTransaction(driver, fn) {\n\t\tawait driver.query(\"START TRANSACTION\");\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await fn();\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tawait driver.query(\"ROLLBACK\");\n\t\t\t} catch (rollbackError) {\n\t\t\t\tif (error instanceof Error && error.cause === void 0) error.cause = rollbackError;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait driver.query(\"COMMIT\");\n\t\treturn result;\n\t}\n\tasync introspect(driver, contract) {\n\t\tconst columns = contractColumns(contract);\n\t\treturn buildMysqlSchemaIR(await readMysqlCatalog(driver), this.declaredDataTypes, async (tableName, columnName, rawDefault) => {\n\t\t\tconst column = columns.columnOf(void 0, tableName, columnName);\n\t\t\tconst codec = column === void 0 ? void 0 : codecForRef(this.codecRegistry, column.codecRef);\n\t\t\tif (codec === void 0) return {};\n\t\t\treturn readColumnDefault(codec, {\n\t\t\t\tliteral: {\n\t\t\t\t\tkind: \"value\",\n\t\t\t\t\tbody: rawDefault\n\t\t\t\t},\n\t\t\t\traw: rawDefault\n\t\t\t}, void 0);\n\t\t}, declaredIndexes(contract));\n\t}\n};\n//#endregion\n//#region src/exports/control.ts\nconst mysqlAdapterDescriptor = {\n\t...mysqlAdapterDescriptorMeta,\n\tcontrolMutationDefaults: {\n\t\tdefaultFunctionRegistry: new Map(Object.entries(sqlDefaultFunctions())),\n\t\tgeneratorDescriptors: []\n\t},\n\tcreate(stack) {\n\t\treturn new MysqlControlAdapter(assembleMysqlCodecRegistry(stack.target, stack.extensions), stack.declaredDataTypes.map(({ type }) => type));\n\t}\n};\n//#endregion\nexport { MysqlControlAdapter, buildMysqlSchemaIR, mysqlAdapterDescriptor as default };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { t as MysqlPlanTargetDetails } from "./planner-target-details-D6g2uSp--C5NKHmCc.mjs";
|
|
2
|
+
import { SqlNamespaceBase, SqlNamespaceEntries, SqlNamespaceInput, StorageTable } from "@prisma/orm-family-sql/contract/types";
|
|
3
|
+
import { SqlControlTargetDescriptor } from "@prisma/orm-family-sql/family/control";
|
|
4
|
+
//#region ../../../3-targets/mysql/1-target/dist/control.d.mts
|
|
5
|
+
//#region src/core/migrations/control-target.d.ts
|
|
6
|
+
declare const mysqlControlTargetDescriptor: SqlControlTargetDescriptor<'mysql', MysqlPlanTargetDetails>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/core/mysql-database.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* The MySQL database a connection uses, as the contract's one namespace. Tables are addressed unqualified, so the contract runs against whichever database the connection names.
|
|
11
|
+
*/
|
|
12
|
+
declare class MysqlDatabase extends SqlNamespaceBase {
|
|
13
|
+
readonly kind: string;
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly entries: SqlNamespaceEntries;
|
|
16
|
+
constructor(input: SqlNamespaceInput);
|
|
17
|
+
get table(): Readonly<Record<string, StorageTable>>;
|
|
18
|
+
qualifier(): string;
|
|
19
|
+
qualifyTable(tableName: string): string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The namespace factory the MySQL target hands `defineContract` and the PSL interpreter. MySQL has one namespace per connection, the framework's unbound slot.
|
|
23
|
+
*/
|
|
24
|
+
declare function mysqlCreateNamespace(input: SqlNamespaceInput): MysqlDatabase;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { mysqlControlTargetDescriptor as n, mysqlCreateNamespace as r, MysqlDatabase as t };
|
|
27
|
+
//# sourceMappingURL=control-_4epnrIW.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-_4epnrIW.d.mts","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/control.d.mts"],"mappings":";;;;;cAIc,8BAA8B,oCAAoC;;;;;;cAMlE,sBAAsB;WACzB;WACA;WACA,SAAS;EAClB,YAAY,OAAO;MACf,SAAS,SAAS,eAAe;EACrC;EACA,aAAa;;;;;iBAKE,qBAAqB,OAAO,oBAAoB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region ../../../3-targets/mysql/1-target/dist/control-tables.d.mts
|
|
2
|
+
//#region src/core/control-tables.d.ts
|
|
3
|
+
declare const MARKER_TABLE_NAME = "_prisma_marker";
|
|
4
|
+
declare const LEDGER_TABLE_NAME = "_prisma_ledger";
|
|
5
|
+
/** The tables the migration runner owns, which introspection leaves out and the planner never drops. MySQL has no schema inside a database to hold them, so they sit beside the application's tables. */
|
|
6
|
+
declare const CONTROL_TABLE_NAMES: ReadonlySet<string>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { LEDGER_TABLE_NAME as n, MARKER_TABLE_NAME as r, CONTROL_TABLE_NAMES as t };
|
|
9
|
+
//# sourceMappingURL=control-tables-CHw2F-rg.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-tables-CHw2F-rg.d.mts","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/control-tables.d.mts"],"mappings":";;cACc;cACA;;cAEA,qBAAqB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region ../../../3-targets/mysql/1-target/dist/control-tables-CcQ77JE7.mjs
|
|
2
|
+
const MARKER_TABLE_NAME = "_prisma_marker";
|
|
3
|
+
const LEDGER_TABLE_NAME = "_prisma_ledger";
|
|
4
|
+
/** The tables the migration runner owns, which introspection leaves out and the planner never drops. MySQL has no schema inside a database to hold them, so they sit beside the application's tables. */
|
|
5
|
+
const CONTROL_TABLE_NAMES = /* @__PURE__ */ new Set([MARKER_TABLE_NAME, LEDGER_TABLE_NAME]);
|
|
6
|
+
//#endregion
|
|
7
|
+
export { LEDGER_TABLE_NAME as n, MARKER_TABLE_NAME as r, CONTROL_TABLE_NAMES as t };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=control-tables-CcQ77JE7-CxTQYoQJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-tables-CcQ77JE7-CxTQYoQJ.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/control-tables-CcQ77JE7.mjs"],"sourcesContent":["//#region src/core/control-tables.ts\nconst MARKER_TABLE_NAME = \"_prisma_marker\";\nconst LEDGER_TABLE_NAME = \"_prisma_ledger\";\n/** The tables the migration runner owns, which introspection leaves out and the planner never drops. MySQL has no schema inside a database to hold them, so they sit beside the application's tables. */\nconst CONTROL_TABLE_NAMES = /* @__PURE__ */ new Set([MARKER_TABLE_NAME, LEDGER_TABLE_NAME]);\n//#endregion\nexport { LEDGER_TABLE_NAME as n, MARKER_TABLE_NAME as r, CONTROL_TABLE_NAMES as t };\n\n//# sourceMappingURL=control-tables-CcQ77JE7.mjs.map"],"mappings":";AACA,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;;AAE1B,MAAM,sCAAsC,IAAI,IAAI,CAAC,mBAAmB,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { d as mysqlText, t as mysqlBigint, u as mysqlInt } from "./data-types-Dv9gwVRV-BZPzCWZk.mjs";
|
|
2
|
+
import { createNumberClassifier, numeralText, signedRange } from "@prisma/orm-framework/components/codec";
|
|
3
|
+
//#region ../../../3-targets/mysql/1-target/dist/data-type-entries-B0AoBozh.mjs
|
|
4
|
+
const classifyMysqlNumber = createNumberClassifier({ integers: [{
|
|
5
|
+
type: mysqlInt.id,
|
|
6
|
+
form: "number",
|
|
7
|
+
...signedRange(32)
|
|
8
|
+
}, {
|
|
9
|
+
type: mysqlBigint.id,
|
|
10
|
+
form: "text",
|
|
11
|
+
...signedRange(64)
|
|
12
|
+
}] });
|
|
13
|
+
function printNumber(value) {
|
|
14
|
+
return typeof value === "number" ? numeralText(value) : String(value);
|
|
15
|
+
}
|
|
16
|
+
function mysqlDataTypeEntries() {
|
|
17
|
+
return {
|
|
18
|
+
[mysqlText.id]: {
|
|
19
|
+
written: {
|
|
20
|
+
kind: "plain",
|
|
21
|
+
syntax: "string",
|
|
22
|
+
parse: (text) => text
|
|
23
|
+
},
|
|
24
|
+
print: (value) => String(value),
|
|
25
|
+
documentation: "Text."
|
|
26
|
+
},
|
|
27
|
+
[mysqlBigint.id]: {
|
|
28
|
+
written: {
|
|
29
|
+
kind: "plain",
|
|
30
|
+
syntax: "number",
|
|
31
|
+
types: [mysqlInt.id, mysqlBigint.id],
|
|
32
|
+
classify: classifyMysqlNumber
|
|
33
|
+
},
|
|
34
|
+
print: printNumber,
|
|
35
|
+
documentation: "A whole number, whose type is the narrowest MySQL integer type that holds it."
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { mysqlDataTypeEntries as t };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=data-type-entries-B0AoBozh-f9AEUIUQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-type-entries-B0AoBozh-f9AEUIUQ.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/data-type-entries-B0AoBozh.mjs"],"sourcesContent":["import { d as mysqlText, t as mysqlBigint, u as mysqlInt } from \"./data-types-Dv9gwVRV.mjs\";\nimport { createNumberClassifier, numeralText, signedRange } from \"@internal/framework-components/codec\";\n//#region src/core/data-type-entries.ts\nconst classifyMysqlNumber = createNumberClassifier({ integers: [{\n\ttype: mysqlInt.id,\n\tform: \"number\",\n\t...signedRange(32)\n}, {\n\ttype: mysqlBigint.id,\n\tform: \"text\",\n\t...signedRange(64)\n}] });\nfunction printNumber(value) {\n\treturn typeof value === \"number\" ? numeralText(value) : String(value);\n}\nfunction mysqlDataTypeEntries() {\n\treturn {\n\t\t[mysqlText.id]: {\n\t\t\twritten: {\n\t\t\t\tkind: \"plain\",\n\t\t\t\tsyntax: \"string\",\n\t\t\t\tparse: (text) => text\n\t\t\t},\n\t\t\tprint: (value) => String(value),\n\t\t\tdocumentation: \"Text.\"\n\t\t},\n\t\t[mysqlBigint.id]: {\n\t\t\twritten: {\n\t\t\t\tkind: \"plain\",\n\t\t\t\tsyntax: \"number\",\n\t\t\t\ttypes: [mysqlInt.id, mysqlBigint.id],\n\t\t\t\tclassify: classifyMysqlNumber\n\t\t\t},\n\t\t\tprint: printNumber,\n\t\t\tdocumentation: \"A whole number, whose type is the narrowest MySQL integer type that holds it.\"\n\t\t}\n\t};\n}\n//#endregion\nexport { mysqlDataTypeEntries as t };\n\n//# sourceMappingURL=data-type-entries-B0AoBozh.mjs.map"],"mappings":";;;AAGA,MAAM,sBAAsB,uBAAuB,EAAE,UAAU,CAAC;CAC/D,MAAM,SAAS;CACf,MAAM;CACN,GAAG,YAAY,EAAE;AAClB,GAAG;CACF,MAAM,YAAY;CAClB,MAAM;CACN,GAAG,YAAY,EAAE;AAClB,CAAC,EAAE,CAAC;AACJ,SAAS,YAAY,OAAO;CAC3B,OAAO,OAAO,UAAU,WAAW,YAAY,KAAK,IAAI,OAAO,KAAK;AACrE;AACA,SAAS,uBAAuB;CAC/B,OAAO;GACL,UAAU,KAAK;GACf,SAAS;IACR,MAAM;IACN,QAAQ;IACR,QAAQ,SAAS;GAClB;GACA,QAAQ,UAAU,OAAO,KAAK;GAC9B,eAAe;EAChB;GACC,YAAY,KAAK;GACjB,SAAS;IACR,MAAM;IACN,QAAQ;IACR,OAAO,CAAC,SAAS,IAAI,YAAY,EAAE;IACnC,UAAU;GACX;GACA,OAAO;GACP,eAAe;EAChB;CACD;AACD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DataType, DataTypeId } from "@prisma/orm-framework/components/codec";
|
|
2
|
+
//#region ../../../3-targets/mysql/1-target/dist/data-types-BpihGKoK.d.mts
|
|
3
|
+
//#region src/core/data-types.d.ts
|
|
4
|
+
declare const mysqlText: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<Readonly<Record<string, unknown>>>;
|
|
5
|
+
/** A signed 32-bit integer, stored as a JSON number. */
|
|
6
|
+
declare const mysqlInt: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<Readonly<Record<string, unknown>>>;
|
|
7
|
+
/** A signed 64-bit integer, stored as digit text so that no digit is lost. */
|
|
8
|
+
declare const mysqlBigint: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<Readonly<Record<string, unknown>>>;
|
|
9
|
+
/** The length of `varchar`, which MySQL requires, up to the largest it accepts. */
|
|
10
|
+
declare const mysqlVarcharParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
11
|
+
length: number;
|
|
12
|
+
}, {}>;
|
|
13
|
+
declare const mysqlVarchar: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<{
|
|
14
|
+
length: number;
|
|
15
|
+
}>;
|
|
16
|
+
/** The length of `char`, at most 255; a bare `char` is `char(1)`. */
|
|
17
|
+
declare const mysqlCharParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
18
|
+
length?: number;
|
|
19
|
+
}, {}>;
|
|
20
|
+
declare const mysqlChar: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<{
|
|
21
|
+
length?: number;
|
|
22
|
+
}>;
|
|
23
|
+
/** The fractional-second precision of `datetime`, 0 to 6; MySQL prints a precision of 0 as a bare `datetime`. */
|
|
24
|
+
declare const mysqlDatetimeParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
25
|
+
precision?: number;
|
|
26
|
+
}, {}>;
|
|
27
|
+
/**
|
|
28
|
+
* The value of `mysql/datetime`: a date and time without a time zone, ISO 8601 text with a `T` and no trailing zeros in the fraction, within MySQL's range. Throws `CONTRACT.CAST_REFUSED` for text that names no such date and time.
|
|
29
|
+
*/
|
|
30
|
+
declare function mysqlDatetimeText(text: string): string;
|
|
31
|
+
declare const mysqlDatetime: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<{
|
|
32
|
+
precision?: number;
|
|
33
|
+
}>;
|
|
34
|
+
/** The members of a native enum column, in the order they are declared. */
|
|
35
|
+
declare const mysqlEnumParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
36
|
+
values?: string[];
|
|
37
|
+
}, {}>;
|
|
38
|
+
/** `enum('A','B')`, the text MySQL's catalog prints for the column type, with each member a quoted literal. */
|
|
39
|
+
declare function renderMysqlEnumType(values: readonly string[] | undefined): string;
|
|
40
|
+
/**
|
|
41
|
+
* A native MySQL enum. Its name is the catalog text `enum('A','B')`, so `db verify` compares the members and their order with what MySQL reports (ADR 273). A column's members are its value set's, written into its parameters by the target's namespace (see `mysql-database.ts`).
|
|
42
|
+
*/
|
|
43
|
+
declare const mysqlEnum: import("@prisma/orm-family-sql/contract/data-type").SqlDataType<{
|
|
44
|
+
values?: string[];
|
|
45
|
+
}>;
|
|
46
|
+
/** Every data type this target registers. */
|
|
47
|
+
declare const mysqlDataTypes: readonly DataType[];
|
|
48
|
+
/** MySQL's text data types, which a SQL discriminator column may have. */
|
|
49
|
+
declare const mysqlTextDataTypes: readonly DataTypeId[];
|
|
50
|
+
//#endregion
|
|
51
|
+
export { mysqlDatetime as a, mysqlEnum as c, mysqlText as d, mysqlTextDataTypes as f, renderMysqlEnumType as h, mysqlDataTypes as i, mysqlEnumParams as l, mysqlVarcharParams as m, mysqlChar as n, mysqlDatetimeParams as o, mysqlVarchar as p, mysqlCharParams as r, mysqlDatetimeText as s, mysqlBigint as t, mysqlInt as u };
|
|
52
|
+
//# sourceMappingURL=data-types-BpihGKoK-BMW-m4EN.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-types-BpihGKoK-BMW-m4EN.d.mts","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/data-types-BpihGKoK.d.mts"],"mappings":";;;cAEc,sDAAsD,YAAY,SAAS;;cAE3E,qDAAqD,YAAY,SAAS;;cAE1E,wDAAwD,YAAY,SAAS;;cAE7E,kEAAkE;EAC9E;;cAEY,yDAAyD;EACrE;;;cAGY,+DAA+D;EAC3E;;cAEY,sDAAsD;EAClE;;;cAGY,mEAAmE;EAC/E;;;;;iBAKe,kBAAkB;cACrB,0DAA0D;EACtE;;;cAGY,+DAA+D;EAC3E;;;iBAGe,oBAAoB;;;;cAIvB,sDAAsD;EAClE;;;cAGY,yBAAyB;;cAEzB,6BAA6B"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { t as mysqlError } from "./errors-rvH_F2Yj-BQrO_--u.mjs";
|
|
2
|
+
import { r as quoteLiteral } from "./sql-utils-Db0IQO_B-PaULnfrE.mjs";
|
|
3
|
+
import { INT32_RANGE, INT64_RANGE, dateTimeStoredText, numeralText, readJsonInteger, readJsonIntegerText, readJsonString, refuseJsonValue } from "@prisma/orm-framework/components/codec";
|
|
4
|
+
import { structuredError } from "@prisma/orm-framework/utils/structured-error";
|
|
5
|
+
import { sqlDataType, sqlRawDataType } from "@prisma/orm-family-sql/contract/data-type";
|
|
6
|
+
import { type } from "arktype";
|
|
7
|
+
//#region ../../../3-targets/mysql/1-target/dist/data-types-Dv9gwVRV.mjs
|
|
8
|
+
const unchanged = (value) => value;
|
|
9
|
+
function wrongShape(value, expected) {
|
|
10
|
+
throw structuredError("CONTRACT.CAST_REFUSED", `Expected ${expected}, got ${JSON.stringify(value)}.`, {
|
|
11
|
+
why: "A cast reads the stored form of the type it takes values of.",
|
|
12
|
+
fix: "Hand the cast a value in the shape its source type stores."
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const asNumeralText = (value) => typeof value === "number" ? numeralText(value) : wrongShape(value, "a number");
|
|
16
|
+
function integerParam(params, name) {
|
|
17
|
+
const value = params[name];
|
|
18
|
+
return typeof value === "number" ? value : void 0;
|
|
19
|
+
}
|
|
20
|
+
/** Text of at most `length` characters, counted as code points, as MySQL counts characters. */
|
|
21
|
+
function readTextOfLength(owner, json, length) {
|
|
22
|
+
const text = readJsonString(owner, json);
|
|
23
|
+
if (length !== void 0 && [...text].length > length) return refuseJsonValue(owner, `a string of at most ${length} ${length === 1 ? "character" : "characters"}`, json);
|
|
24
|
+
return json;
|
|
25
|
+
}
|
|
26
|
+
const mysqlText = sqlDataType("mysql/text", {
|
|
27
|
+
texts: [{
|
|
28
|
+
text: "text",
|
|
29
|
+
written: true,
|
|
30
|
+
catalog: true
|
|
31
|
+
}],
|
|
32
|
+
read: (json) => readJsonString("mysql/text", json),
|
|
33
|
+
casts: {}
|
|
34
|
+
});
|
|
35
|
+
const fromText = { [mysqlText.id]: unchanged };
|
|
36
|
+
/** A signed 32-bit integer, stored as a JSON number. */
|
|
37
|
+
const mysqlInt = sqlDataType("mysql/int", {
|
|
38
|
+
texts: [{
|
|
39
|
+
text: "int",
|
|
40
|
+
written: true,
|
|
41
|
+
catalog: true
|
|
42
|
+
}, { text: "integer" }],
|
|
43
|
+
read: (json) => readJsonInteger("mysql/int", json, INT32_RANGE),
|
|
44
|
+
casts: {}
|
|
45
|
+
});
|
|
46
|
+
/** A signed 64-bit integer, stored as digit text so that no digit is lost. */
|
|
47
|
+
const mysqlBigint = sqlDataType("mysql/bigint", {
|
|
48
|
+
texts: [{
|
|
49
|
+
text: "bigint",
|
|
50
|
+
written: true,
|
|
51
|
+
catalog: true
|
|
52
|
+
}],
|
|
53
|
+
read: (json) => {
|
|
54
|
+
readJsonIntegerText("mysql/bigint", json, INT64_RANGE);
|
|
55
|
+
return json;
|
|
56
|
+
},
|
|
57
|
+
casts: { [mysqlInt.id]: asNumeralText }
|
|
58
|
+
});
|
|
59
|
+
/** The length of `varchar`, which MySQL requires, up to the largest it accepts. */
|
|
60
|
+
const mysqlVarcharParams = type({ length: "number.integer >= 1 & number.integer <= 65535" });
|
|
61
|
+
const mysqlVarchar = sqlDataType("mysql/varchar", {
|
|
62
|
+
params: mysqlVarcharParams,
|
|
63
|
+
texts: [{
|
|
64
|
+
text: "varchar({length})",
|
|
65
|
+
written: true,
|
|
66
|
+
catalog: true
|
|
67
|
+
}],
|
|
68
|
+
read: (json, params) => readTextOfLength("mysql/varchar", json, integerParam(params, "length")),
|
|
69
|
+
casts: fromText
|
|
70
|
+
});
|
|
71
|
+
/** The length of `char`, at most 255; a bare `char` is `char(1)`. */
|
|
72
|
+
const mysqlCharParams = type({ "length?": "number.integer >= 1 & number.integer <= 255" });
|
|
73
|
+
const mysqlChar = sqlDataType("mysql/char", {
|
|
74
|
+
params: mysqlCharParams,
|
|
75
|
+
texts: [{
|
|
76
|
+
text: "char",
|
|
77
|
+
written: true
|
|
78
|
+
}, {
|
|
79
|
+
text: "char({length})",
|
|
80
|
+
written: true,
|
|
81
|
+
catalog: true
|
|
82
|
+
}],
|
|
83
|
+
read: (json, params) => readTextOfLength("mysql/char", json, integerParam(params, "length") ?? 1),
|
|
84
|
+
normalize: (params) => params.length === void 0 ? {
|
|
85
|
+
...params,
|
|
86
|
+
length: 1
|
|
87
|
+
} : params,
|
|
88
|
+
casts: fromText
|
|
89
|
+
});
|
|
90
|
+
/** The fractional-second precision of `datetime`, 0 to 6; MySQL prints a precision of 0 as a bare `datetime`. */
|
|
91
|
+
const mysqlDatetimeParams = type({ "precision?": "number.integer >= 0 & number.integer <= 6" });
|
|
92
|
+
const DATETIME_RANGE = {
|
|
93
|
+
earliest: "1000-01-01T00:00:00",
|
|
94
|
+
latest: "9999-12-31T23:59:59.999999"
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* The value of `mysql/datetime`: a date and time without a time zone, ISO 8601 text with a `T` and no trailing zeros in the fraction, within MySQL's range. Throws `CONTRACT.CAST_REFUSED` for text that names no such date and time.
|
|
98
|
+
*/
|
|
99
|
+
function mysqlDatetimeText(text) {
|
|
100
|
+
return dateTimeStoredText(text, {
|
|
101
|
+
shape: "dateTime",
|
|
102
|
+
ownerId: "mysql/datetime",
|
|
103
|
+
range: DATETIME_RANGE
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function storedDatetime(text) {
|
|
107
|
+
try {
|
|
108
|
+
return mysqlDatetimeText(text);
|
|
109
|
+
} catch {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const readDatetime = (json) => typeof json === "string" && storedDatetime(json) !== void 0 ? json : refuseJsonValue("mysql/datetime", "ISO 8601 date and time text without a UTC offset, as in \"2024-01-01T00:00:00\"", json);
|
|
114
|
+
const spellDatetime = (json) => typeof json === "string" ? storedDatetime(json) ?? json : json;
|
|
115
|
+
const mysqlDatetime = sqlDataType("mysql/datetime", {
|
|
116
|
+
params: mysqlDatetimeParams,
|
|
117
|
+
texts: [{
|
|
118
|
+
text: "datetime",
|
|
119
|
+
written: true,
|
|
120
|
+
catalog: true
|
|
121
|
+
}, {
|
|
122
|
+
text: "datetime({precision})",
|
|
123
|
+
written: true,
|
|
124
|
+
catalog: true
|
|
125
|
+
}],
|
|
126
|
+
read: readDatetime,
|
|
127
|
+
spell: spellDatetime,
|
|
128
|
+
normalize: ({ precision, ...rest }) => precision === 0 ? rest : {
|
|
129
|
+
...rest,
|
|
130
|
+
precision
|
|
131
|
+
},
|
|
132
|
+
casts: {}
|
|
133
|
+
});
|
|
134
|
+
/** The members of a native enum column, in the order they are declared. */
|
|
135
|
+
const mysqlEnumParams = type({ "values?": "string[]" });
|
|
136
|
+
/** `enum('A','B')`, the text MySQL's catalog prints for the column type, with each member a quoted literal. */
|
|
137
|
+
function renderMysqlEnumType(values) {
|
|
138
|
+
if (values === void 0 || values.length === 0) throw mysqlError("CONTRACT.TYPE_PARAMS_INVALID", "A MySQL enum column type needs at least one member.", {
|
|
139
|
+
why: "A native enum column is written with its members, and this column has none.",
|
|
140
|
+
fix: "Type the column with a PSL enum or an enumType() that declares its members.",
|
|
141
|
+
meta: { dataType: "mysql/enum" }
|
|
142
|
+
});
|
|
143
|
+
return `enum(${values.map(quoteLiteral).join(",")})`;
|
|
144
|
+
}
|
|
145
|
+
const readEnumMember = (json, params) => {
|
|
146
|
+
const member = readJsonString("mysql/enum", json);
|
|
147
|
+
const values = params["values"];
|
|
148
|
+
if (Array.isArray(values) && !values.includes(member)) return refuseJsonValue("mysql/enum", `one of the members ${values.join(", ")}`, json);
|
|
149
|
+
return json;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* A native MySQL enum. Its name is the catalog text `enum('A','B')`, so `db verify` compares the members and their order with what MySQL reports (ADR 273). A column's members are its value set's, written into its parameters by the target's namespace (see `mysql-database.ts`).
|
|
153
|
+
*/
|
|
154
|
+
const mysqlEnum = sqlDataType("mysql/enum", {
|
|
155
|
+
params: mysqlEnumParams,
|
|
156
|
+
nameIsCatalogText: true,
|
|
157
|
+
render: ({ values }) => renderMysqlEnumType(values),
|
|
158
|
+
read: readEnumMember,
|
|
159
|
+
casts: fromText
|
|
160
|
+
});
|
|
161
|
+
/** Every data type this target registers. */
|
|
162
|
+
const mysqlDataTypes = [
|
|
163
|
+
mysqlText,
|
|
164
|
+
mysqlInt,
|
|
165
|
+
mysqlBigint,
|
|
166
|
+
mysqlVarchar,
|
|
167
|
+
mysqlChar,
|
|
168
|
+
mysqlDatetime,
|
|
169
|
+
mysqlEnum,
|
|
170
|
+
sqlRawDataType
|
|
171
|
+
];
|
|
172
|
+
/** MySQL's text data types, which a SQL discriminator column may have. */
|
|
173
|
+
const mysqlTextDataTypes = [
|
|
174
|
+
mysqlText.id,
|
|
175
|
+
mysqlVarchar.id,
|
|
176
|
+
mysqlChar.id
|
|
177
|
+
];
|
|
178
|
+
//#endregion
|
|
179
|
+
export { mysqlDatetime as a, mysqlEnum as c, mysqlText as d, mysqlTextDataTypes as f, renderMysqlEnumType as h, mysqlDataTypes as i, mysqlEnumParams as l, mysqlVarcharParams as m, mysqlChar as n, mysqlDatetimeParams as o, mysqlVarchar as p, mysqlCharParams as r, mysqlDatetimeText as s, mysqlBigint as t, mysqlInt as u };
|
|
180
|
+
|
|
181
|
+
//# sourceMappingURL=data-types-Dv9gwVRV-BZPzCWZk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-types-Dv9gwVRV-BZPzCWZk.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/data-types-Dv9gwVRV.mjs"],"sourcesContent":["import { t as mysqlError } from \"./errors-rvH_F2Yj.mjs\";\nimport { r as quoteLiteral } from \"./sql-utils-Db0IQO_B.mjs\";\nimport { INT32_RANGE, INT64_RANGE, dateTimeStoredText, numeralText, readJsonInteger, readJsonIntegerText, readJsonString, refuseJsonValue } from \"@internal/framework-components/codec\";\nimport { structuredError } from \"@internal/utils/structured-error\";\nimport { sqlDataType, sqlRawDataType } from \"@internal/sql-contract/data-type\";\nimport { type } from \"arktype\";\n//#region src/core/data-types.ts\nconst unchanged = (value) => value;\nfunction wrongShape(value, expected) {\n\tthrow structuredError(\"CONTRACT.CAST_REFUSED\", `Expected ${expected}, got ${JSON.stringify(value)}.`, {\n\t\twhy: \"A cast reads the stored form of the type it takes values of.\",\n\t\tfix: \"Hand the cast a value in the shape its source type stores.\"\n\t});\n}\nconst asNumeralText = (value) => typeof value === \"number\" ? numeralText(value) : wrongShape(value, \"a number\");\nfunction integerParam(params, name) {\n\tconst value = params[name];\n\treturn typeof value === \"number\" ? value : void 0;\n}\n/** Text of at most `length` characters, counted as code points, as MySQL counts characters. */\nfunction readTextOfLength(owner, json, length) {\n\tconst text = readJsonString(owner, json);\n\tif (length !== void 0 && [...text].length > length) return refuseJsonValue(owner, `a string of at most ${length} ${length === 1 ? \"character\" : \"characters\"}`, json);\n\treturn json;\n}\nconst mysqlText = sqlDataType(\"mysql/text\", {\n\ttexts: [{\n\t\ttext: \"text\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}],\n\tread: (json) => readJsonString(\"mysql/text\", json),\n\tcasts: {}\n});\nconst fromText = { [mysqlText.id]: unchanged };\n/** A signed 32-bit integer, stored as a JSON number. */\nconst mysqlInt = sqlDataType(\"mysql/int\", {\n\ttexts: [{\n\t\ttext: \"int\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}, { text: \"integer\" }],\n\tread: (json) => readJsonInteger(\"mysql/int\", json, INT32_RANGE),\n\tcasts: {}\n});\n/** A signed 64-bit integer, stored as digit text so that no digit is lost. */\nconst mysqlBigint = sqlDataType(\"mysql/bigint\", {\n\ttexts: [{\n\t\ttext: \"bigint\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}],\n\tread: (json) => {\n\t\treadJsonIntegerText(\"mysql/bigint\", json, INT64_RANGE);\n\t\treturn json;\n\t},\n\tcasts: { [mysqlInt.id]: asNumeralText }\n});\n/** The length of `varchar`, which MySQL requires, up to the largest it accepts. */\nconst mysqlVarcharParams = type({ length: \"number.integer >= 1 & number.integer <= 65535\" });\nconst mysqlVarchar = sqlDataType(\"mysql/varchar\", {\n\tparams: mysqlVarcharParams,\n\ttexts: [{\n\t\ttext: \"varchar({length})\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}],\n\tread: (json, params) => readTextOfLength(\"mysql/varchar\", json, integerParam(params, \"length\")),\n\tcasts: fromText\n});\n/** The length of `char`, at most 255; a bare `char` is `char(1)`. */\nconst mysqlCharParams = type({ \"length?\": \"number.integer >= 1 & number.integer <= 255\" });\nconst mysqlChar = sqlDataType(\"mysql/char\", {\n\tparams: mysqlCharParams,\n\ttexts: [{\n\t\ttext: \"char\",\n\t\twritten: true\n\t}, {\n\t\ttext: \"char({length})\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}],\n\tread: (json, params) => readTextOfLength(\"mysql/char\", json, integerParam(params, \"length\") ?? 1),\n\tnormalize: (params) => params.length === void 0 ? {\n\t\t...params,\n\t\tlength: 1\n\t} : params,\n\tcasts: fromText\n});\n/** The fractional-second precision of `datetime`, 0 to 6; MySQL prints a precision of 0 as a bare `datetime`. */\nconst mysqlDatetimeParams = type({ \"precision?\": \"number.integer >= 0 & number.integer <= 6\" });\nconst DATETIME_RANGE = {\n\tearliest: \"1000-01-01T00:00:00\",\n\tlatest: \"9999-12-31T23:59:59.999999\"\n};\n/**\n* The value of `mysql/datetime`: a date and time without a time zone, ISO 8601 text with a `T` and no trailing zeros in the fraction, within MySQL's range. Throws `CONTRACT.CAST_REFUSED` for text that names no such date and time.\n*/\nfunction mysqlDatetimeText(text) {\n\treturn dateTimeStoredText(text, {\n\t\tshape: \"dateTime\",\n\t\townerId: \"mysql/datetime\",\n\t\trange: DATETIME_RANGE\n\t});\n}\nfunction storedDatetime(text) {\n\ttry {\n\t\treturn mysqlDatetimeText(text);\n\t} catch {\n\t\treturn;\n\t}\n}\nconst readDatetime = (json) => typeof json === \"string\" && storedDatetime(json) !== void 0 ? json : refuseJsonValue(\"mysql/datetime\", \"ISO 8601 date and time text without a UTC offset, as in \\\"2024-01-01T00:00:00\\\"\", json);\nconst spellDatetime = (json) => typeof json === \"string\" ? storedDatetime(json) ?? json : json;\nconst mysqlDatetime = sqlDataType(\"mysql/datetime\", {\n\tparams: mysqlDatetimeParams,\n\ttexts: [{\n\t\ttext: \"datetime\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}, {\n\t\ttext: \"datetime({precision})\",\n\t\twritten: true,\n\t\tcatalog: true\n\t}],\n\tread: readDatetime,\n\tspell: spellDatetime,\n\tnormalize: ({ precision, ...rest }) => precision === 0 ? rest : {\n\t\t...rest,\n\t\tprecision\n\t},\n\tcasts: {}\n});\n/** The members of a native enum column, in the order they are declared. */\nconst mysqlEnumParams = type({ \"values?\": \"string[]\" });\n/** `enum('A','B')`, the text MySQL's catalog prints for the column type, with each member a quoted literal. */\nfunction renderMysqlEnumType(values) {\n\tif (values === void 0 || values.length === 0) throw mysqlError(\"CONTRACT.TYPE_PARAMS_INVALID\", \"A MySQL enum column type needs at least one member.\", {\n\t\twhy: \"A native enum column is written with its members, and this column has none.\",\n\t\tfix: \"Type the column with a PSL enum or an enumType() that declares its members.\",\n\t\tmeta: { dataType: \"mysql/enum\" }\n\t});\n\treturn `enum(${values.map(quoteLiteral).join(\",\")})`;\n}\nconst readEnumMember = (json, params) => {\n\tconst member = readJsonString(\"mysql/enum\", json);\n\tconst values = params[\"values\"];\n\tif (Array.isArray(values) && !values.includes(member)) return refuseJsonValue(\"mysql/enum\", `one of the members ${values.join(\", \")}`, json);\n\treturn json;\n};\n/**\n* A native MySQL enum. Its name is the catalog text `enum('A','B')`, so `db verify` compares the members and their order with what MySQL reports (ADR 273). A column's members are its value set's, written into its parameters by the target's namespace (see `mysql-database.ts`).\n*/\nconst mysqlEnum = sqlDataType(\"mysql/enum\", {\n\tparams: mysqlEnumParams,\n\tnameIsCatalogText: true,\n\trender: ({ values }) => renderMysqlEnumType(values),\n\tread: readEnumMember,\n\tcasts: fromText\n});\n/** Every data type this target registers. */\nconst mysqlDataTypes = [\n\tmysqlText,\n\tmysqlInt,\n\tmysqlBigint,\n\tmysqlVarchar,\n\tmysqlChar,\n\tmysqlDatetime,\n\tmysqlEnum,\n\tsqlRawDataType\n];\n/** MySQL's text data types, which a SQL discriminator column may have. */\nconst mysqlTextDataTypes = [\n\tmysqlText.id,\n\tmysqlVarchar.id,\n\tmysqlChar.id\n];\n//#endregion\nexport { mysqlDatetime as a, mysqlEnum as c, mysqlText as d, mysqlTextDataTypes as f, renderMysqlEnumType as h, mysqlDataTypes as i, mysqlEnumParams as l, mysqlVarcharParams as m, mysqlChar as n, mysqlDatetimeParams as o, mysqlVarchar as p, mysqlCharParams as r, mysqlDatetimeText as s, mysqlBigint as t, mysqlInt as u };\n\n//# sourceMappingURL=data-types-Dv9gwVRV.mjs.map"],"mappings":";;;;;;;AAOA,MAAM,aAAa,UAAU;AAC7B,SAAS,WAAW,OAAO,UAAU;CACpC,MAAM,gBAAgB,yBAAyB,YAAY,SAAS,QAAQ,KAAK,UAAU,KAAK,EAAE,IAAI;EACrG,KAAK;EACL,KAAK;CACN,CAAC;AACF;AACA,MAAM,iBAAiB,UAAU,OAAO,UAAU,WAAW,YAAY,KAAK,IAAI,WAAW,OAAO,UAAU;AAC9G,SAAS,aAAa,QAAQ,MAAM;CACnC,MAAM,QAAQ,OAAO;CACrB,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAK;AACjD;;AAEA,SAAS,iBAAiB,OAAO,MAAM,QAAQ;CAC9C,MAAM,OAAO,eAAe,OAAO,IAAI;CACvC,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,QAAQ,OAAO,gBAAgB,OAAO,uBAAuB,OAAO,GAAG,WAAW,IAAI,cAAc,gBAAgB,IAAI;CACpK,OAAO;AACR;AACA,MAAM,YAAY,YAAY,cAAc;CAC3C,OAAO,CAAC;EACP,MAAM;EACN,SAAS;EACT,SAAS;CACV,CAAC;CACD,OAAO,SAAS,eAAe,cAAc,IAAI;CACjD,OAAO,CAAC;AACT,CAAC;AACD,MAAM,WAAW,GAAG,UAAU,KAAK,UAAU;;AAE7C,MAAM,WAAW,YAAY,aAAa;CACzC,OAAO,CAAC;EACP,MAAM;EACN,SAAS;EACT,SAAS;CACV,GAAG,EAAE,MAAM,UAAU,CAAC;CACtB,OAAO,SAAS,gBAAgB,aAAa,MAAM,WAAW;CAC9D,OAAO,CAAC;AACT,CAAC;;AAED,MAAM,cAAc,YAAY,gBAAgB;CAC/C,OAAO,CAAC;EACP,MAAM;EACN,SAAS;EACT,SAAS;CACV,CAAC;CACD,OAAO,SAAS;EACf,oBAAoB,gBAAgB,MAAM,WAAW;EACrD,OAAO;CACR;CACA,OAAO,GAAG,SAAS,KAAK,cAAc;AACvC,CAAC;;AAED,MAAM,qBAAqB,KAAK,EAAE,QAAQ,gDAAgD,CAAC;AAC3F,MAAM,eAAe,YAAY,iBAAiB;CACjD,QAAQ;CACR,OAAO,CAAC;EACP,MAAM;EACN,SAAS;EACT,SAAS;CACV,CAAC;CACD,OAAO,MAAM,WAAW,iBAAiB,iBAAiB,MAAM,aAAa,QAAQ,QAAQ,CAAC;CAC9F,OAAO;AACR,CAAC;;AAED,MAAM,kBAAkB,KAAK,EAAE,WAAW,8CAA8C,CAAC;AACzF,MAAM,YAAY,YAAY,cAAc;CAC3C,QAAQ;CACR,OAAO,CAAC;EACP,MAAM;EACN,SAAS;CACV,GAAG;EACF,MAAM;EACN,SAAS;EACT,SAAS;CACV,CAAC;CACD,OAAO,MAAM,WAAW,iBAAiB,cAAc,MAAM,aAAa,QAAQ,QAAQ,KAAK,CAAC;CAChG,YAAY,WAAW,OAAO,WAAW,KAAK,IAAI;EACjD,GAAG;EACH,QAAQ;CACT,IAAI;CACJ,OAAO;AACR,CAAC;;AAED,MAAM,sBAAsB,KAAK,EAAE,cAAc,4CAA4C,CAAC;AAC9F,MAAM,iBAAiB;CACtB,UAAU;CACV,QAAQ;AACT;;;;AAIA,SAAS,kBAAkB,MAAM;CAChC,OAAO,mBAAmB,MAAM;EAC/B,OAAO;EACP,SAAS;EACT,OAAO;CACR,CAAC;AACF;AACA,SAAS,eAAe,MAAM;CAC7B,IAAI;EACH,OAAO,kBAAkB,IAAI;CAC9B,QAAQ;EACP;CACD;AACD;AACA,MAAM,gBAAgB,SAAS,OAAO,SAAS,YAAY,eAAe,IAAI,MAAM,KAAK,IAAI,OAAO,gBAAgB,kBAAkB,mFAAmF,IAAI;AAC7N,MAAM,iBAAiB,SAAS,OAAO,SAAS,WAAW,eAAe,IAAI,KAAK,OAAO;AAC1F,MAAM,gBAAgB,YAAY,kBAAkB;CACnD,QAAQ;CACR,OAAO,CAAC;EACP,MAAM;EACN,SAAS;EACT,SAAS;CACV,GAAG;EACF,MAAM;EACN,SAAS;EACT,SAAS;CACV,CAAC;CACD,MAAM;CACN,OAAO;CACP,YAAY,EAAE,WAAW,GAAG,WAAW,cAAc,IAAI,OAAO;EAC/D,GAAG;EACH;CACD;CACA,OAAO,CAAC;AACT,CAAC;;AAED,MAAM,kBAAkB,KAAK,EAAE,WAAW,WAAW,CAAC;;AAEtD,SAAS,oBAAoB,QAAQ;CACpC,IAAI,WAAW,KAAK,KAAK,OAAO,WAAW,GAAG,MAAM,WAAW,gCAAgC,uDAAuD;EACrJ,KAAK;EACL,KAAK;EACL,MAAM,EAAE,UAAU,aAAa;CAChC,CAAC;CACD,OAAO,QAAQ,OAAO,IAAI,YAAY,CAAC,CAAC,KAAK,GAAG,EAAE;AACnD;AACA,MAAM,kBAAkB,MAAM,WAAW;CACxC,MAAM,SAAS,eAAe,cAAc,IAAI;CAChD,MAAM,SAAS,OAAO;CACtB,IAAI,MAAM,QAAQ,MAAM,KAAK,CAAC,OAAO,SAAS,MAAM,GAAG,OAAO,gBAAgB,cAAc,sBAAsB,OAAO,KAAK,IAAI,KAAK,IAAI;CAC3I,OAAO;AACR;;;;AAIA,MAAM,YAAY,YAAY,cAAc;CAC3C,QAAQ;CACR,mBAAmB;CACnB,SAAS,EAAE,aAAa,oBAAoB,MAAM;CAClD,MAAM;CACN,OAAO;AACR,CAAC;;AAED,MAAM,iBAAiB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA,MAAM,qBAAqB;CAC1B,UAAU;CACV,aAAa;CACb,UAAU;AACX"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./data-types-BpihGKoK-BMW-m4EN.mjs";
|
|
2
|
+
import { DataTypeAuthoringEntry } from "@prisma/orm-framework/components/authoring";
|
|
3
|
+
//#region ../../../3-targets/mysql/1-target/dist/data-types.d.mts
|
|
4
|
+
//#region src/core/data-type-entries.d.ts
|
|
5
|
+
declare function mysqlDataTypeEntries(): Readonly<Record<string, DataTypeAuthoringEntry>>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { mysqlDataTypeEntries as t };
|
|
8
|
+
//# sourceMappingURL=data-types-SXrh0Lou.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-types-SXrh0Lou.d.mts","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/data-types.d.mts"],"mappings":";;;;iBAGiB,wBAAwB,SAAS,eAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./nodes-xc0cR0_c-2YbhgEjb.mjs";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as MysqlCreateTable } from "./nodes-CvcX47ot-B-ZaUYRj.mjs";
|
|
2
|
+
//#region ../../../3-targets/mysql/1-target/dist/ddl-DDmMHyA_.mjs
|
|
3
|
+
/**
|
|
4
|
+
* A MySQL `CREATE TABLE` node. Identifiers and column types are written as given, so callers pass trusted values such as the control tables' names; string literal defaults are escaped by the renderer.
|
|
5
|
+
*/
|
|
6
|
+
function createTable(options) {
|
|
7
|
+
return new MysqlCreateTable(options);
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { createTable as t };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=ddl-DDmMHyA_-Bb8sXoS0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl-DDmMHyA_-Bb8sXoS0.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/ddl-DDmMHyA_.mjs"],"sourcesContent":["import { t as MysqlCreateTable } from \"./nodes-CvcX47ot.mjs\";\n//#region src/contract-free/ddl.ts\n/**\n* A MySQL `CREATE TABLE` node. Identifiers and column types are written as given, so callers pass trusted values such as the control tables' names; string literal defaults are escaped by the renderer.\n*/\nfunction createTable(options) {\n\treturn new MysqlCreateTable(options);\n}\n//#endregion\nexport { createTable as t };\n\n//# sourceMappingURL=ddl-DDmMHyA_.mjs.map"],"mappings":";;;;;AAKA,SAAS,YAAY,SAAS;CAC7B,OAAO,IAAI,iBAAiB,OAAO;AACpC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DefaultResolverColumn, ReportedLiteralDefault } from "@prisma/orm-family-sql/family/control";
|
|
2
|
+
import { ColumnDefault } from "@prisma/orm-framework/contract/types";
|
|
3
|
+
//#region ../../../3-targets/mysql/1-target/dist/default-normalizer.d.mts
|
|
4
|
+
//#region src/core/default-normalizer.d.ts
|
|
5
|
+
/** What a column's reported default is: a function, or a literal the column's codec reads. */
|
|
6
|
+
type MysqlReportedDefault = {
|
|
7
|
+
readonly kind: 'function';
|
|
8
|
+
readonly expression: string;
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: 'literal';
|
|
11
|
+
readonly literal: Extract<ReportedLiteralDefault, {
|
|
12
|
+
readonly kind: 'value';
|
|
13
|
+
}> & {
|
|
14
|
+
readonly body: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Reads a column's reported default from `COLUMN_DEFAULT` and `EXTRA`. `auto_increment` is `autoincrement()`; a string with a character set introducer, the form MySQL reports for a literal default on a text, blob or JSON column, is that literal; an expression default that writes the current time, such as `CURRENT_TIMESTAMP(3)`, is `now()`; any other expression default is a function default kept as reported; and anything else is a literal. `undefined` when the column has no default.
|
|
19
|
+
*/
|
|
20
|
+
declare function readMysqlDefault(columnDefault: string | null, extra: string): MysqlReportedDefault | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Names a contract's expression default the way {@link readMysqlDefault} names the same function in the database, so `` sql`CURRENT_TIMESTAMP(3)` `` and the database's `now()` compare equal. Every other default passes through unchanged.
|
|
23
|
+
*/
|
|
24
|
+
declare function mysqlResolveDefault(def: ColumnDefault, _column: DefaultResolverColumn): ColumnDefault;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { mysqlResolveDefault as n, readMysqlDefault as r, MysqlReportedDefault as t };
|
|
27
|
+
//# sourceMappingURL=default-normalizer-BBhGpw7r.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-normalizer-BBhGpw7r.d.mts","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/default-normalizer.d.mts"],"mappings":";;;;;KAIK;WACM;WACA;;WAEA;WACA,SAAS,QAAQ;aACf;;aAEA;;;;;;iBAMI,iBAAiB,8BAA8B,gBAAgB;;;;iBAI/D,oBAAoB,KAAK,eAAe,SAAS,wBAAwB"}
|