ts-prorm-orm 1.1.0

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 (310) hide show
  1. package/CHANGELOG.md +1111 -0
  2. package/LICENSE +21 -0
  3. package/README.md +573 -0
  4. package/dist/audit/history-query.js +180 -0
  5. package/dist/audit/index.js +23 -0
  6. package/dist/audit/logger.js +236 -0
  7. package/dist/cache/cache-manager.js +84 -0
  8. package/dist/cache/index.js +16 -0
  9. package/dist/cache/redis-cluster-cache.js +557 -0
  10. package/dist/cli.js +2200 -0
  11. package/dist/compliance/audit-trail.js +68 -0
  12. package/dist/compliance/backup-verification.js +685 -0
  13. package/dist/compliance/breach-detector.js +505 -0
  14. package/dist/compliance/consent-record.js +227 -0
  15. package/dist/compliance/consent-versioning.js +331 -0
  16. package/dist/compliance/cross-border-log.js +530 -0
  17. package/dist/compliance/data-classifier.js +258 -0
  18. package/dist/compliance/data-lineage.js +565 -0
  19. package/dist/compliance/data-masker.js +303 -0
  20. package/dist/compliance/data-portability.js +265 -0
  21. package/dist/compliance/data-retention.js +195 -0
  22. package/dist/compliance/dsar-workflow.js +342 -0
  23. package/dist/compliance/field-encryption.js +223 -0
  24. package/dist/compliance/immutable-record.js +148 -0
  25. package/dist/compliance/index.js +260 -0
  26. package/dist/compliance/privacy-impact-assessment.js +364 -0
  27. package/dist/compliance/pseudonymization.js +269 -0
  28. package/dist/compliance/query-firewall.js +1182 -0
  29. package/dist/compliance/rate-limiter.js +580 -0
  30. package/dist/compliance/right-to-erasure.js +117 -0
  31. package/dist/compliance/row-level-security.js +246 -0
  32. package/dist/compliance/security-decorator.js +574 -0
  33. package/dist/compliance/security-monitor.js +525 -0
  34. package/dist/compliance/sensitive-data-discovery.js +476 -0
  35. package/dist/compliance/session-isolation.js +472 -0
  36. package/dist/compliance/tls-enforcer.js +108 -0
  37. package/dist/compliance/worm-storage.js +712 -0
  38. package/dist/connection-manager.js +198 -0
  39. package/dist/connection-pool.js +519 -0
  40. package/dist/decorators/audit.js +136 -0
  41. package/dist/decorators/belongs-to-many.js +115 -0
  42. package/dist/decorators/belongs-to.js +115 -0
  43. package/dist/decorators/check.js +435 -0
  44. package/dist/decorators/collate.js +329 -0
  45. package/dist/decorators/comment.js +205 -0
  46. package/dist/decorators/database-settings.js +236 -0
  47. package/dist/decorators/default.js +244 -0
  48. package/dist/decorators/encryption.js +235 -0
  49. package/dist/decorators/engine.js +97 -0
  50. package/dist/decorators/fk-constraints.js +594 -0
  51. package/dist/decorators/foreign-table.js +136 -0
  52. package/dist/decorators/generated.js +274 -0
  53. package/dist/decorators/has-many.js +127 -0
  54. package/dist/decorators/has-one.js +116 -0
  55. package/dist/decorators/hstore.js +129 -0
  56. package/dist/decorators/index.js +355 -0
  57. package/dist/decorators/json-column.js +83 -0
  58. package/dist/decorators/jsonb.js +101 -0
  59. package/dist/decorators/orm-decorators.js +425 -0
  60. package/dist/decorators/permissions.js +294 -0
  61. package/dist/decorators/procedure.js +210 -0
  62. package/dist/decorators/query-options.js +556 -0
  63. package/dist/decorators/range.js +167 -0
  64. package/dist/decorators/set-column.js +83 -0
  65. package/dist/decorators/spatial.js +114 -0
  66. package/dist/decorators/storage.js +580 -0
  67. package/dist/decorators/timezone.js +512 -0
  68. package/dist/decorators/trigger.js +90 -0
  69. package/dist/decorators/uuid.js +135 -0
  70. package/dist/decorators/view.js +258 -0
  71. package/dist/diagrams/chen-diagram.js +354 -0
  72. package/dist/diagrams/class-diagram.js +384 -0
  73. package/dist/diagrams/dependency-diagram.js +432 -0
  74. package/dist/diagrams/er-diagram.js +605 -0
  75. package/dist/diagrams/flow-diagram.js +394 -0
  76. package/dist/diagrams/gantt-diagram.js +411 -0
  77. package/dist/diagrams/index-diagram.js +353 -0
  78. package/dist/diagrams/index.js +184 -0
  79. package/dist/diagrams/migration-diagram.js +316 -0
  80. package/dist/diagrams/model-diagram.js +616 -0
  81. package/dist/diagrams/package-diagram.js +376 -0
  82. package/dist/diagrams/palette.js +85 -0
  83. package/dist/diagrams/relational-diagram.js +455 -0
  84. package/dist/diagrams/schemadoc-diagram.js +309 -0
  85. package/dist/diagrams/sequence-diagram.js +307 -0
  86. package/dist/diagrams/state-diagram.js +344 -0
  87. package/dist/diagrams/svg-dom.js +111 -0
  88. package/dist/diagrams/tree-diagram.js +250 -0
  89. package/dist/dialects/clickhouse/index.js +1742 -0
  90. package/dist/dialects/cockroachdb/index.js +4677 -0
  91. package/dist/dialects/cratedb/index.js +441 -0
  92. package/dist/dialects/databricks/index.js +517 -0
  93. package/dist/dialects/db2/index.js +2225 -0
  94. package/dist/dialects/dialect.js +720 -0
  95. package/dist/dialects/duckdb/index.js +2014 -0
  96. package/dist/dialects/exasol/index.js +357 -0
  97. package/dist/dialects/firebird/index.js +495 -0
  98. package/dist/dialects/greenplum/index.js +457 -0
  99. package/dist/dialects/hana/index.js +1741 -0
  100. package/dist/dialects/mariadb/index.js +3590 -0
  101. package/dist/dialects/mssql/index.js +2296 -0
  102. package/dist/dialects/mysql/index.js +4058 -0
  103. package/dist/dialects/oracle/index.js +2999 -0
  104. package/dist/dialects/postgres/index.js +5319 -0
  105. package/dist/dialects/query-stream-helper.js +152 -0
  106. package/dist/dialects/questdb/index.js +433 -0
  107. package/dist/dialects/redshift/index.js +2277 -0
  108. package/dist/dialects/singlestore/index.js +354 -0
  109. package/dist/dialects/snowflake/index.js +2082 -0
  110. package/dist/dialects/spanner/index.js +1768 -0
  111. package/dist/dialects/sqlite/index.js +3382 -0
  112. package/dist/dialects/tidb/index.js +377 -0
  113. package/dist/dialects/timescaledb/index.js +164 -0
  114. package/dist/dialects/trino/index.js +420 -0
  115. package/dist/dialects/turso/index.js +227 -0
  116. package/dist/dialects/vertica/index.js +317 -0
  117. package/dist/dialects/yugabytedb/index.js +424 -0
  118. package/dist/errors/index.js +472 -0
  119. package/dist/errors/utils.js +340 -0
  120. package/dist/errors.js +21 -0
  121. package/dist/extensions/catalog/cloud-warehouse-features.js +207 -0
  122. package/dist/extensions/catalog/mssql-features.js +147 -0
  123. package/dist/extensions/catalog/mysql-mariadb-plugins.js +229 -0
  124. package/dist/extensions/catalog/oracle-db2-features.js +196 -0
  125. package/dist/extensions/catalog/postgres-extensions.js +516 -0
  126. package/dist/extensions/index.js +71 -0
  127. package/dist/extensions/types.js +13 -0
  128. package/dist/foreign-data.js +173 -0
  129. package/dist/hooks/hooks-manager.js +350 -0
  130. package/dist/hooks/index.js +37 -0
  131. package/dist/index.js +463 -0
  132. package/dist/logging.js +335 -0
  133. package/dist/migrations/index.js +40 -0
  134. package/dist/migrations/migration.js +196 -0
  135. package/dist/migrations/migrator.js +411 -0
  136. package/dist/migrations/prormmigration.js +275 -0
  137. package/dist/migrations/query-interface.js +435 -0
  138. package/dist/migrations/seeder.js +353 -0
  139. package/dist/models/associations.js +852 -0
  140. package/dist/models/constraints.js +288 -0
  141. package/dist/models/data-types.js +2518 -0
  142. package/dist/models/decorators.js +445 -0
  143. package/dist/models/index.js +33 -0
  144. package/dist/models/indexes.js +531 -0
  145. package/dist/models/methods.js +382 -0
  146. package/dist/models/model-manager.js +103 -0
  147. package/dist/models/model.js +5349 -0
  148. package/dist/models/operators.js +67 -0
  149. package/dist/models/scopes.js +189 -0
  150. package/dist/models/typescript-types.js +26 -0
  151. package/dist/nosql/aerospike/index.js +205 -0
  152. package/dist/nosql/allegrograph/index.js +169 -0
  153. package/dist/nosql/arangodb/index.js +364 -0
  154. package/dist/nosql/azure-blob/index.js +206 -0
  155. package/dist/nosql/beanstalkd/index.js +231 -0
  156. package/dist/nosql/beequeue/index.js +210 -0
  157. package/dist/nosql/bigchaindb/index.js +195 -0
  158. package/dist/nosql/bigtable/index.js +224 -0
  159. package/dist/nosql/blazegraph/index.js +173 -0
  160. package/dist/nosql/bullmq/index.js +191 -0
  161. package/dist/nosql/cassandra/index.js +174 -0
  162. package/dist/nosql/chroma/index.js +190 -0
  163. package/dist/nosql/cloudflare-kv/index.js +220 -0
  164. package/dist/nosql/coherence/index.js +200 -0
  165. package/dist/nosql/cosmosdb/index.js +157 -0
  166. package/dist/nosql/couchbase/index.js +213 -0
  167. package/dist/nosql/dax/index.js +212 -0
  168. package/dist/nosql/deno-kv/index.js +206 -0
  169. package/dist/nosql/dgraph/index.js +171 -0
  170. package/dist/nosql/doris/index.js +169 -0
  171. package/dist/nosql/druid/index.js +162 -0
  172. package/dist/nosql/dynamodb/index.js +937 -0
  173. package/dist/nosql/elasticsearch/index.js +377 -0
  174. package/dist/nosql/etcd/index.js +502 -0
  175. package/dist/nosql/eventhubs/index.js +213 -0
  176. package/dist/nosql/eventstore/index.js +254 -0
  177. package/dist/nosql/faunadb/index.js +188 -0
  178. package/dist/nosql/firestore/index.js +177 -0
  179. package/dist/nosql/fluree/index.js +148 -0
  180. package/dist/nosql/fuseki/index.js +170 -0
  181. package/dist/nosql/gcs/index.js +172 -0
  182. package/dist/nosql/gearman/index.js +160 -0
  183. package/dist/nosql/geode/index.js +196 -0
  184. package/dist/nosql/graphdb/index.js +169 -0
  185. package/dist/nosql/graylog/index.js +188 -0
  186. package/dist/nosql/gridgain/index.js +171 -0
  187. package/dist/nosql/hazelcast/index.js +162 -0
  188. package/dist/nosql/hbase/index.js +230 -0
  189. package/dist/nosql/ignite/index.js +173 -0
  190. package/dist/nosql/immudb/index.js +184 -0
  191. package/dist/nosql/index.js +232 -0
  192. package/dist/nosql/infinispan/index.js +200 -0
  193. package/dist/nosql/influxdb/index.js +0 -0
  194. package/dist/nosql/kafka/index.js +234 -0
  195. package/dist/nosql/keyspaces/index.js +189 -0
  196. package/dist/nosql/kinesis/index.js +253 -0
  197. package/dist/nosql/leveldb/index.js +153 -0
  198. package/dist/nosql/lmdb/index.js +160 -0
  199. package/dist/nosql/loki/index.js +201 -0
  200. package/dist/nosql/marklogic/index.js +204 -0
  201. package/dist/nosql/materialize/index.js +145 -0
  202. package/dist/nosql/meilisearch/index.js +154 -0
  203. package/dist/nosql/memcached/index.js +223 -0
  204. package/dist/nosql/milvus/index.js +410 -0
  205. package/dist/nosql/minio/index.js +265 -0
  206. package/dist/nosql/momento/index.js +179 -0
  207. package/dist/nosql/mongodb/index.js +461 -0
  208. package/dist/nosql/nats/index.js +247 -0
  209. package/dist/nosql/nedb/index.js +164 -0
  210. package/dist/nosql/neo4j/index.js +450 -0
  211. package/dist/nosql/neptune/index.js +470 -0
  212. package/dist/nosql/nsq/index.js +200 -0
  213. package/dist/nosql/opensearch/index.js +186 -0
  214. package/dist/nosql/orientdb/index.js +175 -0
  215. package/dist/nosql/papertrail/index.js +200 -0
  216. package/dist/nosql/pinecone/index.js +0 -0
  217. package/dist/nosql/pinot/index.js +133 -0
  218. package/dist/nosql/pouchdb/index.js +172 -0
  219. package/dist/nosql/prometheus/index.js +174 -0
  220. package/dist/nosql/provendb/index.js +147 -0
  221. package/dist/nosql/pubsub/index.js +187 -0
  222. package/dist/nosql/pulsar/index.js +232 -0
  223. package/dist/nosql/qdrant/index.js +295 -0
  224. package/dist/nosql/qldb/index.js +192 -0
  225. package/dist/nosql/r2/index.js +281 -0
  226. package/dist/nosql/rabbitmq/index.js +237 -0
  227. package/dist/nosql/ravendb/index.js +175 -0
  228. package/dist/nosql/redis/index.js +607 -0
  229. package/dist/nosql/redpanda/index.js +237 -0
  230. package/dist/nosql/resque/index.js +203 -0
  231. package/dist/nosql/rethinkdb/index.js +232 -0
  232. package/dist/nosql/rocksdb/index.js +152 -0
  233. package/dist/nosql/rockset/index.js +126 -0
  234. package/dist/nosql/s3/index.js +298 -0
  235. package/dist/nosql/scylladb/index.js +178 -0
  236. package/dist/nosql/signoz/index.js +227 -0
  237. package/dist/nosql/sns/index.js +201 -0
  238. package/dist/nosql/solr/index.js +231 -0
  239. package/dist/nosql/splunk/index.js +227 -0
  240. package/dist/nosql/sqs/index.js +246 -0
  241. package/dist/nosql/stardog/index.js +169 -0
  242. package/dist/nosql/starrocks/index.js +170 -0
  243. package/dist/nosql/store.js +2 -0
  244. package/dist/nosql/sumologic/index.js +213 -0
  245. package/dist/nosql/surrealdb/index.js +179 -0
  246. package/dist/nosql/terminusdb/index.js +151 -0
  247. package/dist/nosql/tigergraph/index.js +469 -0
  248. package/dist/nosql/typesense/index.js +148 -0
  249. package/dist/nosql/unqlite/index.js +157 -0
  250. package/dist/nosql/upstash/index.js +167 -0
  251. package/dist/nosql/vercel-kv/index.js +166 -0
  252. package/dist/nosql/victoriametrics/index.js +213 -0
  253. package/dist/nosql/virtuoso/index.js +169 -0
  254. package/dist/nosql/weaviate/index.js +276 -0
  255. package/dist/operators/index.js +108 -0
  256. package/dist/operators.js +2690 -0
  257. package/dist/prisma-migrate/index.js +38 -0
  258. package/dist/prisma-migrate/migration-generator.js +125 -0
  259. package/dist/prisma-migrate/model-generator.js +172 -0
  260. package/dist/prisma-migrate/relations.js +100 -0
  261. package/dist/prisma-migrate/schema-parser.js +167 -0
  262. package/dist/prisma-migrate/type-mapper.js +40 -0
  263. package/dist/prorm.js +6832 -0
  264. package/dist/query-builders/cte-builder.js +80 -0
  265. package/dist/query-builders/functions/aggregate.js +390 -0
  266. package/dist/query-builders/functions/conditional.js +503 -0
  267. package/dist/query-builders/functions/datetime.js +695 -0
  268. package/dist/query-builders/functions/fulltext.js +439 -0
  269. package/dist/query-builders/functions/index.js +93 -0
  270. package/dist/query-builders/functions/json.js +427 -0
  271. package/dist/query-builders/functions/math.js +399 -0
  272. package/dist/query-builders/functions/string.js +518 -0
  273. package/dist/query-builders/functions/window.js +328 -0
  274. package/dist/query-builders/include-builder.js +323 -0
  275. package/dist/query-builders/index-expression-builder.js +242 -0
  276. package/dist/query-builders/index.js +161 -0
  277. package/dist/query-builders/insert-builder.js +164 -0
  278. package/dist/query-builders/model-helpers.js +38 -0
  279. package/dist/query-builders/order-limit-builder.js +239 -0
  280. package/dist/query-builders/sql-compiler.js +2040 -0
  281. package/dist/query-builders/subquery-builder.js +152 -0
  282. package/dist/query-builders/update-builder.js +182 -0
  283. package/dist/query-builders/view-builder.js +218 -0
  284. package/dist/query-builders/where-builder.js +1532 -0
  285. package/dist/query-interface.js +622 -0
  286. package/dist/query-optimizers/batch-optimizer.js +426 -0
  287. package/dist/query-optimizers/explain-plans.js +415 -0
  288. package/dist/query-optimizers/index.js +51 -0
  289. package/dist/query-optimizers/prepared-statement-cache.js +423 -0
  290. package/dist/query-optimizers/query-hints.js +438 -0
  291. package/dist/query-optimizers/query-optimizer.js +278 -0
  292. package/dist/query-optimizers/slow-query-logger.js +271 -0
  293. package/dist/replica-manager.js +507 -0
  294. package/dist/schema/index.js +15 -0
  295. package/dist/schema/migration-generator.js +374 -0
  296. package/dist/schema/schema-differ.js +549 -0
  297. package/dist/schema/types.js +6 -0
  298. package/dist/sql-constants.js +300 -0
  299. package/dist/sqlite-advanced.js +1047 -0
  300. package/dist/streams/index.js +12 -0
  301. package/dist/streams/transforms.js +178 -0
  302. package/dist/transaction.js +456 -0
  303. package/dist/types/index.js +180 -0
  304. package/dist/user-management.js +127 -0
  305. package/dist/utils/date.js +300 -0
  306. package/dist/utils/index.js +1079 -0
  307. package/dist/utils/string.js +161 -0
  308. package/dist/validators/index.js +19 -0
  309. package/dist/validators/validator.js +911 -0
  310. package/package.json +190 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ /**
3
+ * SQL Constants for database behavior control
4
+ * Provides dialect-specific SQL statements for controlling database behavior
5
+ * like foreign key checks, transaction isolation levels, etc.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.IsolationLevelEnum = exports.SQL = exports.CLICKHOUSE = exports.SNOWFLAKE = exports.DB2 = exports.REDSHIFT = exports.COCKROACHDB = exports.SQLITE = exports.POSTGRES = exports.MARIADB = exports.MYSQL = void 0;
9
+ exports.getConstantsForDialect = getConstantsForDialect;
10
+ /**
11
+ * MySQL/MariaDB SQL constants
12
+ */
13
+ exports.MYSQL = {
14
+ FOREIGN_KEY_CHECKS: {
15
+ disable: 'SET FOREIGN_KEY_CHECKS = 0',
16
+ enable: 'SET FOREIGN_KEY_CHECKS = 1',
17
+ },
18
+ UNIQUE_KEY_CHECKS: {
19
+ disable: 'SET UNIQUE_CHECKS = 0',
20
+ enable: 'SET UNIQUE_CHECKS = 1',
21
+ },
22
+ ISOLATION_LEVEL: {
23
+ READ_UNCOMMITTED: 'SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED',
24
+ READ_COMMITTED: 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
25
+ REPEATABLE_READ: 'SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ',
26
+ SERIALIZABLE: 'SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE',
27
+ },
28
+ AUTOCOMMIT: {
29
+ on: 'SET AUTOCOMMIT = 1',
30
+ off: 'SET AUTOCOMMIT = 0',
31
+ },
32
+ CACHE: {
33
+ on: 'SET SESSION query_cache_type = ON',
34
+ off: 'SET SESSION query_cache_type = OFF',
35
+ },
36
+ SQL_MODE: {
37
+ STRICT_TRANS_TABLES: "SET @@sql_mode = 'STRICT_TRANS_TABLES'",
38
+ NO_ZERO_DATE: "SET @@sql_mode = 'NO_ZERO_DATE'",
39
+ NO_ZERO_IN_DATE: "SET @@sql_mode = 'NO_ZERO_IN_DATE'",
40
+ ERROR_FOR_DIVISION_BY_ZERO: "SET @@sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO'",
41
+ NO_AUTO_CREATE_USER: "SET @@sql_mode = 'NO_AUTO_CREATE_USER'",
42
+ NO_ENGINE_SUBSTITUTION: "SET @@sql_mode = 'NO_ENGINE_SUBSTITUTION'",
43
+ ALL: "SET @@sql_mode = 'ALL'",
44
+ TRADITIONAL: "SET @@sql_mode = 'TRADITIONAL'",
45
+ },
46
+ };
47
+ /**
48
+ * MariaDB SQL constants (extends MySQL with additional options)
49
+ */
50
+ exports.MARIADB = {
51
+ ...exports.MYSQL,
52
+ SQL_MODE: {
53
+ ...exports.MYSQL.SQL_MODE,
54
+ STRICT_TRANS_TABLES: "SET @@sql_mode = 'STRICT_TRANS_TABLES'",
55
+ NO_ZERO_DATE: "SET @@sql_mode = 'NO_ZERO_DATE'",
56
+ NO_ZERO_IN_DATE: "SET @@sql_mode = 'NO_ZERO_IN_DATE'",
57
+ ERROR_FOR_DIVISION_BY_ZERO: "SET @@sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO'",
58
+ NO_AUTO_CREATE_USER: "SET @@sql_mode = 'NO_AUTO_CREATE_USER'",
59
+ NO_ENGINE_SUBSTITUTION: "SET @@sql_mode = 'NO_ENGINE_SUBSTITUTION'",
60
+ ALL: "SET @@sql_mode = 'ALL'",
61
+ TRADITIONAL: "SET @@sql_mode = 'TRADITIONAL'",
62
+ },
63
+ };
64
+ /**
65
+ * PostgreSQL SQL constants
66
+ */
67
+ exports.POSTGRES = {
68
+ ISOLATION_LEVEL: {
69
+ READ_UNCOMMITTED: 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED',
70
+ READ_COMMITTED: 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED',
71
+ REPEATABLE_READ: 'SET TRANSACTION ISOLATION LEVEL REPEATABLE READ',
72
+ SERIALIZABLE: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
73
+ },
74
+ CONSTRAINT_DEFERral: {
75
+ DEFERRED: 'SET CONSTRAINTS ALL DEFERRED',
76
+ IMMEDIATE: 'SET CONSTRAINTS ALL IMMEDIATE',
77
+ },
78
+ SEARCH_PATH: {
79
+ set: (schema) => `SET search_path TO ${schema}`,
80
+ reset: 'SET search_path TO DEFAULT',
81
+ },
82
+ AUTOCOMMIT: {
83
+ on: 'SET SESSION autocommit = ON',
84
+ off: 'SET SESSION autocommit = OFF',
85
+ },
86
+ CACHE: {
87
+ on: 'SET SESSION statement_cache_mode = ON',
88
+ off: 'SET SESSION statement_cache_mode = OFF',
89
+ },
90
+ };
91
+ /**
92
+ * SQLite SQL constants
93
+ */
94
+ exports.SQLITE = {
95
+ PRAGMA: {
96
+ foreign_keys: {
97
+ on: 'PRAGMA foreign_keys = ON',
98
+ off: 'PRAGMA foreign_keys = OFF',
99
+ },
100
+ trusted_schema: {
101
+ on: 'PRAGMA trusted_schema = ON',
102
+ off: 'PRAGMA trusted_schema = OFF',
103
+ },
104
+ journal_mode: {
105
+ WAL: 'PRAGMA journal_mode = WAL',
106
+ DELETE: 'PRAGMA journal_mode = DELETE',
107
+ TRUNCATE: 'PRAGMA journal_mode = TRUNCATE',
108
+ PERSIST: 'PRAGMA journal_mode = PERSIST',
109
+ MEMORY: 'PRAGMA journal_mode = MEMORY',
110
+ },
111
+ synchronous: {
112
+ OFF: 'PRAGMA synchronous = OFF',
113
+ NORMAL: 'PRAGMA synchronous = NORMAL',
114
+ FULL: 'PRAGMA synchronous = FULL',
115
+ EXTRA: 'PRAGMA synchronous = EXTRA',
116
+ },
117
+ },
118
+ ISOLATION_LEVEL: {
119
+ READ_UNCOMMITTED: 'PRAGMA read_uncommitted = 1',
120
+ READ_COMMITTED: 'PRAGMA read_uncommitted = 0',
121
+ REPEATABLE_READ: 'PRAGMA read_uncommitted = 0',
122
+ SERIALIZABLE: 'PRAGMA read_uncommitted = 0',
123
+ },
124
+ };
125
+ /**
126
+ * CockroachDB SQL constants
127
+ * CockroachDB is wire-compatible with PostgreSQL and shares most session-level
128
+ * SQL syntax, though it internally maps all isolation levels to SERIALIZABLE.
129
+ */
130
+ exports.COCKROACHDB = {
131
+ ISOLATION_LEVEL: {
132
+ READ_UNCOMMITTED: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
133
+ READ_COMMITTED: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
134
+ REPEATABLE_READ: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
135
+ SERIALIZABLE: 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE',
136
+ },
137
+ CONSTRAINT_DEFERral: {
138
+ DEFERRED: 'SET CONSTRAINTS ALL DEFERRED',
139
+ IMMEDIATE: 'SET CONSTRAINTS ALL IMMEDIATE',
140
+ },
141
+ SEARCH_PATH: {
142
+ set: (schema) => `SET search_path TO ${schema}`,
143
+ reset: 'SET search_path TO DEFAULT',
144
+ },
145
+ AUTOCOMMIT: {
146
+ on: 'SET SESSION autocommit = ON',
147
+ off: 'SET SESSION autocommit = OFF',
148
+ },
149
+ CACHE: {
150
+ on: 'SET SESSION statement_cache_mode = ON',
151
+ off: 'SET SESSION statement_cache_mode = OFF',
152
+ },
153
+ };
154
+ /**
155
+ * Amazon Redshift SQL constants
156
+ * Redshift is derived from PostgreSQL 8.0.2 and only supports the
157
+ * SERIALIZABLE (default) and READ COMMITTED isolation levels.
158
+ */
159
+ exports.REDSHIFT = {
160
+ ISOLATION_LEVEL: {
161
+ READ_UNCOMMITTED: 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED',
162
+ READ_COMMITTED: 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED',
163
+ REPEATABLE_READ: 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE',
164
+ SERIALIZABLE: 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE',
165
+ },
166
+ CONSTRAINT_DEFERral: {
167
+ DEFERRED: 'SET CONSTRAINTS ALL DEFERRED',
168
+ IMMEDIATE: 'SET CONSTRAINTS ALL IMMEDIATE',
169
+ },
170
+ SEARCH_PATH: {
171
+ set: (schema) => `SET search_path TO ${schema}`,
172
+ reset: 'SET search_path TO DEFAULT',
173
+ },
174
+ AUTOCOMMIT: {
175
+ on: 'SET SESSION autocommit = ON',
176
+ off: 'SET SESSION autocommit = OFF',
177
+ },
178
+ CACHE: {
179
+ on: 'SET SESSION statement_cache_mode = ON',
180
+ off: 'SET SESSION statement_cache_mode = OFF',
181
+ },
182
+ };
183
+ /**
184
+ * IBM Db2 SQL constants
185
+ * Db2 isolation levels use single-letter codes: UR (uncommitted read),
186
+ * CS (cursor stability), RS (read stability), RR (repeatable read).
187
+ */
188
+ exports.DB2 = {
189
+ ISOLATION_LEVEL: {
190
+ READ_UNCOMMITTED: 'SET CURRENT ISOLATION = UR',
191
+ READ_COMMITTED: 'SET CURRENT ISOLATION = CS',
192
+ REPEATABLE_READ: 'SET CURRENT ISOLATION = RS',
193
+ SERIALIZABLE: 'SET CURRENT ISOLATION = RR',
194
+ },
195
+ AUTOCOMMIT: {
196
+ on: 'SET AUTOCOMMIT ON',
197
+ off: 'SET AUTOCOMMIT OFF',
198
+ },
199
+ FOREIGN_KEY_CHECKS: {
200
+ disable: 'SET INTEGRITY FOR <table_name> OFF',
201
+ enable: 'SET INTEGRITY FOR <table_name> IMMEDIATE CHECKED',
202
+ },
203
+ };
204
+ /**
205
+ * Snowflake SQL constants
206
+ * Snowflake session parameters are configured via ALTER SESSION SET.
207
+ * Snowflake enforces READ COMMITTED semantics for all statements, so the
208
+ * other isolation levels map to the same session behavior.
209
+ */
210
+ exports.SNOWFLAKE = {
211
+ ISOLATION_LEVEL: {
212
+ READ_UNCOMMITTED: 'ALTER SESSION SET TRANSACTION_DEFAULT_ISOLATION_LEVEL = READ_COMMITTED',
213
+ READ_COMMITTED: 'ALTER SESSION SET TRANSACTION_DEFAULT_ISOLATION_LEVEL = READ_COMMITTED',
214
+ REPEATABLE_READ: 'ALTER SESSION SET TRANSACTION_DEFAULT_ISOLATION_LEVEL = READ_COMMITTED',
215
+ SERIALIZABLE: 'ALTER SESSION SET TRANSACTION_DEFAULT_ISOLATION_LEVEL = READ_COMMITTED',
216
+ },
217
+ AUTOCOMMIT: {
218
+ on: 'ALTER SESSION SET AUTOCOMMIT = TRUE',
219
+ off: 'ALTER SESSION SET AUTOCOMMIT = FALSE',
220
+ },
221
+ CACHE: {
222
+ on: 'ALTER SESSION SET USE_CACHED_RESULT = TRUE',
223
+ off: 'ALTER SESSION SET USE_CACHED_RESULT = FALSE',
224
+ },
225
+ };
226
+ /**
227
+ * ClickHouse SQL constants
228
+ * ClickHouse transactions are experimental and scoped via session settings;
229
+ * isolation level is effectively fixed and controlled through the
230
+ * `transaction_isolation` setting where supported.
231
+ */
232
+ exports.CLICKHOUSE = {
233
+ ISOLATION_LEVEL: {
234
+ READ_UNCOMMITTED: "SET session_transaction_isolation = 'READ UNCOMMITTED'",
235
+ READ_COMMITTED: "SET session_transaction_isolation = 'READ COMMITTED'",
236
+ REPEATABLE_READ: "SET session_transaction_isolation = 'REPEATABLE READ'",
237
+ SERIALIZABLE: "SET session_transaction_isolation = 'SERIALIZABLE'",
238
+ },
239
+ AUTOCOMMIT: {
240
+ on: 'SET implicit_transaction = 1',
241
+ off: 'SET implicit_transaction = 0',
242
+ },
243
+ CACHE: {
244
+ on: 'SET use_query_cache = 1',
245
+ off: 'SET use_query_cache = 0',
246
+ },
247
+ };
248
+ /**
249
+ * All SQL constants
250
+ */
251
+ exports.SQL = {
252
+ mysql: exports.MYSQL,
253
+ mariadb: exports.MARIADB,
254
+ postgres: exports.POSTGRES,
255
+ sqlite: exports.SQLITE,
256
+ cockroachdb: exports.COCKROACHDB,
257
+ redshift: exports.REDSHIFT,
258
+ db2: exports.DB2,
259
+ snowflake: exports.SNOWFLAKE,
260
+ clickhouse: exports.CLICKHOUSE,
261
+ };
262
+ /**
263
+ * Get SQL constants for a specific dialect
264
+ * @param dialect - The dialect name ('mysql', 'mariadb', 'postgres', 'sqlite',
265
+ * 'cockroachdb', 'redshift', 'db2', 'snowflake', 'clickhouse')
266
+ */
267
+ function getConstantsForDialect(dialect) {
268
+ switch (dialect) {
269
+ case 'mysql':
270
+ return exports.MYSQL;
271
+ case 'mariadb':
272
+ return exports.MARIADB;
273
+ case 'postgres':
274
+ return exports.POSTGRES;
275
+ case 'sqlite':
276
+ return exports.SQLITE;
277
+ case 'cockroachdb':
278
+ return exports.COCKROACHDB;
279
+ case 'redshift':
280
+ return exports.REDSHIFT;
281
+ case 'db2':
282
+ return exports.DB2;
283
+ case 'snowflake':
284
+ return exports.SNOWFLAKE;
285
+ case 'clickhouse':
286
+ return exports.CLICKHOUSE;
287
+ default:
288
+ return exports.MYSQL;
289
+ }
290
+ }
291
+ /**
292
+ * Transaction isolation level enum
293
+ */
294
+ var IsolationLevelEnum;
295
+ (function (IsolationLevelEnum) {
296
+ IsolationLevelEnum["READ_UNCOMMITTED"] = "READ_UNCOMMITTED";
297
+ IsolationLevelEnum["READ_COMMITTED"] = "READ_COMMITTED";
298
+ IsolationLevelEnum["REPEATABLE_READ"] = "REPEATABLE_READ";
299
+ IsolationLevelEnum["SERIALIZABLE"] = "SERIALIZABLE";
300
+ })(IsolationLevelEnum || (exports.IsolationLevelEnum = IsolationLevelEnum = {}));