@deterministic-code/datasources 0.0.0-stage → 0.1.1

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 (508) hide show
  1. package/dist/ArrayReader.d.ts +12 -0
  2. package/dist/BatchCommandIBulkWriteStrategy.d.ts +33 -0
  3. package/dist/BuiltRepository.d.ts +16 -0
  4. package/dist/BulkCRUDRepository.d.ts +17 -0
  5. package/dist/BulkCommand.d.ts +5 -0
  6. package/dist/BulkWriteEnrichment.d.ts +4 -0
  7. package/dist/CRUDRepository.d.ts +40 -0
  8. package/dist/CRUDRepositoryBuilder.d.ts +19 -0
  9. package/dist/CRUDRepositoryOptions.d.ts +7 -0
  10. package/dist/CRUDRepositoryStatements.d.ts +17 -0
  11. package/dist/CascadeDeleteEnrichmentStrategy.d.ts +7 -0
  12. package/dist/CascadeDeleteUpdateEnrichmentStrategy.d.ts +8 -0
  13. package/dist/CommandMiddlewareHost.d.ts +22 -0
  14. package/dist/ConsoleCommandMiddleware.d.ts +14 -0
  15. package/dist/CreateEnrichmentStrategy.d.ts +14 -0
  16. package/dist/Datasource.d.ts +30 -0
  17. package/dist/DatasourceError.d.ts +3 -0
  18. package/dist/DatasourceFactory.d.ts +12 -0
  19. package/dist/DatasourceOptions.d.ts +1 -0
  20. package/dist/DatasourceUrl.d.ts +12 -0
  21. package/dist/DatasourceUrlParser.d.ts +4 -0
  22. package/dist/DefaultCreateEnrichmentStrategy.d.ts +7 -0
  23. package/dist/DefaultReadonlyEnrichmentStrategy.d.ts +19 -0
  24. package/dist/DefaultUpdateEnrichmentStrategy.d.ts +7 -0
  25. package/dist/DefaultWriteEnrichmentStrategy.d.ts +21 -0
  26. package/dist/DeleteEnrichmentStrategy.d.ts +11 -0
  27. package/dist/DriverLoader.d.ts +5 -0
  28. package/dist/Enrichment.d.ts +13 -0
  29. package/dist/EnrichmentPropertyType.d.ts +7 -0
  30. package/dist/ExpectConsoleMiddleware.d.ts +15 -0
  31. package/dist/FirstResultReader.d.ts +19 -0
  32. package/dist/HashsetOptimizedReadonlyEnrichmentStrategy.d.ts +9 -0
  33. package/dist/IBulkWriteStrategy.d.ts +12 -0
  34. package/dist/ICRUDRepository.d.ts +12 -0
  35. package/dist/ICRUDRepositoryFactory.d.ts +7 -0
  36. package/dist/ICommand.d.ts +20 -0
  37. package/dist/ICommandMiddleware.d.ts +12 -0
  38. package/dist/IConnection.d.ts +12 -0
  39. package/dist/IDatasource.d.ts +18 -0
  40. package/dist/IDatasourceFactory.d.ts +5 -0
  41. package/dist/IDriver.d.ts +19 -0
  42. package/dist/IEnriched.d.ts +6 -0
  43. package/dist/IReader.d.ts +8 -0
  44. package/dist/IReadonlyEnrichmentStrategy.d.ts +7 -0
  45. package/dist/IReadonlyRepository.d.ts +11 -0
  46. package/dist/IRepository.d.ts +4 -0
  47. package/dist/IRepositoryFactory.d.ts +7 -0
  48. package/dist/IRepositoryTree.d.ts +4 -0
  49. package/dist/IRepositoryTreeNode.d.ts +7 -0
  50. package/dist/ITransaction.d.ts +8 -0
  51. package/dist/IUnitOfWork.d.ts +5 -0
  52. package/dist/IWriteEnrichmentStrategy.d.ts +7 -0
  53. package/dist/Information.d.ts +5 -0
  54. package/dist/IsolationLevel.d.ts +7 -0
  55. package/dist/LazyWriteEnrichmentStrategy.d.ts +4 -0
  56. package/dist/NestedToObjectEnrichmentStrategy.d.ts +10 -0
  57. package/dist/Parameter.d.ts +7 -0
  58. package/dist/ParameterDirection.d.ts +7 -0
  59. package/dist/ProviderCatalog.d.ts +7 -0
  60. package/dist/ProviderNotImplementedError.d.ts +4 -0
  61. package/dist/ProviderNotInstalledError.d.ts +4 -0
  62. package/dist/ReadonlyRepository.d.ts +59 -0
  63. package/dist/ReadonlyRepositoryBuilder.d.ts +12 -0
  64. package/dist/ReadonlyRepositoryMappingOptions.d.ts +14 -0
  65. package/dist/ReadonlyRepositoryStatements.d.ts +8 -0
  66. package/dist/RepositoryAccess.d.ts +11 -0
  67. package/dist/RepositoryFactory.d.ts +23 -0
  68. package/dist/RepositoryNotRegisteredError.d.ts +4 -0
  69. package/dist/RepositoryTree.d.ts +6 -0
  70. package/dist/RepositoryTreeNode.d.ts +9 -0
  71. package/dist/Response.d.ts +7 -0
  72. package/dist/Row.d.ts +2 -0
  73. package/dist/SingleCommandIBulkWriteStrategy.d.ts +11 -0
  74. package/dist/StatementMappers.d.ts +16 -0
  75. package/dist/StoredEnrichment.d.ts +11 -0
  76. package/dist/StoredProcedureBulkWriteStrategy.d.ts +27 -0
  77. package/dist/StreamingReader.d.ts +16 -0
  78. package/dist/UnitOfWorkTransaction.d.ts +12 -0
  79. package/dist/UpdateEnrichmentStrategy.d.ts +18 -0
  80. package/dist/WriteMode.d.ts +1 -0
  81. package/dist/builders/Field.d.ts +5 -0
  82. package/dist/builders/Scalar.d.ts +1 -0
  83. package/dist/builders/index.d.ts +2 -0
  84. package/dist/collectAsync.d.ts +1 -0
  85. package/dist/converters/Cell.d.ts +2 -0
  86. package/dist/converters/ChangeCasingConverter.d.ts +7 -0
  87. package/dist/converters/Constructable.d.ts +1 -0
  88. package/dist/converters/MetaDataRowTypeConverter.d.ts +14 -0
  89. package/dist/converters/PluralizerConverter.d.ts +4 -0
  90. package/dist/converters/RegexConverter.d.ts +7 -0
  91. package/dist/converters/ReplaceConverter.d.ts +7 -0
  92. package/dist/converters/RowTypeConverter.d.ts +10 -0
  93. package/dist/converters/ToLowerCaseConverter.d.ts +4 -0
  94. package/dist/converters/ToUpperCaseConverter.d.ts +4 -0
  95. package/dist/converters/TypeConverter.d.ts +5 -0
  96. package/dist/createCRUDRepositoryOptions.d.ts +7 -0
  97. package/dist/createReadonlyRepositoryMappingOptions.d.ts +6 -0
  98. package/dist/dotEnv.d.ts +5 -0
  99. package/dist/index.d.ts +119 -0
  100. package/dist/mappers/ChangeCasingMapper.d.ts +9 -0
  101. package/dist/mappers/DictionaryMapper.d.ts +8 -0
  102. package/dist/mappers/FlatToNestedMapper.d.ts +20 -0
  103. package/dist/mappers/IFlatToNestedMapper.d.ts +6 -0
  104. package/dist/mappers/IMapper.d.ts +4 -0
  105. package/dist/mappers/IdentityMapper.d.ts +5 -0
  106. package/dist/mappers/PluralizerMapper.d.ts +6 -0
  107. package/dist/mappers/RowTypeMapper.d.ts +6 -0
  108. package/dist/mappers/TransformConverterMapper.d.ts +5 -0
  109. package/dist/mappers/TransformMapper.d.ts +6 -0
  110. package/dist/mappers/TypeMap.d.ts +8 -0
  111. package/dist/mappers/TypeMapGroup.d.ts +5 -0
  112. package/dist/mocks/index.d.ts +9 -0
  113. package/dist/mocks/mock-command.d.ts +28 -0
  114. package/dist/mocks/mock-connection.d.ts +22 -0
  115. package/dist/mocks/mock-datasource.d.ts +24 -0
  116. package/dist/mocks/mock-driver.d.ts +15 -0
  117. package/dist/mocks/mock-reader.d.ts +14 -0
  118. package/dist/mocks/mock-repository.d.ts +42 -0
  119. package/dist/mocks/mock-select-statement.d.ts +10 -0
  120. package/dist/mocks/mock-transaction.d.ts +16 -0
  121. package/dist/mocks/mock-where.d.ts +8 -0
  122. package/dist/parametersToRecord.d.ts +2 -0
  123. package/dist/readerToAsyncIterable.d.ts +2 -0
  124. package/dist/splitStatements.d.ts +1 -0
  125. package/dist/statementParameters.d.ts +1 -0
  126. package/dist/statementUsesParameter.d.ts +1 -0
  127. package/dist/statements/Aggregate.d.ts +6 -0
  128. package/dist/statements/ArrayExpression.d.ts +5 -0
  129. package/dist/statements/BulkDeleteStatement.d.ts +11 -0
  130. package/dist/statements/BulkDeleteStatementTextRenderer.d.ts +4 -0
  131. package/dist/statements/BulkInsertStatement.d.ts +12 -0
  132. package/dist/statements/BulkInsertStatementTextRenderer.d.ts +4 -0
  133. package/dist/statements/BulkUpdateStatement.d.ts +16 -0
  134. package/dist/statements/BulkUpdateStatementTextRenderer.d.ts +8 -0
  135. package/dist/statements/CheckConstraint.d.ts +7 -0
  136. package/dist/statements/Cmp.d.ts +9 -0
  137. package/dist/statements/Column.d.ts +9 -0
  138. package/dist/statements/ColumnDefault.d.ts +5 -0
  139. package/dist/statements/Condition.d.ts +3 -0
  140. package/dist/statements/ConditionRenderer.d.ts +12 -0
  141. package/dist/statements/CreateIndexStatement.d.ts +10 -0
  142. package/dist/statements/CreateIndexStatementTextRenderer.d.ts +5 -0
  143. package/dist/statements/CreateTableStatement.d.ts +11 -0
  144. package/dist/statements/CreateTableStatementTextRenderer.d.ts +18 -0
  145. package/dist/statements/DefaultStatementTextRenderer.d.ts +5 -0
  146. package/dist/statements/DeleteStatement.d.ts +9 -0
  147. package/dist/statements/DeleteStatementTextRenderer.d.ts +7 -0
  148. package/dist/statements/ExecuteStoredProcedureStatement.d.ts +9 -0
  149. package/dist/statements/ExecuteStoredProcedureStatementTextRenderer.d.ts +4 -0
  150. package/dist/statements/ExpressionEvaluator.d.ts +5 -0
  151. package/dist/statements/ExpressionRenderer.d.ts +8 -0
  152. package/dist/statements/ForeignKey.d.ts +19 -0
  153. package/dist/statements/IBulkDeleteStatement.d.ts +3 -0
  154. package/dist/statements/IBulkInsertStatement.d.ts +3 -0
  155. package/dist/statements/IBulkUpdateStatement.d.ts +3 -0
  156. package/dist/statements/ICondition.d.ts +4 -0
  157. package/dist/statements/IConditionVisitor.d.ts +6 -0
  158. package/dist/statements/ICreateIndexStatement.d.ts +3 -0
  159. package/dist/statements/ICreateTableStatement.d.ts +3 -0
  160. package/dist/statements/IDeleteStatement.d.ts +5 -0
  161. package/dist/statements/IExecuteStoredProcedureStatement.d.ts +3 -0
  162. package/dist/statements/IExpression.d.ts +2 -0
  163. package/dist/statements/IInsertStatement.d.ts +3 -0
  164. package/dist/statements/IReturnStatement.d.ts +3 -0
  165. package/dist/statements/ISelectStatement.d.ts +5 -0
  166. package/dist/statements/IStatement.d.ts +4 -0
  167. package/dist/statements/IStatementVisitor.d.ts +26 -0
  168. package/dist/statements/ITableConstraint.d.ts +5 -0
  169. package/dist/statements/IUpdateStatement.d.ts +5 -0
  170. package/dist/statements/IWhere.d.ts +6 -0
  171. package/dist/statements/Identifier.d.ts +5 -0
  172. package/dist/statements/InsertStatement.d.ts +9 -0
  173. package/dist/statements/InsertStatementTextRenderer.d.ts +4 -0
  174. package/dist/statements/Join.d.ts +14 -0
  175. package/dist/statements/Literal.d.ts +6 -0
  176. package/dist/statements/Native.d.ts +5 -0
  177. package/dist/statements/NotNull.d.ts +4 -0
  178. package/dist/statements/Operator.d.ts +107 -0
  179. package/dist/statements/OrderBy.d.ts +10 -0
  180. package/dist/statements/PrimaryKey.d.ts +7 -0
  181. package/dist/statements/ReturnStatement.d.ts +9 -0
  182. package/dist/statements/ReturnStatementTextRenderer.d.ts +4 -0
  183. package/dist/statements/SelectInsertedIdStatement.d.ts +8 -0
  184. package/dist/statements/SelectInsertedIdStatementTextRenderer.d.ts +4 -0
  185. package/dist/statements/SelectStatement.d.ts +20 -0
  186. package/dist/statements/SelectStatementOptions.d.ts +15 -0
  187. package/dist/statements/SelectStatementTextRenderer.d.ts +19 -0
  188. package/dist/statements/StatementEvaluator.d.ts +4 -0
  189. package/dist/statements/StatementParser.d.ts +4 -0
  190. package/dist/statements/StatementRenderer.d.ts +42 -0
  191. package/dist/statements/StatementTextRenderer.d.ts +14 -0
  192. package/dist/statements/Subquery.d.ts +6 -0
  193. package/dist/statements/UniqueConstraint.d.ts +7 -0
  194. package/dist/statements/UpdateStatement.d.ts +14 -0
  195. package/dist/statements/UpdateStatementTextRenderer.d.ts +14 -0
  196. package/dist/statements/Where.d.ts +16 -0
  197. package/dist/statements/WhereText.d.ts +8 -0
  198. package/dist/statements/index.d.ts +75 -0
  199. package/dist/stubs/StubCommand.d.ts +15 -0
  200. package/dist/stubs/StubConnection.d.ts +13 -0
  201. package/dist/stubs/StubDatasource.d.ts +20 -0
  202. package/dist/stubs/StubReader.d.ts +11 -0
  203. package/dist/stubs/StubRepository.d.ts +22 -0
  204. package/dist/stubs/StubTransaction.d.ts +10 -0
  205. package/dist/stubs/createStubDatasource.d.ts +2 -0
  206. package/dist/stubs/index.d.ts +7 -0
  207. package/dist/stubs/notImplemented.d.ts +1 -0
  208. package/package.json +24 -4
  209. package/src/ArrayReader.test.ts +23 -0
  210. package/src/ArrayReader.ts +32 -0
  211. package/src/BatchCommandIBulkWriteStrategy.ts +228 -0
  212. package/src/BuiltRepository.ts +17 -0
  213. package/src/BulkCRUDRepository.test.ts +183 -0
  214. package/src/BulkCRUDRepository.ts +84 -0
  215. package/src/BulkCommand.ts +6 -0
  216. package/src/BulkWriteEnrichment.ts +19 -0
  217. package/src/BulkWriteStrategy.test.ts +293 -0
  218. package/src/CRUDRepository.test.ts +420 -0
  219. package/src/CRUDRepository.ts +264 -0
  220. package/src/CRUDRepositoryBuilder.ts +53 -0
  221. package/src/CRUDRepositoryOptions.test.ts +76 -0
  222. package/src/CRUDRepositoryOptions.ts +8 -0
  223. package/src/CRUDRepositoryStatements.ts +43 -0
  224. package/src/CascadeDeleteEnrichmentStrategy.ts +51 -0
  225. package/src/CascadeDeleteUpdateEnrichmentStrategy.ts +28 -0
  226. package/src/Command.test.ts +105 -0
  227. package/src/CommandMiddlewareHost.test.ts +98 -0
  228. package/src/CommandMiddlewareHost.ts +113 -0
  229. package/src/Connection.test.ts +34 -0
  230. package/src/ConsoleCommandMiddleware.test.ts +149 -0
  231. package/src/ConsoleCommandMiddleware.ts +64 -0
  232. package/src/CreateEnrichmentStrategy.ts +82 -0
  233. package/src/Datasource.test.ts +63 -0
  234. package/src/Datasource.ts +152 -0
  235. package/src/DatasourceError.test.ts +10 -0
  236. package/src/DatasourceError.ts +6 -0
  237. package/src/DatasourceFactory.test.ts +159 -0
  238. package/src/DatasourceFactory.ts +86 -0
  239. package/src/DatasourceOptions.ts +1 -0
  240. package/src/DatasourceUrl.ts +37 -0
  241. package/src/DatasourceUrlParser.test.ts +173 -0
  242. package/src/DatasourceUrlParser.ts +188 -0
  243. package/src/DefaultCreateEnrichmentStrategy.ts +21 -0
  244. package/src/DefaultReadonlyEnrichmentStrategy.ts +164 -0
  245. package/src/DefaultUpdateEnrichmentStrategy.ts +40 -0
  246. package/src/DefaultWriteEnrichmentStrategy.ts +151 -0
  247. package/src/DeleteEnrichmentStrategy.ts +56 -0
  248. package/src/DriverLoader.ts +97 -0
  249. package/src/Enrichment.ts +15 -0
  250. package/src/EnrichmentPropertyType.ts +9 -0
  251. package/src/ExpectConsoleMiddleware.test.ts +79 -0
  252. package/src/ExpectConsoleMiddleware.ts +47 -0
  253. package/src/FirstResultReader.test.ts +43 -0
  254. package/src/FirstResultReader.ts +49 -0
  255. package/src/HashsetOptimizedReadonlyEnrichmentStrategy.ts +80 -0
  256. package/src/IBulkWriteStrategy.ts +13 -0
  257. package/src/ICRUDRepository.ts +13 -0
  258. package/src/ICRUDRepositoryFactory.ts +8 -0
  259. package/src/ICommand.ts +45 -0
  260. package/src/ICommandMiddleware.ts +20 -0
  261. package/src/IConnection.ts +13 -0
  262. package/src/IDatasource.ts +27 -0
  263. package/src/IDatasourceFactory.ts +6 -0
  264. package/src/IDriver.ts +24 -0
  265. package/src/IEnriched.ts +11 -0
  266. package/src/IReader.ts +8 -0
  267. package/src/IReadonlyEnrichmentStrategy.ts +19 -0
  268. package/src/IReadonlyRepository.ts +21 -0
  269. package/src/IRepository.ts +5 -0
  270. package/src/IRepositoryFactory.ts +8 -0
  271. package/src/IRepositoryTree.ts +5 -0
  272. package/src/IRepositoryTreeNode.ts +8 -0
  273. package/src/ITransaction.ts +9 -0
  274. package/src/IUnitOfWork.ts +5 -0
  275. package/src/IWriteEnrichmentStrategy.ts +8 -0
  276. package/src/Information.ts +5 -0
  277. package/src/IsolationLevel.test.ts +13 -0
  278. package/src/IsolationLevel.ts +8 -0
  279. package/src/LazyWriteEnrichmentStrategy.ts +5 -0
  280. package/src/NestedToObjectEnrichmentStrategy.ts +33 -0
  281. package/src/Parameter.ts +8 -0
  282. package/src/ParameterDirection.ts +9 -0
  283. package/src/ProviderCatalog.test.ts +110 -0
  284. package/src/ProviderCatalog.ts +21 -0
  285. package/src/ProviderNotImplementedError.test.ts +11 -0
  286. package/src/ProviderNotImplementedError.ts +9 -0
  287. package/src/ProviderNotInstalledError.test.ts +11 -0
  288. package/src/ProviderNotInstalledError.ts +9 -0
  289. package/src/ReadonlyRepository.test.ts +406 -0
  290. package/src/ReadonlyRepository.ts +276 -0
  291. package/src/ReadonlyRepositoryBuilder.ts +53 -0
  292. package/src/ReadonlyRepositoryMappingOptions.ts +15 -0
  293. package/src/ReadonlyRepositoryStatements.ts +13 -0
  294. package/src/RepositoryAccess.ts +14 -0
  295. package/src/RepositoryFactory.test.ts +94 -0
  296. package/src/RepositoryFactory.ts +115 -0
  297. package/src/RepositoryNotRegisteredError.ts +9 -0
  298. package/src/RepositoryTree.ts +6 -0
  299. package/src/RepositoryTreeNode.ts +11 -0
  300. package/src/Response.ts +15 -0
  301. package/src/Row.ts +3 -0
  302. package/src/SingleCommandIBulkWriteStrategy.ts +35 -0
  303. package/src/StatementMappers.test.ts +221 -0
  304. package/src/StatementMappers.ts +110 -0
  305. package/src/StoredEnrichment.ts +25 -0
  306. package/src/StoredProcedureBulkWriteStrategy.ts +164 -0
  307. package/src/StreamingReader.test.ts +126 -0
  308. package/src/StreamingReader.ts +64 -0
  309. package/src/Transaction.test.ts +37 -0
  310. package/src/UnitOfWorkTransaction.test.ts +43 -0
  311. package/src/UnitOfWorkTransaction.ts +50 -0
  312. package/src/UpdateEnrichmentStrategy.ts +97 -0
  313. package/src/UserViewCRUDRepository.test.ts +323 -0
  314. package/src/WriteMode.ts +1 -0
  315. package/src/builders/Field.ts +6 -0
  316. package/src/builders/Scalar.ts +1 -0
  317. package/src/builders/builders.test.ts +404 -0
  318. package/src/builders/index.ts +2 -0
  319. package/src/collectAsync.ts +7 -0
  320. package/src/converters/Cell.ts +10 -0
  321. package/src/converters/ChangeCasingConverter.test.ts +34 -0
  322. package/src/converters/ChangeCasingConverter.ts +59 -0
  323. package/src/converters/Constructable.ts +1 -0
  324. package/src/converters/MetaDataRowTypeConverter.ts +80 -0
  325. package/src/converters/PluralizerConverter.test.ts +43 -0
  326. package/src/converters/PluralizerConverter.ts +67 -0
  327. package/src/converters/RegexConverter.test.ts +11 -0
  328. package/src/converters/RegexConverter.ts +14 -0
  329. package/src/converters/ReplaceConverter.test.ts +9 -0
  330. package/src/converters/ReplaceConverter.ts +6 -0
  331. package/src/converters/RowTypeConverter.test.ts +79 -0
  332. package/src/converters/RowTypeConverter.ts +33 -0
  333. package/src/converters/ToLowerCaseConverter.test.ts +9 -0
  334. package/src/converters/ToLowerCaseConverter.ts +4 -0
  335. package/src/converters/ToUpperCaseConverter.test.ts +9 -0
  336. package/src/converters/ToUpperCaseConverter.ts +4 -0
  337. package/src/converters/TypeConverter.ts +6 -0
  338. package/src/createCRUDRepositoryOptions.ts +21 -0
  339. package/src/createReadonlyRepositoryMappingOptions.ts +26 -0
  340. package/src/dotEnv.test.ts +21 -0
  341. package/src/dotEnv.ts +16 -0
  342. package/src/edgeCases.test.ts +485 -0
  343. package/src/index.ts +222 -0
  344. package/src/mappers/ChangeCasingMapper.test.ts +32 -0
  345. package/src/mappers/ChangeCasingMapper.ts +15 -0
  346. package/src/mappers/DictionaryMapper.test.ts +69 -0
  347. package/src/mappers/DictionaryMapper.ts +16 -0
  348. package/src/mappers/FlatToNestedMapper.test.ts +269 -0
  349. package/src/mappers/FlatToNestedMapper.ts +127 -0
  350. package/src/mappers/IFlatToNestedMapper.ts +7 -0
  351. package/src/mappers/IMapper.ts +4 -0
  352. package/src/mappers/IdentityMapper.test.ts +12 -0
  353. package/src/mappers/IdentityMapper.ts +6 -0
  354. package/src/mappers/PluralizerMapper.test.ts +40 -0
  355. package/src/mappers/PluralizerMapper.ts +9 -0
  356. package/src/mappers/RowTypeMapper.test.ts +12 -0
  357. package/src/mappers/RowTypeMapper.ts +13 -0
  358. package/src/mappers/TransformConverterMapper.test.ts +181 -0
  359. package/src/mappers/TransformConverterMapper.ts +11 -0
  360. package/src/mappers/TransformMapper.ts +8 -0
  361. package/src/mappers/TypeMap.ts +10 -0
  362. package/src/mappers/TypeMapGroup.ts +6 -0
  363. package/src/mappers/transformMapper.test.ts +66 -0
  364. package/src/mocks/MockCommand.test.ts +75 -0
  365. package/src/mocks/MockConnection.test.ts +34 -0
  366. package/src/mocks/MockDatasource.test.ts +40 -0
  367. package/src/mocks/MockReader.test.ts +17 -0
  368. package/src/mocks/MockRepository.test.ts +32 -0
  369. package/src/mocks/MockSelectStatement.test.ts +11 -0
  370. package/src/mocks/MockTransaction.test.ts +17 -0
  371. package/src/mocks/MockWhere.test.ts +11 -0
  372. package/src/mocks/index.ts +9 -0
  373. package/src/mocks/mock-command.ts +66 -0
  374. package/src/mocks/mock-connection.ts +57 -0
  375. package/src/mocks/mock-datasource.ts +65 -0
  376. package/src/mocks/mock-driver.ts +27 -0
  377. package/src/mocks/mock-reader.ts +38 -0
  378. package/src/mocks/mock-repository.ts +91 -0
  379. package/src/mocks/mock-select-statement.ts +17 -0
  380. package/src/mocks/mock-transaction.ts +31 -0
  381. package/src/mocks/mock-where.ts +13 -0
  382. package/src/parametersToRecord.test.ts +19 -0
  383. package/src/parametersToRecord.ts +11 -0
  384. package/src/public-surface.test.ts +23 -0
  385. package/src/readWithWhereClauseAndCustomFlatToNestedObjectMappingOptions.test.ts +126 -0
  386. package/src/readerToAsyncIterable.test.ts +39 -0
  387. package/src/readerToAsyncIterable.ts +11 -0
  388. package/src/repository.test.ts +410 -0
  389. package/src/repository.type.test.ts +29 -0
  390. package/src/splitStatements.ts +99 -0
  391. package/src/statementParameters.ts +22 -0
  392. package/src/statementUsesParameter.ts +4 -0
  393. package/src/statements/Aggregate.ts +9 -0
  394. package/src/statements/ArrayExpression.ts +5 -0
  395. package/src/statements/BulkDeleteStatement.ts +18 -0
  396. package/src/statements/BulkDeleteStatementTextRenderer.ts +16 -0
  397. package/src/statements/BulkInsertStatement.ts +37 -0
  398. package/src/statements/BulkInsertStatementTextRenderer.ts +10 -0
  399. package/src/statements/BulkUpdateStatement.ts +24 -0
  400. package/src/statements/BulkUpdateStatementTextRenderer.ts +29 -0
  401. package/src/statements/CheckConstraint.ts +9 -0
  402. package/src/statements/Cmp.ts +12 -0
  403. package/src/statements/Column.ts +10 -0
  404. package/src/statements/ColumnDefault.ts +6 -0
  405. package/src/statements/Condition.ts +3 -0
  406. package/src/statements/ConditionRenderer.ts +17 -0
  407. package/src/statements/CreateIndexStatement.ts +18 -0
  408. package/src/statements/CreateIndexStatementTextRenderer.ts +11 -0
  409. package/src/statements/CreateTableStatement.ts +18 -0
  410. package/src/statements/CreateTableStatementTextRenderer.ts +92 -0
  411. package/src/statements/DefaultStatementTextRenderer.ts +9 -0
  412. package/src/statements/DeleteStatement.ts +15 -0
  413. package/src/statements/DeleteStatementTextRenderer.ts +12 -0
  414. package/src/statements/ExecuteStoredProcedureStatement.ts +15 -0
  415. package/src/statements/ExecuteStoredProcedureStatementTextRenderer.ts +15 -0
  416. package/src/statements/ExpressionEvaluator.ts +166 -0
  417. package/src/statements/ExpressionRenderer.ts +161 -0
  418. package/src/statements/ForeignKey.ts +23 -0
  419. package/src/statements/IBulkDeleteStatement.ts +3 -0
  420. package/src/statements/IBulkInsertStatement.ts +3 -0
  421. package/src/statements/IBulkUpdateStatement.ts +3 -0
  422. package/src/statements/ICondition.ts +5 -0
  423. package/src/statements/IConditionVisitor.ts +7 -0
  424. package/src/statements/ICreateIndexStatement.ts +3 -0
  425. package/src/statements/ICreateTableStatement.ts +3 -0
  426. package/src/statements/IDeleteStatement.ts +6 -0
  427. package/src/statements/IExecuteStoredProcedureStatement.ts +3 -0
  428. package/src/statements/IExpression.ts +1 -0
  429. package/src/statements/IInsertStatement.ts +3 -0
  430. package/src/statements/IReturnStatement.ts +3 -0
  431. package/src/statements/ISelectStatement.ts +6 -0
  432. package/src/statements/IStatement.ts +5 -0
  433. package/src/statements/IStatementVisitor.ts +27 -0
  434. package/src/statements/ITableConstraint.ts +6 -0
  435. package/src/statements/IUpdateStatement.ts +6 -0
  436. package/src/statements/IWhere.ts +7 -0
  437. package/src/statements/Identifier.ts +5 -0
  438. package/src/statements/InsertStatement.ts +15 -0
  439. package/src/statements/InsertStatementTextRenderer.ts +7 -0
  440. package/src/statements/Join.ts +26 -0
  441. package/src/statements/Literal.ts +6 -0
  442. package/src/statements/Native.ts +5 -0
  443. package/src/statements/NotNull.ts +3 -0
  444. package/src/statements/Operator.ts +234 -0
  445. package/src/statements/OrderBy.ts +19 -0
  446. package/src/statements/PrimaryKey.ts +9 -0
  447. package/src/statements/ReturnStatement.ts +15 -0
  448. package/src/statements/ReturnStatementTextRenderer.ts +15 -0
  449. package/src/statements/SelectInsertedIdStatement.test.ts +11 -0
  450. package/src/statements/SelectInsertedIdStatement.ts +11 -0
  451. package/src/statements/SelectInsertedIdStatementTextRenderer.ts +7 -0
  452. package/src/statements/SelectStatement.ts +34 -0
  453. package/src/statements/SelectStatementOptions.ts +16 -0
  454. package/src/statements/SelectStatementTextRenderer.ts +71 -0
  455. package/src/statements/StatementCompile.test.ts +231 -0
  456. package/src/statements/StatementEvaluator.ts +5 -0
  457. package/src/statements/StatementParser.test.ts +304 -0
  458. package/src/statements/StatementParser.ts +461 -0
  459. package/src/statements/StatementRenderer.ts +120 -0
  460. package/src/statements/StatementTextRenderer.ts +60 -0
  461. package/src/statements/Subquery.ts +6 -0
  462. package/src/statements/UniqueConstraint.ts +9 -0
  463. package/src/statements/UpdateStatement.ts +34 -0
  464. package/src/statements/UpdateStatementTextRenderer.ts +63 -0
  465. package/src/statements/Where.ts +250 -0
  466. package/src/statements/WhereText.ts +10 -0
  467. package/src/statements/index.ts +75 -0
  468. package/src/stubs/StubCommand.ts +30 -0
  469. package/src/stubs/StubConnection.ts +21 -0
  470. package/src/stubs/StubDatasource.test.ts +99 -0
  471. package/src/stubs/StubDatasource.ts +60 -0
  472. package/src/stubs/StubReader.ts +25 -0
  473. package/src/stubs/StubRepository.ts +42 -0
  474. package/src/stubs/StubTransaction.ts +17 -0
  475. package/src/stubs/createStubDatasource.ts +4 -0
  476. package/src/stubs/index.ts +7 -0
  477. package/src/stubs/notImplemented.ts +5 -0
  478. package/src/tests/contact/Address.ts +14 -0
  479. package/src/tests/contact/AddressType.ts +6 -0
  480. package/src/tests/contact/Base.ts +7 -0
  481. package/src/tests/contact/Contact.ts +12 -0
  482. package/src/tests/contact/ContactBase.ts +8 -0
  483. package/src/tests/contact/ContactChangeLog.ts +8 -0
  484. package/src/tests/contact/ContactGroup.ts +6 -0
  485. package/src/tests/contact/ContactGroupBase.ts +6 -0
  486. package/src/tests/contact/ContactGroupMember.ts +6 -0
  487. package/src/tests/contact/ContactSource.ts +6 -0
  488. package/src/tests/contact/ContactType.ts +6 -0
  489. package/src/tests/contact/ContactsService.test.ts +118 -0
  490. package/src/tests/contact/ContactsService.ts +32 -0
  491. package/src/tests/contact/ImportContactRequest.ts +4 -0
  492. package/src/tests/contact/ImportContactResult.ts +5 -0
  493. package/src/tests/contact/LegacyContact.ts +7 -0
  494. package/src/tests/contact/LegacyMigrationResult.ts +5 -0
  495. package/src/tests/contact/Phone.ts +9 -0
  496. package/src/tests/contact/PhoneType.ts +6 -0
  497. package/src/tests/contact/asContactsView.ts +63 -0
  498. package/src/tests/contact/contactColumns.ts +40 -0
  499. package/src/tests/contact/contactLookupIds.ts +32 -0
  500. package/src/tests/contact/contactLookups.ts +6 -0
  501. package/src/tests/contact/contactsParity.ts +63 -0
  502. package/src/tests/contact/contactsServiceOf.ts +38 -0
  503. package/src/tests/contact/contactsView.ts +31 -0
  504. package/src/tests/contact/expectContactsView.ts +23 -0
  505. package/src/tests/contact/extraContact.ts +61 -0
  506. package/src/tests/contact/logMapped.ts +5 -0
  507. package/src/tests/contact/seedContacts.ts +31 -0
  508. package/README.md +0 -3
@@ -0,0 +1,18 @@
1
+ import type { Column } from "./Column.js";
2
+ import type { CreateTableStatement } from "./CreateTableStatement.js";
3
+ import type { ITableConstraint } from "./ITableConstraint.js";
4
+ export declare class CreateTableStatementTextRenderer {
5
+ render(statement: CreateTableStatement): string;
6
+ protected quote(name: string): string;
7
+ protected suffix(): string;
8
+ protected typeName(column: Column): string;
9
+ protected columnDefault(column: Column): string;
10
+ protected identity(_column: Column): string;
11
+ protected column(column: Column): string;
12
+ protected constraint(constraint: ITableConstraint): string;
13
+ private parts;
14
+ private notNullSql;
15
+ private foreignKey;
16
+ private quoted;
17
+ private actionSql;
18
+ }
@@ -0,0 +1,5 @@
1
+ import { StatementTextRenderer } from "./StatementTextRenderer.js";
2
+ export declare class DefaultStatementTextRenderer extends StatementTextRenderer {
3
+ static readonly instance: DefaultStatementTextRenderer;
4
+ constructor();
5
+ }
@@ -0,0 +1,9 @@
1
+ import type { IDeleteStatement } from "./IDeleteStatement.js";
2
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
3
+ import type { IWhere } from "./IWhere.js";
4
+ export declare class DeleteStatement implements IDeleteStatement {
5
+ readonly table: string;
6
+ readonly where?: IWhere;
7
+ constructor(table: string, where?: IWhere);
8
+ accept: (visitor: IStatementVisitor) => string;
9
+ }
@@ -0,0 +1,7 @@
1
+ import type { DeleteStatement } from "./DeleteStatement.js";
2
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
3
+ export declare class DeleteStatementTextRenderer {
4
+ private readonly text;
5
+ constructor(text: StatementTextRenderer);
6
+ render(statement: DeleteStatement): string;
7
+ }
@@ -0,0 +1,9 @@
1
+ import type { Parameter } from "../Parameter.js";
2
+ import type { IExecuteStoredProcedureStatement } from "./IExecuteStoredProcedureStatement.js";
3
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
4
+ export declare class ExecuteStoredProcedureStatement implements IExecuteStoredProcedureStatement {
5
+ readonly name: string;
6
+ readonly parameters: Parameter[];
7
+ constructor(name: string, parameters: Parameter[]);
8
+ accept: (visitor: IStatementVisitor) => string;
9
+ }
@@ -0,0 +1,4 @@
1
+ import type { ExecuteStoredProcedureStatement } from "./ExecuteStoredProcedureStatement.js";
2
+ export declare class ExecuteStoredProcedureStatementTextRenderer {
3
+ render(statement: ExecuteStoredProcedureStatement): string;
4
+ }
@@ -0,0 +1,5 @@
1
+ import type { Scalar } from "../builders/Scalar.js";
2
+ import type { IExpression } from "./IExpression.js";
3
+ export declare class ExpressionEvaluator {
4
+ evaluate: (expression: IExpression, parameters?: Record<string, Scalar>) => Scalar;
5
+ }
@@ -0,0 +1,8 @@
1
+ import type { IExpression } from "./IExpression.js";
2
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
3
+ export declare class ExpressionRenderer {
4
+ private readonly text;
5
+ constructor(text: StatementTextRenderer);
6
+ render: (expression: IExpression) => string;
7
+ private wrap;
8
+ }
@@ -0,0 +1,19 @@
1
+ import type { ITableConstraint } from "./ITableConstraint.js";
2
+ export declare const ReferentialAction: {
3
+ readonly Cascade: "cascade";
4
+ readonly SetNull: "setNull";
5
+ readonly SetDefault: "setDefault";
6
+ readonly Restrict: "restrict";
7
+ readonly NoAction: "noAction";
8
+ };
9
+ export type ReferentialAction = (typeof ReferentialAction)[keyof typeof ReferentialAction];
10
+ export declare class ForeignKey implements ITableConstraint {
11
+ readonly name: string;
12
+ readonly columns: string[];
13
+ readonly referencesTable: string;
14
+ readonly referencesColumns: string[];
15
+ readonly onDelete?: ReferentialAction | undefined;
16
+ readonly onUpdate?: ReferentialAction | undefined;
17
+ readonly kind: "foreignKey";
18
+ constructor(name: string, columns: string[], referencesTable: string, referencesColumns: string[], onDelete?: ReferentialAction | undefined, onUpdate?: ReferentialAction | undefined);
19
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IBulkDeleteStatement extends IStatement {
3
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IBulkInsertStatement extends IStatement {
3
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IBulkUpdateStatement extends IStatement {
3
+ }
@@ -0,0 +1,4 @@
1
+ import type { IConditionVisitor } from "./IConditionVisitor.js";
2
+ export interface ICondition {
3
+ accept(visitor: IConditionVisitor): string;
4
+ }
@@ -0,0 +1,6 @@
1
+ import type { Where } from "./Where.js";
2
+ import type { WhereText } from "./WhereText.js";
3
+ export interface IConditionVisitor {
4
+ visit(where: Where): string;
5
+ visit(where: WhereText): string;
6
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface ICreateIndexStatement extends IStatement {
3
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface ICreateTableStatement extends IStatement {
3
+ }
@@ -0,0 +1,5 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ import type { IWhere } from "./IWhere.js";
3
+ export interface IDeleteStatement extends IStatement {
4
+ readonly where?: IWhere;
5
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IExecuteStoredProcedureStatement extends IStatement {
3
+ }
@@ -0,0 +1,2 @@
1
+ export interface IExpression {
2
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IInsertStatement extends IStatement {
3
+ }
@@ -0,0 +1,3 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export interface IReturnStatement extends IStatement {
3
+ }
@@ -0,0 +1,5 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ import type { IWhere } from "./IWhere.js";
3
+ export interface ISelectStatement extends IStatement {
4
+ readonly where?: IWhere;
5
+ }
@@ -0,0 +1,4 @@
1
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
2
+ export interface IStatement {
3
+ accept(visitor: IStatementVisitor): string;
4
+ }
@@ -0,0 +1,26 @@
1
+ import type { BulkDeleteStatement } from "./BulkDeleteStatement.js";
2
+ import type { BulkInsertStatement } from "./BulkInsertStatement.js";
3
+ import type { BulkUpdateStatement } from "./BulkUpdateStatement.js";
4
+ import type { CreateIndexStatement } from "./CreateIndexStatement.js";
5
+ import type { CreateTableStatement } from "./CreateTableStatement.js";
6
+ import type { DeleteStatement } from "./DeleteStatement.js";
7
+ import type { ExecuteStoredProcedureStatement } from "./ExecuteStoredProcedureStatement.js";
8
+ import type { InsertStatement } from "./InsertStatement.js";
9
+ import type { ReturnStatement } from "./ReturnStatement.js";
10
+ import type { SelectInsertedIdStatement } from "./SelectInsertedIdStatement.js";
11
+ import type { SelectStatement } from "./SelectStatement.js";
12
+ import type { UpdateStatement } from "./UpdateStatement.js";
13
+ export interface IStatementVisitor {
14
+ visit(statement: SelectStatement): string;
15
+ visit(statement: InsertStatement): string;
16
+ visit(statement: UpdateStatement): string;
17
+ visit(statement: DeleteStatement): string;
18
+ visit(statement: CreateTableStatement): string;
19
+ visit(statement: CreateIndexStatement): string;
20
+ visit(statement: ExecuteStoredProcedureStatement): string;
21
+ visit(statement: ReturnStatement): string;
22
+ visit(statement: SelectInsertedIdStatement): string;
23
+ visit(statement: BulkInsertStatement): string;
24
+ visit(statement: BulkUpdateStatement): string;
25
+ visit(statement: BulkDeleteStatement): string;
26
+ }
@@ -0,0 +1,5 @@
1
+ export type TableConstraintKind = "primaryKey" | "foreignKey" | "unique" | "check";
2
+ export interface ITableConstraint {
3
+ readonly kind: TableConstraintKind;
4
+ readonly name: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ import type { IWhere } from "./IWhere.js";
3
+ export interface IUpdateStatement extends IStatement {
4
+ readonly where?: IWhere;
5
+ }
@@ -0,0 +1,6 @@
1
+ import type { Parameter } from "../Parameter.js";
2
+ import type { ICondition } from "./ICondition.js";
3
+ import type { IExpression } from "./IExpression.js";
4
+ export interface IWhere extends IExpression, ICondition {
5
+ readonly parameters?: Parameter[];
6
+ }
@@ -0,0 +1,5 @@
1
+ import type { IExpression } from "./IExpression.js";
2
+ export declare class Identifier implements IExpression {
3
+ readonly name: string;
4
+ constructor(name: string);
5
+ }
@@ -0,0 +1,9 @@
1
+ import type { Field } from "../builders/Field.js";
2
+ import type { IInsertStatement } from "./IInsertStatement.js";
3
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
4
+ export declare class InsertStatement implements IInsertStatement {
5
+ readonly table: string;
6
+ readonly fields: Field[];
7
+ constructor(table: string, fields: Field[]);
8
+ accept: (visitor: IStatementVisitor) => string;
9
+ }
@@ -0,0 +1,4 @@
1
+ import type { InsertStatement } from "./InsertStatement.js";
2
+ export declare class InsertStatementTextRenderer {
3
+ render(statement: InsertStatement): string;
4
+ }
@@ -0,0 +1,14 @@
1
+ import type { IExpression } from "./IExpression.js";
2
+ export type JoinKind = "inner" | "left" | "right" | "full" | "cross";
3
+ export type Join = {
4
+ kind: JoinKind;
5
+ table: string;
6
+ on?: IExpression;
7
+ };
8
+ export declare const Join: {
9
+ inner: (table: string, left: string, right: string) => Join;
10
+ left: (table: string, left: string, right: string) => Join;
11
+ right: (table: string, left: string, right: string) => Join;
12
+ full: (table: string, left: string, right: string) => Join;
13
+ cross: (table: string) => Join;
14
+ };
@@ -0,0 +1,6 @@
1
+ import type { Cell } from "../converters/Cell.js";
2
+ import type { IExpression } from "./IExpression.js";
3
+ export declare class Literal implements IExpression {
4
+ readonly value: Cell;
5
+ constructor(value: Cell);
6
+ }
@@ -0,0 +1,5 @@
1
+ export declare class Native {
2
+ readonly text: string;
3
+ constructor(text: string);
4
+ }
5
+ export declare const n: (text: string) => Native;
@@ -0,0 +1,4 @@
1
+ export declare class NotNull {
2
+ readonly name?: string | undefined;
3
+ constructor(name?: string | undefined);
4
+ }
@@ -0,0 +1,107 @@
1
+ import type { Cell } from "../converters/Cell.js";
2
+ import { Condition } from "./Condition.js";
3
+ import type { IExpression } from "./IExpression.js";
4
+ export declare abstract class Operator extends Condition {
5
+ }
6
+ export declare namespace Operator {
7
+ class Equals extends Operator {
8
+ readonly left: IExpression;
9
+ readonly right: IExpression;
10
+ constructor(field: string, value: Cell);
11
+ constructor(left: IExpression, right: IExpression);
12
+ }
13
+ class NotEquals extends Operator {
14
+ readonly left: IExpression;
15
+ readonly right: IExpression;
16
+ constructor(field: string, value: Cell);
17
+ constructor(left: IExpression, right: IExpression);
18
+ }
19
+ class GreaterThan extends Operator {
20
+ readonly left: IExpression;
21
+ readonly right: IExpression;
22
+ constructor(field: string, value: Cell);
23
+ constructor(left: IExpression, right: IExpression);
24
+ }
25
+ class LessThan extends Operator {
26
+ readonly left: IExpression;
27
+ readonly right: IExpression;
28
+ constructor(field: string, value: Cell);
29
+ constructor(left: IExpression, right: IExpression);
30
+ }
31
+ class GreaterThanOrEqual extends Operator {
32
+ readonly left: IExpression;
33
+ readonly right: IExpression;
34
+ constructor(field: string, value: Cell);
35
+ constructor(left: IExpression, right: IExpression);
36
+ }
37
+ class LessThanOrEqual extends Operator {
38
+ readonly left: IExpression;
39
+ readonly right: IExpression;
40
+ constructor(field: string, value: Cell);
41
+ constructor(left: IExpression, right: IExpression);
42
+ }
43
+ class And extends Operator {
44
+ readonly left: IExpression;
45
+ readonly right: IExpression;
46
+ constructor(left: IExpression, right: IExpression);
47
+ }
48
+ class Or extends Operator {
49
+ readonly left: IExpression;
50
+ readonly right: IExpression;
51
+ constructor(left: IExpression, right: IExpression);
52
+ }
53
+ class In extends Operator {
54
+ readonly left: IExpression;
55
+ readonly right: IExpression;
56
+ constructor(field: string, values: Cell[]);
57
+ constructor(left: IExpression, right: IExpression);
58
+ }
59
+ class Not extends Operator {
60
+ readonly argument: IExpression;
61
+ constructor(argument: IExpression);
62
+ }
63
+ class IsNull extends Operator {
64
+ readonly argument: IExpression;
65
+ constructor(argument: IExpression);
66
+ }
67
+ class IsNotNull extends Operator {
68
+ readonly argument: IExpression;
69
+ constructor(argument: IExpression);
70
+ }
71
+ class Like extends Operator {
72
+ readonly left: IExpression;
73
+ readonly right: IExpression;
74
+ constructor(field: string, value: Cell);
75
+ constructor(left: IExpression, right: IExpression);
76
+ }
77
+ class NotLike extends Operator {
78
+ readonly left: IExpression;
79
+ readonly right: IExpression;
80
+ constructor(field: string, value: Cell);
81
+ constructor(left: IExpression, right: IExpression);
82
+ }
83
+ class Between extends Operator {
84
+ readonly value: IExpression;
85
+ readonly low: IExpression;
86
+ readonly high: IExpression;
87
+ constructor(field: string, low: Cell, high: Cell);
88
+ constructor(value: IExpression, low: IExpression, high: IExpression);
89
+ }
90
+ class NotBetween extends Operator {
91
+ readonly value: IExpression;
92
+ readonly low: IExpression;
93
+ readonly high: IExpression;
94
+ constructor(field: string, low: Cell, high: Cell);
95
+ constructor(value: IExpression, low: IExpression, high: IExpression);
96
+ }
97
+ class NotIn extends Operator {
98
+ readonly left: IExpression;
99
+ readonly right: IExpression;
100
+ constructor(field: string, values: Cell[]);
101
+ constructor(left: IExpression, right: IExpression);
102
+ }
103
+ class Exists extends Operator {
104
+ readonly argument: IExpression;
105
+ constructor(argument: IExpression);
106
+ }
107
+ }
@@ -0,0 +1,10 @@
1
+ export type SortDirection = "asc" | "desc";
2
+ export type OrderBy = {
3
+ column: string;
4
+ direction: SortDirection;
5
+ };
6
+ export declare const OrderBy: {
7
+ asc: (column: string) => OrderBy;
8
+ desc: (column: string) => OrderBy;
9
+ };
10
+ export declare const orderText: (order: OrderBy) => string;
@@ -0,0 +1,7 @@
1
+ import type { ITableConstraint } from "./ITableConstraint.js";
2
+ export declare class PrimaryKey implements ITableConstraint {
3
+ readonly name: string;
4
+ readonly columns: string[];
5
+ readonly kind: "primaryKey";
6
+ constructor(name: string, columns: string[]);
7
+ }
@@ -0,0 +1,9 @@
1
+ import type { Parameter } from "../Parameter.js";
2
+ import type { IReturnStatement } from "./IReturnStatement.js";
3
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
4
+ export declare class ReturnStatement implements IReturnStatement {
5
+ readonly name: string;
6
+ readonly parameters: Parameter[];
7
+ constructor(name: string, parameters: Parameter[]);
8
+ accept: (visitor: IStatementVisitor) => string;
9
+ }
@@ -0,0 +1,4 @@
1
+ import type { ReturnStatement } from "./ReturnStatement.js";
2
+ export declare class ReturnStatementTextRenderer {
3
+ render(statement: ReturnStatement): string;
4
+ }
@@ -0,0 +1,8 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
3
+ export declare class SelectInsertedIdStatement implements IStatement {
4
+ readonly table: string;
5
+ readonly column: string;
6
+ constructor(table: string, column: string);
7
+ accept: (visitor: IStatementVisitor) => string;
8
+ }
@@ -0,0 +1,4 @@
1
+ import type { SelectInsertedIdStatement } from "./SelectInsertedIdStatement.js";
2
+ export declare class SelectInsertedIdStatementTextRenderer {
3
+ render(_statement: SelectInsertedIdStatement): string;
4
+ }
@@ -0,0 +1,20 @@
1
+ import type { ISelectStatement } from "./ISelectStatement.js";
2
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
3
+ import type { IWhere } from "./IWhere.js";
4
+ import type { Join } from "./Join.js";
5
+ import type { OrderBy } from "./OrderBy.js";
6
+ import type { SelectStatementOptions } from "./SelectStatementOptions.js";
7
+ export declare class SelectStatement implements ISelectStatement {
8
+ readonly where?: IWhere;
9
+ readonly distinct: boolean;
10
+ readonly table?: string;
11
+ readonly fields: string[];
12
+ readonly joins: Join[];
13
+ readonly groupBy: string[];
14
+ readonly having?: IWhere;
15
+ readonly orderBy: OrderBy[];
16
+ readonly limit?: number;
17
+ readonly offset?: number;
18
+ constructor(options: SelectStatementOptions);
19
+ accept: (visitor: IStatementVisitor) => string;
20
+ }
@@ -0,0 +1,15 @@
1
+ import type { Join } from "./Join.js";
2
+ import type { IWhere } from "./IWhere.js";
3
+ import type { OrderBy } from "./OrderBy.js";
4
+ export type SelectStatementOptions = {
5
+ table?: string;
6
+ fields?: string[];
7
+ distinct?: boolean;
8
+ where?: IWhere;
9
+ joins?: Join[];
10
+ groupBy?: string[];
11
+ having?: IWhere;
12
+ orderBy?: OrderBy[];
13
+ limit?: number;
14
+ offset?: number;
15
+ };
@@ -0,0 +1,19 @@
1
+ import type { IWhere } from "./IWhere.js";
2
+ import type { Join, JoinKind } from "./Join.js";
3
+ import { type OrderBy } from "./OrderBy.js";
4
+ import type { SelectStatement } from "./SelectStatement.js";
5
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
6
+ export declare class SelectStatementTextRenderer {
7
+ private readonly text;
8
+ constructor(text: StatementTextRenderer);
9
+ render(statement: SelectStatement): string;
10
+ protected whereSql(where?: IWhere): string;
11
+ protected havingSql(having?: IWhere): string;
12
+ protected groupSql(columns?: string[]): string;
13
+ protected orderSql(order?: OrderBy[]): string;
14
+ protected limit(limit?: number): string;
15
+ protected offset(offset?: number): string;
16
+ protected bound(keyword: string, value?: number): string;
17
+ protected joinSql(joins?: Join[]): string;
18
+ protected keyword(kind: JoinKind): string;
19
+ }
@@ -0,0 +1,4 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export declare class StatementEvaluator {
3
+ evaluate: (_statement: IStatement) => void;
4
+ }
@@ -0,0 +1,4 @@
1
+ import type { IStatement } from "./IStatement.js";
2
+ export declare class StatementParser {
3
+ static parse(text: string): IStatement;
4
+ }
@@ -0,0 +1,42 @@
1
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
2
+ import { BulkDeleteStatement } from "./BulkDeleteStatement.js";
3
+ import { BulkInsertStatement } from "./BulkInsertStatement.js";
4
+ import { BulkUpdateStatement } from "./BulkUpdateStatement.js";
5
+ import { CreateIndexStatement } from "./CreateIndexStatement.js";
6
+ import { CreateTableStatement } from "./CreateTableStatement.js";
7
+ import { DeleteStatement } from "./DeleteStatement.js";
8
+ import { ExecuteStoredProcedureStatement } from "./ExecuteStoredProcedureStatement.js";
9
+ import { InsertStatement } from "./InsertStatement.js";
10
+ import { ReturnStatement } from "./ReturnStatement.js";
11
+ import { SelectInsertedIdStatement } from "./SelectInsertedIdStatement.js";
12
+ import { SelectStatement } from "./SelectStatement.js";
13
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
14
+ import { UpdateStatement } from "./UpdateStatement.js";
15
+ export declare class StatementRenderer implements IStatementVisitor {
16
+ protected readonly text: StatementTextRenderer;
17
+ constructor(text: StatementTextRenderer);
18
+ visit(statement: SelectStatement): string;
19
+ visit(statement: InsertStatement): string;
20
+ visit(statement: UpdateStatement): string;
21
+ visit(statement: DeleteStatement): string;
22
+ visit(statement: CreateTableStatement): string;
23
+ visit(statement: CreateIndexStatement): string;
24
+ visit(statement: ExecuteStoredProcedureStatement): string;
25
+ visit(statement: ReturnStatement): string;
26
+ visit(statement: SelectInsertedIdStatement): string;
27
+ visit(statement: BulkInsertStatement): string;
28
+ visit(statement: BulkUpdateStatement): string;
29
+ visit(statement: BulkDeleteStatement): string;
30
+ protected visitSelect(statement: SelectStatement): string;
31
+ protected visitInsert(statement: InsertStatement): string;
32
+ protected visitUpdate(statement: UpdateStatement): string;
33
+ protected visitDelete(statement: DeleteStatement): string;
34
+ protected visitCreateTable(statement: CreateTableStatement): string;
35
+ protected visitCreateIndex(statement: CreateIndexStatement): string;
36
+ protected visitExecuteStoredProcedure(statement: ExecuteStoredProcedureStatement): string;
37
+ protected visitReturn(statement: ReturnStatement): string;
38
+ protected visitSelectInsertedId(statement: SelectInsertedIdStatement): string;
39
+ protected visitBulkInsert(statement: BulkInsertStatement): string;
40
+ protected visitBulkUpdate(statement: BulkUpdateStatement): string;
41
+ protected visitBulkDelete(statement: BulkDeleteStatement): string;
42
+ }
@@ -0,0 +1,14 @@
1
+ import type { ICondition } from "./ICondition.js";
2
+ import type { IConditionVisitor } from "./IConditionVisitor.js";
3
+ import type { IStatement } from "./IStatement.js";
4
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
5
+ import { ConditionRenderer } from "./ConditionRenderer.js";
6
+ import { ExpressionRenderer } from "./ExpressionRenderer.js";
7
+ import { StatementRenderer } from "./StatementRenderer.js";
8
+ export declare class StatementTextRenderer {
9
+ protected readonly statements: IStatementVisitor;
10
+ protected readonly conditions: IConditionVisitor;
11
+ constructor(statements?: (text: StatementTextRenderer) => StatementRenderer, conditions?: (expressions: ExpressionRenderer) => ConditionRenderer, expressions?: (text: StatementTextRenderer) => ExpressionRenderer);
12
+ render(statement: IStatement): string;
13
+ render(condition: ICondition): string;
14
+ }
@@ -0,0 +1,6 @@
1
+ import type { IExpression } from "./IExpression.js";
2
+ import type { SelectStatement } from "./SelectStatement.js";
3
+ export declare class Subquery implements IExpression {
4
+ readonly query: SelectStatement;
5
+ constructor(query: SelectStatement);
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { ITableConstraint } from "./ITableConstraint.js";
2
+ export declare class UniqueConstraint implements ITableConstraint {
3
+ readonly name: string;
4
+ readonly columns: string[];
5
+ readonly kind: "unique";
6
+ constructor(name: string, columns: string[]);
7
+ }
@@ -0,0 +1,14 @@
1
+ import type { Field } from "../builders/Field.js";
2
+ import type { Parameter } from "../Parameter.js";
3
+ import type { IStatementVisitor } from "./IStatementVisitor.js";
4
+ import type { IUpdateStatement } from "./IUpdateStatement.js";
5
+ import type { IWhere } from "./IWhere.js";
6
+ export declare class UpdateStatement implements IUpdateStatement {
7
+ readonly table: string;
8
+ readonly fields: Field[];
9
+ readonly where?: IWhere;
10
+ constructor(table: string, fields: Field[], where?: IWhere);
11
+ accept: (visitor: IStatementVisitor) => string;
12
+ get parameters(): Parameter[];
13
+ static parameterList: (fields: Field[], where?: IWhere) => Parameter[];
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { Field } from "../builders/Field.js";
2
+ import type { Parameter } from "../Parameter.js";
3
+ import type { IWhere } from "./IWhere.js";
4
+ import type { StatementTextRenderer } from "./StatementTextRenderer.js";
5
+ import type { UpdateStatement } from "./UpdateStatement.js";
6
+ export declare class UpdateStatementTextRenderer {
7
+ private readonly text;
8
+ constructor(text: StatementTextRenderer);
9
+ render(statement: UpdateStatement): string;
10
+ compose(sql: string, where: IWhere | undefined, fields: Field[]): {
11
+ text: string;
12
+ parameters: Parameter[];
13
+ };
14
+ }