@prisma/orm-target-mysql 8.0.0-rc.22-dev.11 → 8.0.0-rc.22-dev.12

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.
Files changed (146) hide show
  1. package/README.md +2 -0
  2. package/dist/adapter.d.mts +4 -4
  3. package/dist/adapter.mjs +1 -1
  4. package/dist/adapter__codec-types.d.mts +2 -2
  5. package/dist/adapter__control.d.mts +1 -1
  6. package/dist/adapter__control.mjs +1 -1
  7. package/dist/adapter__runtime.d.mts +1 -1
  8. package/dist/adapter__runtime.mjs +17 -6
  9. package/dist/adapter__runtime.mjs.map +1 -1
  10. package/dist/{codec-descriptor-Du6DSz-3-ytBCu_mq.mjs → codec-descriptor-3xp1XvVH-yVLnNzZ8.mjs} +5 -3
  11. package/dist/codec-descriptor-3xp1XvVH-yVLnNzZ8.mjs.map +1 -0
  12. package/dist/codec-ids-CrR9Xi7r-CarpqbNM.mjs +20 -0
  13. package/dist/codec-ids-CrR9Xi7r-CarpqbNM.mjs.map +1 -0
  14. package/dist/codec-ids-Dgh5IpML-76oBMuwK.d.mts +20 -0
  15. package/dist/codec-ids-Dgh5IpML-76oBMuwK.d.mts.map +1 -0
  16. package/dist/codec-types-BH5moCD9.d.mts +1 -0
  17. package/dist/codec-types-Bai_CFkk-Blx2GxCH.d.mts +31 -0
  18. package/dist/codec-types-Bai_CFkk-Blx2GxCH.d.mts.map +1 -0
  19. package/dist/codec-types-zzVcrnbk.d.mts +1 -0
  20. package/dist/codecs-BMidk26M-DsKq6wt5.d.mts +282 -0
  21. package/dist/codecs-BMidk26M-DsKq6wt5.d.mts.map +1 -0
  22. package/dist/codecs-BfiB79-5.mjs +750 -0
  23. package/dist/codecs-BfiB79-5.mjs.map +1 -0
  24. package/dist/codecs-C_twedMx.d.mts +36 -0
  25. package/dist/codecs-C_twedMx.d.mts.map +1 -0
  26. package/dist/{control-CgeXsxCR.mjs → control-5eVF1TXc.mjs} +2 -2
  27. package/dist/{control-CgeXsxCR.mjs.map → control-5eVF1TXc.mjs.map} +1 -1
  28. package/dist/{control-H2sjKXXS.mjs → control-BBhWaGnH.mjs} +24 -13
  29. package/dist/control-BBhWaGnH.mjs.map +1 -0
  30. package/dist/control-BvSM7mGR.d.mts +396 -0
  31. package/dist/control-BvSM7mGR.d.mts.map +1 -0
  32. package/dist/{control-Ez_PtlFI.d.mts → control-MoPFgSaQ.d.mts} +2 -2
  33. package/dist/{control-Ez_PtlFI.d.mts.map → control-MoPFgSaQ.d.mts.map} +1 -1
  34. package/dist/data-type-entries-C7VH2IHc-D1d5I8zF.mjs +59 -0
  35. package/dist/data-type-entries-C7VH2IHc-D1d5I8zF.mjs.map +1 -0
  36. package/dist/{data-types-SXrh0Lou.d.mts → data-types-C-rfxpgB.d.mts} +2 -2
  37. package/dist/data-types-C-rfxpgB.d.mts.map +1 -0
  38. package/dist/data-types-D2HAT-Qf-CRI506c0.d.mts +88 -0
  39. package/dist/data-types-D2HAT-Qf-CRI506c0.d.mts.map +1 -0
  40. package/dist/data-types-DOaaPS93-DBkMJyh1.mjs +289 -0
  41. package/dist/data-types-DOaaPS93-DBkMJyh1.mjs.map +1 -0
  42. package/dist/date-time-now-generators-DY-8Bodc-DcQ3h4Fg.mjs +72 -0
  43. package/dist/date-time-now-generators-DY-8Bodc-DcQ3h4Fg.mjs.map +1 -0
  44. package/dist/{default-normalizer-BDUgHXUn-Xk7HQJuI.mjs → default-normalizer-C8pc7SbL-CKgOEnGl.mjs} +22 -12
  45. package/dist/default-normalizer-C8pc7SbL-CKgOEnGl.mjs.map +1 -0
  46. package/dist/{default-normalizer-BBhGpw7r.d.mts → default-normalizer-CGIwQiKB.d.mts} +4 -4
  47. package/dist/{default-normalizer-BBhGpw7r.d.mts.map → default-normalizer-CGIwQiKB.d.mts.map} +1 -1
  48. package/dist/descriptor-meta-CsMPRsxp-DhK87vlc.mjs +352 -0
  49. package/dist/descriptor-meta-CsMPRsxp-DhK87vlc.mjs.map +1 -0
  50. package/dist/driver.mjs +1 -1
  51. package/dist/driver__control.mjs +1 -1
  52. package/dist/driver__runtime.mjs +1 -1
  53. package/dist/errors-Cng94tYg-D02Eud2d.mjs +87 -0
  54. package/dist/errors-Cng94tYg-D02Eud2d.mjs.map +1 -0
  55. package/dist/{errors-BYhjQT7y.d.mts → errors-DfrC_yfG.d.mts} +2 -2
  56. package/dist/{errors-BYhjQT7y.d.mts.map → errors-DfrC_yfG.d.mts.map} +1 -1
  57. package/dist/{marker-lock-CmGvN4hw-Com29AtQ.mjs → marker-lock-Bwew7cAs-CZ20Y_tA.mjs} +3 -3
  58. package/dist/{marker-lock-CmGvN4hw-Com29AtQ.mjs.map → marker-lock-Bwew7cAs-CZ20Y_tA.mjs.map} +1 -1
  59. package/dist/{marker-read-Cf80LSbG-BZaJ8Ll6.mjs → marker-read-Cf80LSbG-CUp3v1e5.mjs} +3 -3
  60. package/dist/{marker-read-Cf80LSbG-BZaJ8Ll6.mjs.map → marker-read-Cf80LSbG-CUp3v1e5.mjs.map} +1 -1
  61. package/dist/mysql-contract-serializer-BnTKRSsN-B2O3EreV.mjs +35 -0
  62. package/dist/mysql-contract-serializer-BnTKRSsN-B2O3EreV.mjs.map +1 -0
  63. package/dist/{mysql-contract-serializer-DLv0uW_f-Cg4A43Ry.mjs → mysql-database-CHl9-oSL-CWZLDXt6.mjs} +39 -40
  64. package/dist/mysql-database-CHl9-oSL-CWZLDXt6.mjs.map +1 -0
  65. package/dist/now-expression-DVD18CUc-00buJUto.mjs +38 -0
  66. package/dist/now-expression-DVD18CUc-00buJUto.mjs.map +1 -0
  67. package/dist/{pack-DXsOvRJn.d.mts → pack-BXvLVBWP.d.mts} +394 -14
  68. package/dist/{pack-DXsOvRJn.d.mts.map → pack-BXvLVBWP.d.mts.map} +1 -1
  69. package/dist/require-temporal-DeDQhbTn-Bxc65WbA.mjs +16 -0
  70. package/dist/require-temporal-DeDQhbTn-Bxc65WbA.mjs.map +1 -0
  71. package/dist/{runner-BaBQoXiU-C7ln-4b2.mjs → runner-C39AEe6--BVG3xPYw.mjs} +7 -7
  72. package/dist/{runner-BaBQoXiU-C7ln-4b2.mjs.map → runner-C39AEe6--BVG3xPYw.mjs.map} +1 -1
  73. package/dist/{runtime-CeuRr9nE.d.mts → runtime-ClRDfPiY.d.mts} +2 -2
  74. package/dist/{runtime-CeuRr9nE.d.mts.map → runtime-ClRDfPiY.d.mts.map} +1 -1
  75. package/dist/runtime-CrB5DXx4.d.mts +54 -0
  76. package/dist/runtime-CrB5DXx4.d.mts.map +1 -0
  77. package/dist/{sql-utils-Db0IQO_B-PaULnfrE.mjs → sql-utils-Cmv_TVa8-BetrIUcj.mjs} +3 -3
  78. package/dist/{sql-utils-Db0IQO_B-PaULnfrE.mjs.map → sql-utils-Cmv_TVa8-BetrIUcj.mjs.map} +1 -1
  79. package/dist/{sql-utils-RW0vJvDl.mjs → sql-utils-bD4SfgX0.mjs} +2 -2
  80. package/dist/{sql-utils-RW0vJvDl.mjs.map → sql-utils-bD4SfgX0.mjs.map} +1 -1
  81. package/dist/{statement-DC62oiSx-DTx1JaP7.mjs → statement-DC62oiSx-Buzptbpk.mjs} +5 -5
  82. package/dist/{statement-DC62oiSx-DTx1JaP7.mjs.map → statement-DC62oiSx-Buzptbpk.mjs.map} +1 -1
  83. package/dist/target.d.mts +14 -13
  84. package/dist/target.mjs +17 -13
  85. package/dist/target__codec-descriptor.mjs +1 -1
  86. package/dist/target__codec-ids.d.mts +2 -2
  87. package/dist/target__codec-ids.mjs +2 -2
  88. package/dist/target__codec-types.d.mts +2 -2
  89. package/dist/target__codecs.d.mts +3 -3
  90. package/dist/target__codecs.mjs +3 -2
  91. package/dist/target__control.d.mts +2 -2
  92. package/dist/target__control.mjs +38 -32
  93. package/dist/target__control.mjs.map +1 -1
  94. package/dist/target__data-types.d.mts +3 -3
  95. package/dist/target__data-types.mjs +3 -3
  96. package/dist/target__default-normalizer.d.mts +1 -1
  97. package/dist/target__default-normalizer.mjs +1 -1
  98. package/dist/target__errors.d.mts +1 -1
  99. package/dist/target__errors.mjs +1 -1
  100. package/dist/target__marker-lock.mjs +1 -1
  101. package/dist/target__migration.mjs +1 -1
  102. package/dist/target__pack.d.mts +1 -1
  103. package/dist/target__pack.mjs +1 -1
  104. package/dist/target__runtime.d.mts +2 -2
  105. package/dist/target__runtime.mjs +3 -3
  106. package/dist/target__runtime.mjs.map +1 -1
  107. package/dist/target__sql-utils.mjs +2 -2
  108. package/dist/target__types.d.mts +2 -0
  109. package/dist/target__types.mjs +2 -0
  110. package/dist/{control-_4epnrIW.d.mts → types-CgrFHUdk.d.mts} +3 -8
  111. package/dist/types-CgrFHUdk.d.mts.map +1 -0
  112. package/package.json +18 -12
  113. package/dist/codec-descriptor-Du6DSz-3-ytBCu_mq.mjs.map +0 -1
  114. package/dist/codec-ids-cjxtOcLM-vFeQhgPm.mjs +0 -10
  115. package/dist/codec-ids-cjxtOcLM-vFeQhgPm.mjs.map +0 -1
  116. package/dist/codec-ids-sMOU8F-B-BQbCq2dr.d.mts +0 -10
  117. package/dist/codec-ids-sMOU8F-B-BQbCq2dr.d.mts.map +0 -1
  118. package/dist/codec-types-Bd7DL1Mr-CZWNfnp9.d.mts +0 -21
  119. package/dist/codec-types-Bd7DL1Mr-CZWNfnp9.d.mts.map +0 -1
  120. package/dist/codec-types-Bo3Jfilx.d.mts +0 -1
  121. package/dist/codec-types-Ja2kLzLS.d.mts +0 -1
  122. package/dist/codecs-C00kjHgh.mjs +0 -282
  123. package/dist/codecs-C00kjHgh.mjs.map +0 -1
  124. package/dist/codecs-CO_VNEYU-CwAnKzRs.d.mts +0 -102
  125. package/dist/codecs-CO_VNEYU-CwAnKzRs.d.mts.map +0 -1
  126. package/dist/codecs-DM61agRr.d.mts +0 -21
  127. package/dist/codecs-DM61agRr.d.mts.map +0 -1
  128. package/dist/control-H2sjKXXS.mjs.map +0 -1
  129. package/dist/control-_4epnrIW.d.mts.map +0 -1
  130. package/dist/data-type-entries-B0AoBozh-f9AEUIUQ.mjs +0 -42
  131. package/dist/data-type-entries-B0AoBozh-f9AEUIUQ.mjs.map +0 -1
  132. package/dist/data-types-BpihGKoK-BMW-m4EN.d.mts +0 -52
  133. package/dist/data-types-BpihGKoK-BMW-m4EN.d.mts.map +0 -1
  134. package/dist/data-types-Dv9gwVRV-BZPzCWZk.mjs +0 -181
  135. package/dist/data-types-Dv9gwVRV-BZPzCWZk.mjs.map +0 -1
  136. package/dist/data-types-SXrh0Lou.d.mts.map +0 -1
  137. package/dist/default-normalizer-BDUgHXUn-Xk7HQJuI.mjs.map +0 -1
  138. package/dist/descriptor-meta-D7tc0iue-C4W7o0Av.mjs +0 -82
  139. package/dist/descriptor-meta-D7tc0iue-C4W7o0Av.mjs.map +0 -1
  140. package/dist/descriptor-meta-runtime-Cur6umHo-C_4rsCGC.mjs +0 -20
  141. package/dist/descriptor-meta-runtime-Cur6umHo-C_4rsCGC.mjs.map +0 -1
  142. package/dist/errors-rvH_F2Yj-BQrO_--u.mjs +0 -20
  143. package/dist/errors-rvH_F2Yj-BQrO_--u.mjs.map +0 -1
  144. package/dist/mysql-contract-serializer-DLv0uW_f-Cg4A43Ry.mjs.map +0 -1
  145. package/dist/runtime-Cl0BbTZq.d.mts +0 -22
  146. package/dist/runtime-Cl0BbTZq.d.mts.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { o as mysqlDataTypes } from "./data-types-DOaaPS93-DBkMJyh1.mjs";
2
+ import { n as mysqlCreateNamespace } from "./mysql-database-CHl9-oSL-CWZLDXt6.mjs";
3
+ import { createDataTypeLookup } from "@prisma/orm-framework/components/codec";
4
+ import { blindCast } from "@prisma/orm-framework/utils/casts";
5
+ import { SqlContractSerializerBase } from "@prisma/orm-family-sql/family/ir";
6
+ //#region ../../../3-targets/mysql/1-target/dist/mysql-contract-serializer-BnTKRSsN.mjs
7
+ /** The MySQL target's contract serializer: the SQL family's, with each namespace built as a `MysqlDatabase`. */
8
+ var MysqlContractSerializer = class extends SqlContractSerializerBase {
9
+ constructor() {
10
+ super(/* @__PURE__ */ new Map(), [], createDataTypeLookup(mysqlDataTypes));
11
+ }
12
+ hydrateSqlNamespaceEntry(nsId, raw) {
13
+ return mysqlCreateNamespace(blindCast(super.hydrateSqlNamespaceEntry(nsId, raw)));
14
+ }
15
+ serializeContract(contract) {
16
+ const { storage, ...rest } = contract;
17
+ const namespacesJson = {};
18
+ for (const [nsId, ns] of Object.entries(storage.namespaces)) namespacesJson[nsId] = {
19
+ id: ns.id,
20
+ entries: this.serializeNamespaceEntries(ns.entries)
21
+ };
22
+ return blindCast({
23
+ ...rest,
24
+ storage: {
25
+ storageHash: String(storage.storageHash),
26
+ namespaces: namespacesJson,
27
+ ...storage.types !== void 0 ? { types: this.serializeJsonObject(storage.types) } : {}
28
+ }
29
+ });
30
+ }
31
+ };
32
+ //#endregion
33
+ export { MysqlContractSerializer as t };
34
+
35
+ //# sourceMappingURL=mysql-contract-serializer-BnTKRSsN-B2O3EreV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-contract-serializer-BnTKRSsN-B2O3EreV.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/mysql-contract-serializer-BnTKRSsN.mjs"],"sourcesContent":["import { o as mysqlDataTypes } from \"./data-types-DOaaPS93.mjs\";\nimport { n as mysqlCreateNamespace } from \"./mysql-database-CHl9-oSL.mjs\";\nimport { createDataTypeLookup } from \"@internal/framework-components/codec\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { SqlContractSerializerBase } from \"@internal/family-sql/ir\";\n//#region src/core/mysql-contract-serializer.ts\n/** The MySQL target's contract serializer: the SQL family's, with each namespace built as a `MysqlDatabase`. */\nvar MysqlContractSerializer = class extends SqlContractSerializerBase {\n\tconstructor() {\n\t\tsuper(/* @__PURE__ */ new Map(), [], createDataTypeLookup(mysqlDataTypes));\n\t}\n\thydrateSqlNamespaceEntry(nsId, raw) {\n\t\treturn mysqlCreateNamespace(blindCast(super.hydrateSqlNamespaceEntry(nsId, raw)));\n\t}\n\tserializeContract(contract) {\n\t\tconst { storage, ...rest } = contract;\n\t\tconst namespacesJson = {};\n\t\tfor (const [nsId, ns] of Object.entries(storage.namespaces)) namespacesJson[nsId] = {\n\t\t\tid: ns.id,\n\t\t\tentries: this.serializeNamespaceEntries(ns.entries)\n\t\t};\n\t\treturn blindCast({\n\t\t\t...rest,\n\t\t\tstorage: {\n\t\t\t\tstorageHash: String(storage.storageHash),\n\t\t\t\tnamespaces: namespacesJson,\n\t\t\t\t...storage.types !== void 0 ? { types: this.serializeJsonObject(storage.types) } : {}\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { MysqlContractSerializer as t };\n\n//# sourceMappingURL=mysql-contract-serializer-BnTKRSsN.mjs.map"],"mappings":";;;;;;;AAOA,IAAI,0BAA0B,cAAc,0BAA0B;CACrE,cAAc;EACb,sBAAsB,IAAI,IAAI,GAAG,CAAC,GAAG,qBAAqB,cAAc,CAAC;CAC1E;CACA,yBAAyB,MAAM,KAAK;EACnC,OAAO,qBAAqB,UAAU,MAAM,yBAAyB,MAAM,GAAG,CAAC,CAAC;CACjF;CACA,kBAAkB,UAAU;EAC3B,MAAM,EAAE,SAAS,GAAG,SAAS;EAC7B,MAAM,iBAAiB,CAAC;EACxB,KAAK,MAAM,CAAC,MAAM,OAAO,OAAO,QAAQ,QAAQ,UAAU,GAAG,eAAe,QAAQ;GACnF,IAAI,GAAG;GACP,SAAS,KAAK,0BAA0B,GAAG,OAAO;EACnD;EACA,OAAO,UAAU;GAChB,GAAG;GACH,SAAS;IACR,aAAa,OAAO,QAAQ,WAAW;IACvC,YAAY;IACZ,GAAG,QAAQ,UAAU,KAAK,IAAI,EAAE,OAAO,KAAK,oBAAoB,QAAQ,KAAK,EAAE,IAAI,CAAC;GACrF;EACD,CAAC;CACF;AACD"}
@@ -1,13 +1,11 @@
1
- import { t as mysqlError } from "./errors-rvH_F2Yj-BQrO_--u.mjs";
2
- import { n as quoteIdentifier } from "./sql-utils-Db0IQO_B-PaULnfrE.mjs";
3
- import { i as mysqlDataTypes } from "./data-types-Dv9gwVRV-BZPzCWZk.mjs";
4
- import { createDataTypeLookup } from "@prisma/orm-framework/components/codec";
1
+ import { s as mysqlError } from "./errors-Cng94tYg-D02Eud2d.mjs";
2
+ import { n as quoteIdentifier } from "./sql-utils-Cmv_TVa8-BetrIUcj.mjs";
3
+ import { S as mysqlTimestamp, b as mysqlTime, l as mysqlDatetime } from "./data-types-DOaaPS93-DBkMJyh1.mjs";
5
4
  import { blindCast } from "@prisma/orm-framework/utils/casts";
6
5
  import { UNBOUND_NAMESPACE_ID, freezeNode, hydrateNamespaceEntities } from "@prisma/orm-framework/components/ir";
7
6
  import { SqlNamespaceBase } from "@prisma/orm-family-sql/contract/types";
8
- import { SqlContractSerializerBase } from "@prisma/orm-family-sql/family/ir";
9
7
  import { tableEntityKind } from "@prisma/orm-family-sql/contract/entity-kinds";
10
- //#region ../../../3-targets/mysql/1-target/dist/mysql-contract-serializer-DLv0uW_f.mjs
8
+ //#region ../../../3-targets/mysql/1-target/dist/mysql-database-CHl9-oSL.mjs
11
9
  const MYSQL_NAMESPACE_KIND = "mysql-namespace";
12
10
  /**
13
11
  * 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.
@@ -85,27 +83,53 @@ function enumColumnWithMembers(namespace, tableName, columnName, column) {
85
83
  }
86
84
  };
87
85
  }
88
- function withEnumMembers(namespace, tableName, table) {
86
+ /** The data types whose bare column type holds whole seconds. */
87
+ const PRECISION_DATA_TYPES = /* @__PURE__ */ new Set([
88
+ mysqlDatetime.id,
89
+ mysqlTimestamp.id,
90
+ mysqlTime.id
91
+ ]);
92
+ function isUnwrittenPrecisionColumn(column) {
93
+ if (!isLoose(column) || !PRECISION_DATA_TYPES.has(column["dataType"])) return false;
94
+ const typeParams = column["typeParams"];
95
+ return !isLoose(typeParams) || typeParams["precision"] === void 0;
96
+ }
97
+ /** A `datetime`, `timestamp` or `time` column with no precision written records 0, the fraction digits MySQL gives the bare type, so its codec writes a value MySQL does not round; a codec reference with no precision is a raw parameter's, which is written whole. */
98
+ function withZeroPrecision(column) {
99
+ const typeParams = isLoose(column["typeParams"]) ? column["typeParams"] : {};
100
+ return {
101
+ ...column,
102
+ typeParams: {
103
+ ...typeParams,
104
+ precision: 0
105
+ }
106
+ };
107
+ }
108
+ function withFilledTypeParams(namespace, tableName, table) {
89
109
  if (!isLoose(table)) return table;
90
110
  const columns = table["columns"];
91
- if (!isLoose(columns) || !Object.values(columns).some(isEnumColumn)) return table;
92
- const filled = Object.fromEntries(Object.entries(columns).map(([columnName, column]) => [columnName, isEnumColumn(column) ? enumColumnWithMembers(namespace, tableName, columnName, column) : column]));
111
+ if (!isLoose(columns) || !Object.values(columns).some((column) => isEnumColumn(column) || isUnwrittenPrecisionColumn(column))) return table;
112
+ const filled = Object.fromEntries(Object.entries(columns).map(([columnName, column]) => {
113
+ if (isEnumColumn(column)) return [columnName, enumColumnWithMembers(namespace, tableName, columnName, column)];
114
+ if (isUnwrittenPrecisionColumn(column)) return [columnName, withZeroPrecision(column)];
115
+ return [columnName, column];
116
+ }));
93
117
  return {
94
118
  ...table,
95
119
  columns: filled
96
120
  };
97
121
  }
98
122
  /**
99
- * Writes each MySQL enum column's members, from the value set the column names, into its type parameters, in the order the enum declares them, and refuses a column whose own members differ from them. The column's type is then `enum('A','B')`, so the database enforces the members and `db verify` sees a change to them as a change of the column's type.
123
+ * Writes the type parameters MySQL gives a column that the authored schema leaves out. Each MySQL enum column's members, from the value set the column names, go into its type parameters in the order the enum declares them, and a column whose own members differ from them is refused; the column's type is then `enum('A','B')`, so the database enforces the members and `db verify` sees a change to them as a change of the column's type. A `datetime`, `timestamp` or `time` column with no precision records precision 0.
100
124
  */
101
- function fillEnumMembers(input) {
125
+ function fillTypeParams(input) {
102
126
  const tables = input.entries["table"];
103
127
  if (tables === void 0) return input;
104
128
  return {
105
129
  ...input,
106
130
  entries: {
107
131
  ...input.entries,
108
- table: Object.fromEntries(Object.entries(tables).map(([tableName, table]) => [tableName, withEnumMembers(input, tableName, table)]))
132
+ table: Object.fromEntries(Object.entries(tables).map(([tableName, table]) => [tableName, withFilledTypeParams(input, tableName, table)]))
109
133
  }
110
134
  };
111
135
  }
@@ -127,34 +151,9 @@ function rejectSqlBodyIndexes(input) {
127
151
  function mysqlCreateNamespace(input) {
128
152
  if (input.id !== UNBOUND_NAMESPACE_ID) throw mysqlError("CONTRACT.NAMESPACE_INVALID", `The MySQL target has one namespace, "${UNBOUND_NAMESPACE_ID}"; it received "${input.id}".`, { meta: { received: input.id } });
129
153
  rejectSqlBodyIndexes(input);
130
- return new MysqlDatabase(fillEnumMembers(input));
154
+ return new MysqlDatabase(fillTypeParams(input));
131
155
  }
132
- /** The MySQL target's contract serializer: the SQL family's, with each namespace built as a `MysqlDatabase`. */
133
- var MysqlContractSerializer = class extends SqlContractSerializerBase {
134
- constructor() {
135
- super(/* @__PURE__ */ new Map(), [], createDataTypeLookup(mysqlDataTypes));
136
- }
137
- hydrateSqlNamespaceEntry(nsId, raw) {
138
- return mysqlCreateNamespace(blindCast(super.hydrateSqlNamespaceEntry(nsId, raw)));
139
- }
140
- serializeContract(contract) {
141
- const { storage, ...rest } = contract;
142
- const namespacesJson = {};
143
- for (const [nsId, ns] of Object.entries(storage.namespaces)) namespacesJson[nsId] = {
144
- id: ns.id,
145
- entries: this.serializeNamespaceEntries(ns.entries)
146
- };
147
- return blindCast({
148
- ...rest,
149
- storage: {
150
- storageHash: String(storage.storageHash),
151
- namespaces: namespacesJson,
152
- ...storage.types !== void 0 ? { types: this.serializeJsonObject(storage.types) } : {}
153
- }
154
- });
155
- }
156
- };
157
156
  //#endregion
158
- export { MysqlDatabase as n, mysqlCreateNamespace as r, MysqlContractSerializer as t };
157
+ export { mysqlCreateNamespace as n, MysqlDatabase as t };
159
158
 
160
- //# sourceMappingURL=mysql-contract-serializer-DLv0uW_f-Cg4A43Ry.mjs.map
159
+ //# sourceMappingURL=mysql-database-CHl9-oSL-CWZLDXt6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-database-CHl9-oSL-CWZLDXt6.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/mysql-database-CHl9-oSL.mjs"],"sourcesContent":["import \"./codec-ids-CrR9Xi7r.mjs\";\nimport { s as mysqlError } from \"./errors-Cng94tYg.mjs\";\nimport { n as quoteIdentifier } from \"./sql-utils-Cmv_TVa8.mjs\";\nimport { S as mysqlTimestamp, b as mysqlTime, l as mysqlDatetime } from \"./data-types-DOaaPS93.mjs\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { SqlNamespaceBase } from \"@internal/sql-contract/types\";\nimport { UNBOUND_NAMESPACE_ID, freezeNode, hydrateNamespaceEntities } from \"@internal/framework-components/ir\";\nimport { tableEntityKind } from \"@internal/sql-contract/entity-kinds\";\n//#region src/core/mysql-database.ts\nconst MYSQL_NAMESPACE_KIND = \"mysql-namespace\";\n/**\n* 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.\n*/\nvar MysqlDatabase = class extends SqlNamespaceBase {\n\tid;\n\tentries;\n\tconstructor(input) {\n\t\tsuper();\n\t\tthis.id = input.id;\n\t\tconst dispatched = hydrateNamespaceEntities(input.entries, /* @__PURE__ */ new Map([[\"table\", tableEntityKind]]), \"carry\");\n\t\tthis.entries = Object.freeze(blindCast(dispatched));\n\t\tObject.defineProperty(this, \"kind\", {\n\t\t\tvalue: MYSQL_NAMESPACE_KIND,\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true\n\t\t});\n\t\tfreezeNode(this);\n\t}\n\tget table() {\n\t\treturn this.entries.table ?? Object.freeze({});\n\t}\n\tqualifier() {\n\t\treturn \"\";\n\t}\n\tqualifyTable(tableName) {\n\t\treturn quoteIdentifier(tableName);\n\t}\n};\nfunction isLoose(value) {\n\treturn typeof value === \"object\" && value !== null;\n}\nfunction enumMembersOf(namespace, tableName, columnName, column) {\n\tconst subject = `Column \"${tableName}\".\"${columnName}\"`;\n\tconst ref = column[\"valueSet\"];\n\tconst valueSetName = isLoose(ref) && ref[\"namespaceId\"] === namespace.id ? ref[\"entityName\"] : void 0;\n\tconst valueSet = typeof valueSetName === \"string\" ? namespace.entries[\"valueSet\"]?.[valueSetName] : void 0;\n\tconst values = isLoose(valueSet) ? valueSet[\"values\"] : void 0;\n\tif (!Array.isArray(values) || !values.every((value) => typeof value === \"string\")) throw mysqlError(\"CONTRACT.TYPE_PARAMS_INVALID\", `${subject} is a MySQL enum but has no enum whose text members it can list.`, {\n\t\twhy: \"A native MySQL enum column is written with its members, which come from the enum that types the column.\",\n\t\tfix: \"Type the column with a PSL enum or an enumType() whose members are text.\",\n\t\tmeta: {\n\t\t\ttable: tableName,\n\t\t\tcolumn: columnName\n\t\t}\n\t});\n\treturn values;\n}\nfunction isEnumColumn(column) {\n\treturn isLoose(column) && column[\"codecId\"] === \"mysql/enum@1\";\n}\nfunction sameMembers(left, right) {\n\treturn left.length === right.length && left.every((value, index) => value === right[index]);\n}\nfunction enumColumnWithMembers(namespace, tableName, columnName, column) {\n\tconst typeParams = isLoose(column[\"typeParams\"]) ? column[\"typeParams\"] : {};\n\tconst values = enumMembersOf(namespace, tableName, columnName, column);\n\tconst listed = typeParams[\"values\"];\n\tif (listed !== void 0 && !(Array.isArray(listed) && sameMembers(listed, values))) throw mysqlError(\"CONTRACT.TYPE_PARAMS_INVALID\", `Column \"${tableName}\".\"${columnName}\" lists enum members that differ from the members of the enum that types it.`, {\n\t\twhy: \"A MySQL enum column takes its members from its enum, in the order the enum declares them, so the database and the contract enforce the same members.\",\n\t\tfix: \"Remove the column’s own members, or make them equal the enum’s members in the same order.\",\n\t\tmeta: {\n\t\t\ttable: tableName,\n\t\t\tcolumn: columnName,\n\t\t\tcolumnValues: listed,\n\t\t\tvalueSetValues: values\n\t\t}\n\t});\n\treturn {\n\t\t...column,\n\t\ttypeParams: {\n\t\t\t...typeParams,\n\t\t\tvalues\n\t\t}\n\t};\n}\n/** The data types whose bare column type holds whole seconds. */\nconst PRECISION_DATA_TYPES = /* @__PURE__ */ new Set([\n\tmysqlDatetime.id,\n\tmysqlTimestamp.id,\n\tmysqlTime.id\n]);\nfunction isUnwrittenPrecisionColumn(column) {\n\tif (!isLoose(column) || !PRECISION_DATA_TYPES.has(column[\"dataType\"])) return false;\n\tconst typeParams = column[\"typeParams\"];\n\treturn !isLoose(typeParams) || typeParams[\"precision\"] === void 0;\n}\n/** A `datetime`, `timestamp` or `time` column with no precision written records 0, the fraction digits MySQL gives the bare type, so its codec writes a value MySQL does not round; a codec reference with no precision is a raw parameter's, which is written whole. */\nfunction withZeroPrecision(column) {\n\tconst typeParams = isLoose(column[\"typeParams\"]) ? column[\"typeParams\"] : {};\n\treturn {\n\t\t...column,\n\t\ttypeParams: {\n\t\t\t...typeParams,\n\t\t\tprecision: 0\n\t\t}\n\t};\n}\nfunction withFilledTypeParams(namespace, tableName, table) {\n\tif (!isLoose(table)) return table;\n\tconst columns = table[\"columns\"];\n\tif (!isLoose(columns) || !Object.values(columns).some((column) => isEnumColumn(column) || isUnwrittenPrecisionColumn(column))) return table;\n\tconst filled = Object.fromEntries(Object.entries(columns).map(([columnName, column]) => {\n\t\tif (isEnumColumn(column)) return [columnName, enumColumnWithMembers(namespace, tableName, columnName, column)];\n\t\tif (isUnwrittenPrecisionColumn(column)) return [columnName, withZeroPrecision(column)];\n\t\treturn [columnName, column];\n\t}));\n\treturn {\n\t\t...table,\n\t\tcolumns: filled\n\t};\n}\n/**\n* Writes the type parameters MySQL gives a column that the authored schema leaves out. Each MySQL enum column's members, from the value set the column names, go into its type parameters in the order the enum declares them, and a column whose own members differ from them is refused; the column's type is then `enum('A','B')`, so the database enforces the members and `db verify` sees a change to them as a change of the column's type. A `datetime`, `timestamp` or `time` column with no precision records precision 0.\n*/\nfunction fillTypeParams(input) {\n\tconst tables = input.entries[\"table\"];\n\tif (tables === void 0) return input;\n\treturn {\n\t\t...input,\n\t\tentries: {\n\t\t\t...input.entries,\n\t\t\ttable: Object.fromEntries(Object.entries(tables).map(([tableName, table]) => [tableName, withFilledTypeParams(input, tableName, table)]))\n\t\t}\n\t};\n}\n/**\n* The MySQL target's refusal of expression and partial indexes, which it neither writes nor introspects yet.\n*/\nfunction rejectSqlBodyIndexes(input) {\n\tfor (const [tableName, table] of Object.entries(input.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)) continue;\n\t\t\tif (index[\"expression\"] !== void 0 || index[\"where\"] !== void 0) throw mysqlError(\"CONTRACT.ARGUMENT_INVALID\", `MySQL does not support expression or partial indexes yet: index \"${String(index[\"name\"] ?? \"<unnamed>\")}\" on table \"${tableName}\" declares ${index[\"expression\"] !== void 0 ? \"an expression\" : \"a where predicate\"}. Use a fields-only index.`, { meta: { table: tableName } });\n\t\t}\n\t}\n}\n/**\n* The namespace factory the MySQL target hands `defineContract` and the PSL interpreter. MySQL has one namespace per connection, the framework's unbound slot.\n*/\nfunction mysqlCreateNamespace(input) {\n\tif (input.id !== UNBOUND_NAMESPACE_ID) throw mysqlError(\"CONTRACT.NAMESPACE_INVALID\", `The MySQL target has one namespace, \"${UNBOUND_NAMESPACE_ID}\"; it received \"${input.id}\".`, { meta: { received: input.id } });\n\trejectSqlBodyIndexes(input);\n\treturn new MysqlDatabase(fillTypeParams(input));\n}\n//#endregion\nexport { mysqlCreateNamespace as n, MysqlDatabase as t };\n\n//# sourceMappingURL=mysql-database-CHl9-oSL.mjs.map"],"mappings":";;;;;;;;AASA,MAAM,uBAAuB;;;;AAI7B,IAAI,gBAAgB,cAAc,iBAAiB;CAClD;CACA;CACA,YAAY,OAAO;EAClB,MAAM;EACN,KAAK,KAAK,MAAM;EAChB,MAAM,aAAa,yBAAyB,MAAM,yBAAyB,IAAI,IAAI,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,GAAG,OAAO;EACzH,KAAK,UAAU,OAAO,OAAO,UAAU,UAAU,CAAC;EAClD,OAAO,eAAe,MAAM,QAAQ;GACnC,OAAO;GACP,UAAU;GACV,YAAY;GACZ,cAAc;EACf,CAAC;EACD,WAAW,IAAI;CAChB;CACA,IAAI,QAAQ;EACX,OAAO,KAAK,QAAQ,SAAS,OAAO,OAAO,CAAC,CAAC;CAC9C;CACA,YAAY;EACX,OAAO;CACR;CACA,aAAa,WAAW;EACvB,OAAO,gBAAgB,SAAS;CACjC;AACD;AACA,SAAS,QAAQ,OAAO;CACvB,OAAO,OAAO,UAAU,YAAY,UAAU;AAC/C;AACA,SAAS,cAAc,WAAW,WAAW,YAAY,QAAQ;CAChE,MAAM,UAAU,WAAW,UAAU,KAAK,WAAW;CACrD,MAAM,MAAM,OAAO;CACnB,MAAM,eAAe,QAAQ,GAAG,KAAK,IAAI,mBAAmB,UAAU,KAAK,IAAI,gBAAgB,KAAK;CACpG,MAAM,WAAW,OAAO,iBAAiB,WAAW,UAAU,QAAQ,WAAW,GAAG,gBAAgB,KAAK;CACzG,MAAM,SAAS,QAAQ,QAAQ,IAAI,SAAS,YAAY,KAAK;CAC7D,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,CAAC,OAAO,OAAO,UAAU,OAAO,UAAU,QAAQ,GAAG,MAAM,WAAW,gCAAgC,GAAG,QAAQ,mEAAmE;EACjN,KAAK;EACL,KAAK;EACL,MAAM;GACL,OAAO;GACP,QAAQ;EACT;CACD,CAAC;CACD,OAAO;AACR;AACA,SAAS,aAAa,QAAQ;CAC7B,OAAO,QAAQ,MAAM,KAAK,OAAO,eAAe;AACjD;AACA,SAAS,YAAY,MAAM,OAAO;CACjC,OAAO,KAAK,WAAW,MAAM,UAAU,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM,MAAM;AAC3F;AACA,SAAS,sBAAsB,WAAW,WAAW,YAAY,QAAQ;CACxE,MAAM,aAAa,QAAQ,OAAO,aAAa,IAAI,OAAO,gBAAgB,CAAC;CAC3E,MAAM,SAAS,cAAc,WAAW,WAAW,YAAY,MAAM;CACrE,MAAM,SAAS,WAAW;CAC1B,IAAI,WAAW,KAAK,KAAK,EAAE,MAAM,QAAQ,MAAM,KAAK,YAAY,QAAQ,MAAM,IAAI,MAAM,WAAW,gCAAgC,WAAW,UAAU,KAAK,WAAW,+EAA+E;EACtP,KAAK;EACL,KAAK;EACL,MAAM;GACL,OAAO;GACP,QAAQ;GACR,cAAc;GACd,gBAAgB;EACjB;CACD,CAAC;CACD,OAAO;EACN,GAAG;EACH,YAAY;GACX,GAAG;GACH;EACD;CACD;AACD;;AAEA,MAAM,uCAAuC,IAAI,IAAI;CACpD,cAAc;CACd,eAAe;CACf,UAAU;AACX,CAAC;AACD,SAAS,2BAA2B,QAAQ;CAC3C,IAAI,CAAC,QAAQ,MAAM,KAAK,CAAC,qBAAqB,IAAI,OAAO,WAAW,GAAG,OAAO;CAC9E,MAAM,aAAa,OAAO;CAC1B,OAAO,CAAC,QAAQ,UAAU,KAAK,WAAW,iBAAiB,KAAK;AACjE;;AAEA,SAAS,kBAAkB,QAAQ;CAClC,MAAM,aAAa,QAAQ,OAAO,aAAa,IAAI,OAAO,gBAAgB,CAAC;CAC3E,OAAO;EACN,GAAG;EACH,YAAY;GACX,GAAG;GACH,WAAW;EACZ;CACD;AACD;AACA,SAAS,qBAAqB,WAAW,WAAW,OAAO;CAC1D,IAAI,CAAC,QAAQ,KAAK,GAAG,OAAO;CAC5B,MAAM,UAAU,MAAM;CACtB,IAAI,CAAC,QAAQ,OAAO,KAAK,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,MAAM,WAAW,aAAa,MAAM,KAAK,2BAA2B,MAAM,CAAC,GAAG,OAAO;CACtI,MAAM,SAAS,OAAO,YAAY,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,YAAY;EACvF,IAAI,aAAa,MAAM,GAAG,OAAO,CAAC,YAAY,sBAAsB,WAAW,WAAW,YAAY,MAAM,CAAC;EAC7G,IAAI,2BAA2B,MAAM,GAAG,OAAO,CAAC,YAAY,kBAAkB,MAAM,CAAC;EACrF,OAAO,CAAC,YAAY,MAAM;CAC3B,CAAC,CAAC;CACF,OAAO;EACN,GAAG;EACH,SAAS;CACV;AACD;;;;AAIA,SAAS,eAAe,OAAO;CAC9B,MAAM,SAAS,MAAM,QAAQ;CAC7B,IAAI,WAAW,KAAK,GAAG,OAAO;CAC9B,OAAO;EACN,GAAG;EACH,SAAS;GACR,GAAG,MAAM;GACT,OAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,WAAW,CAAC,WAAW,qBAAqB,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC;EACzI;CACD;AACD;;;;AAIA,SAAS,qBAAqB,OAAO;CACpC,KAAK,MAAM,CAAC,WAAW,UAAU,OAAO,QAAQ,MAAM,QAAQ,YAAY,CAAC,CAAC,GAAG;EAC9E,MAAM,UAAU,QAAQ,KAAK,IAAI,MAAM,aAAa,KAAK;EACzD,KAAK,MAAM,SAAS,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG;GAC1D,IAAI,CAAC,QAAQ,KAAK,GAAG;GACrB,IAAI,MAAM,kBAAkB,KAAK,KAAK,MAAM,aAAa,KAAK,GAAG,MAAM,WAAW,6BAA6B,oEAAoE,OAAO,MAAM,WAAW,WAAW,EAAE,cAAc,UAAU,aAAa,MAAM,kBAAkB,KAAK,IAAI,kBAAkB,oBAAoB,6BAA6B,EAAE,MAAM,EAAE,OAAO,UAAU,EAAE,CAAC;EAChY;CACD;AACD;;;;AAIA,SAAS,qBAAqB,OAAO;CACpC,IAAI,MAAM,OAAO,sBAAsB,MAAM,WAAW,8BAA8B,wCAAwC,qBAAqB,kBAAkB,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,MAAM,GAAG,EAAE,CAAC;CACnN,qBAAqB,KAAK;CAC1B,OAAO,IAAI,cAAc,eAAe,KAAK,CAAC;AAC/C"}
@@ -0,0 +1,38 @@
1
+ import { S as mysqlTimestamp, b as mysqlTime, i as mysqlChar, l as mysqlDatetime, s as mysqlDate, v as mysqlText, w as mysqlVarchar } from "./data-types-DOaaPS93-DBkMJyh1.mjs";
2
+ import { sqlRawDataType } from "@prisma/orm-family-sql/contract/data-type";
3
+ //#region ../../../3-targets/mysql/1-target/dist/now-expression-DVD18CUc.mjs
4
+ /** The name of the current instant, as a contract writes it. */
5
+ const MYSQL_INSTANT_NOW = "now()";
6
+ /** The name a `now()` default on a `date` column reads back as: MySQL reports `curdate()`, which writes a date, not an instant. */
7
+ const MYSQL_DATE_NOW = "CURRENT_DATE";
8
+ /** The name a `now()` default on a `time` column reads back as: MySQL reports `curtime(p)`, which writes a time of day. */
9
+ const MYSQL_TIME_NOW = "CURRENT_TIME";
10
+ const CURRENT_VALUE_BY_DATA_TYPE = /* @__PURE__ */ new Map([
11
+ [mysqlDatetime.id, MYSQL_INSTANT_NOW],
12
+ [mysqlTimestamp.id, MYSQL_INSTANT_NOW],
13
+ [mysqlDate.id, MYSQL_DATE_NOW],
14
+ [mysqlTime.id, MYSQL_TIME_NOW],
15
+ [mysqlText.id, MYSQL_INSTANT_NOW],
16
+ [mysqlVarchar.id, MYSQL_INSTANT_NOW],
17
+ [mysqlChar.id, MYSQL_INSTANT_NOW],
18
+ [sqlRawDataType.id, MYSQL_INSTANT_NOW]
19
+ ]);
20
+ /**
21
+ * The current value a `now()` default writes on a column of `dataTypeId`: the current date on `mysql/date`, the current time of day on `mysql/time`, and the current instant on `datetime`, `timestamp`, text, a raw column, whose values Prisma does not read, and a column of no known data type. `undefined` on a data type that stores no date or time, such as `mysql/int` or `mysql/duration`, as PostgreSQL refuses `now()` on an `integer` or an `interval` column.
22
+ */
23
+ function mysqlCurrentValueFor(dataTypeId) {
24
+ return dataTypeId === void 0 ? MYSQL_INSTANT_NOW : CURRENT_VALUE_BY_DATA_TYPE.get(dataTypeId);
25
+ }
26
+ /** The MySQL expression for a current value, with the column's fraction digits, which MySQL requires to match the column's. */
27
+ function mysqlNowExpression(current, precision) {
28
+ const digits = precision === void 0 || precision === 0 ? "" : `(${precision})`;
29
+ switch (current) {
30
+ case MYSQL_INSTANT_NOW: return `CURRENT_TIMESTAMP${digits}`;
31
+ case MYSQL_DATE_NOW: return "CURRENT_DATE";
32
+ case MYSQL_TIME_NOW: return `CURRENT_TIME${digits}`;
33
+ }
34
+ }
35
+ //#endregion
36
+ export { mysqlNowExpression as a, mysqlCurrentValueFor as i, MYSQL_INSTANT_NOW as n, MYSQL_TIME_NOW as r, MYSQL_DATE_NOW as t };
37
+
38
+ //# sourceMappingURL=now-expression-DVD18CUc-00buJUto.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"now-expression-DVD18CUc-00buJUto.mjs","names":[],"sources":["../../../../3-targets/mysql/1-target/dist/now-expression-DVD18CUc.mjs"],"sourcesContent":["import { S as mysqlTimestamp, b as mysqlTime, i as mysqlChar, l as mysqlDatetime, s as mysqlDate, v as mysqlText, w as mysqlVarchar } from \"./data-types-DOaaPS93.mjs\";\nimport { sqlRawDataType } from \"@internal/sql-contract/data-type\";\n//#region src/core/now-expression.ts\n/** The name of the current instant, as a contract writes it. */\nconst MYSQL_INSTANT_NOW = \"now()\";\n/** The name a `now()` default on a `date` column reads back as: MySQL reports `curdate()`, which writes a date, not an instant. */\nconst MYSQL_DATE_NOW = \"CURRENT_DATE\";\n/** The name a `now()` default on a `time` column reads back as: MySQL reports `curtime(p)`, which writes a time of day. */\nconst MYSQL_TIME_NOW = \"CURRENT_TIME\";\nconst CURRENT_VALUE_BY_DATA_TYPE = /* @__PURE__ */ new Map([\n\t[mysqlDatetime.id, MYSQL_INSTANT_NOW],\n\t[mysqlTimestamp.id, MYSQL_INSTANT_NOW],\n\t[mysqlDate.id, MYSQL_DATE_NOW],\n\t[mysqlTime.id, MYSQL_TIME_NOW],\n\t[mysqlText.id, MYSQL_INSTANT_NOW],\n\t[mysqlVarchar.id, MYSQL_INSTANT_NOW],\n\t[mysqlChar.id, MYSQL_INSTANT_NOW],\n\t[sqlRawDataType.id, MYSQL_INSTANT_NOW]\n]);\n/**\n* The current value a `now()` default writes on a column of `dataTypeId`: the current date on `mysql/date`, the current time of day on `mysql/time`, and the current instant on `datetime`, `timestamp`, text, a raw column, whose values Prisma does not read, and a column of no known data type. `undefined` on a data type that stores no date or time, such as `mysql/int` or `mysql/duration`, as PostgreSQL refuses `now()` on an `integer` or an `interval` column.\n*/\nfunction mysqlCurrentValueFor(dataTypeId) {\n\treturn dataTypeId === void 0 ? MYSQL_INSTANT_NOW : CURRENT_VALUE_BY_DATA_TYPE.get(dataTypeId);\n}\n/** The MySQL expression for a current value, with the column's fraction digits, which MySQL requires to match the column's. */\nfunction mysqlNowExpression(current, precision) {\n\tconst digits = precision === void 0 || precision === 0 ? \"\" : `(${precision})`;\n\tswitch (current) {\n\t\tcase MYSQL_INSTANT_NOW: return `CURRENT_TIMESTAMP${digits}`;\n\t\tcase MYSQL_DATE_NOW: return \"CURRENT_DATE\";\n\t\tcase MYSQL_TIME_NOW: return `CURRENT_TIME${digits}`;\n\t}\n}\n//#endregion\nexport { mysqlNowExpression as a, mysqlCurrentValueFor as i, MYSQL_INSTANT_NOW as n, MYSQL_TIME_NOW as r, MYSQL_DATE_NOW as t };\n\n//# sourceMappingURL=now-expression-DVD18CUc.mjs.map"],"mappings":";;;;AAIA,MAAM,oBAAoB;;AAE1B,MAAM,iBAAiB;;AAEvB,MAAM,iBAAiB;AACvB,MAAM,6CAA6C,IAAI,IAAI;CAC1D,CAAC,cAAc,IAAI,iBAAiB;CACpC,CAAC,eAAe,IAAI,iBAAiB;CACrC,CAAC,UAAU,IAAI,cAAc;CAC7B,CAAC,UAAU,IAAI,cAAc;CAC7B,CAAC,UAAU,IAAI,iBAAiB;CAChC,CAAC,aAAa,IAAI,iBAAiB;CACnC,CAAC,UAAU,IAAI,iBAAiB;CAChC,CAAC,eAAe,IAAI,iBAAiB;AACtC,CAAC;;;;AAID,SAAS,qBAAqB,YAAY;CACzC,OAAO,eAAe,KAAK,IAAI,oBAAoB,2BAA2B,IAAI,UAAU;AAC7F;;AAEA,SAAS,mBAAmB,SAAS,WAAW;CAC/C,MAAM,SAAS,cAAc,KAAK,KAAK,cAAc,IAAI,KAAK,IAAI,UAAU;CAC5E,QAAQ,SAAR;EACC,KAAK,mBAAmB,OAAO,oBAAoB;EACnD,KAAK,gBAAgB,OAAO;EAC5B,KAAK,gBAAgB,OAAO,eAAe;CAC5C;AACD"}