@neogroup/neorm 0.0.1 → 0.0.3

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 (344) hide show
  1. package/README.md +36 -35
  2. package/dist/database/Connection.d.ts +10 -0
  3. package/dist/database/Connection.js +3 -0
  4. package/dist/database/Connection.js.map +1 -0
  5. package/dist/database/DB.d.ts +63 -0
  6. package/dist/database/DB.js +247 -0
  7. package/dist/database/DB.js.map +1 -0
  8. package/dist/database/DataConnection.d.ts +24 -0
  9. package/dist/database/DataConnection.js +99 -0
  10. package/dist/database/DataConnection.js.map +1 -0
  11. package/dist/database/DataSet.d.ts +3 -0
  12. package/dist/database/DataSet.js +3 -0
  13. package/dist/database/DataSet.js.map +1 -0
  14. package/dist/database/DataSource.d.ts +23 -0
  15. package/dist/database/DataSource.js +56 -0
  16. package/dist/database/DataSource.js.map +1 -0
  17. package/dist/database/DataTable.d.ts +19 -0
  18. package/dist/database/DataTable.js +75 -0
  19. package/dist/database/DataTable.js.map +1 -0
  20. package/dist/database/index.d.ts +8 -0
  21. package/dist/database/index.js +25 -0
  22. package/dist/database/index.js.map +1 -0
  23. package/dist/database/query/DeleteQuery.d.ts +8 -0
  24. package/dist/database/query/DeleteQuery.js +17 -0
  25. package/dist/database/query/DeleteQuery.js.map +1 -0
  26. package/dist/database/query/InsertQuery.d.ts +8 -0
  27. package/dist/database/query/InsertQuery.js +17 -0
  28. package/dist/database/query/InsertQuery.js.map +1 -0
  29. package/dist/database/query/Query.d.ts +2 -0
  30. package/dist/database/query/Query.js +7 -0
  31. package/dist/database/query/Query.js.map +1 -0
  32. package/dist/database/query/QueryTable.d.ts +7 -0
  33. package/dist/database/query/QueryTable.js +3 -0
  34. package/dist/database/query/QueryTable.js.map +1 -0
  35. package/dist/database/query/SelectQuery.d.ts +9 -0
  36. package/dist/database/query/SelectQuery.js +33 -0
  37. package/dist/database/query/SelectQuery.js.map +1 -0
  38. package/dist/database/query/Statement.d.ts +4 -0
  39. package/dist/database/query/Statement.js +3 -0
  40. package/dist/database/query/Statement.js.map +1 -0
  41. package/dist/database/query/UpdateQuery.d.ts +8 -0
  42. package/dist/database/query/UpdateQuery.js +17 -0
  43. package/dist/database/query/UpdateQuery.js.map +1 -0
  44. package/dist/database/query/builders/DefaultQueryBuilder.d.ts +87 -0
  45. package/dist/database/query/builders/DefaultQueryBuilder.js +524 -0
  46. package/dist/database/query/builders/DefaultQueryBuilder.js.map +1 -0
  47. package/dist/database/query/builders/QueryBuilder.d.ts +5 -0
  48. package/dist/database/query/builders/QueryBuilder.js +7 -0
  49. package/dist/database/query/builders/QueryBuilder.js.map +1 -0
  50. package/dist/database/query/builders/index.d.ts +2 -0
  51. package/dist/database/query/builders/index.js +19 -0
  52. package/dist/database/query/builders/index.js.map +1 -0
  53. package/dist/database/query/conditions/BasicCondition.d.ts +6 -0
  54. package/dist/database/query/conditions/BasicCondition.js +3 -0
  55. package/dist/database/query/conditions/BasicCondition.js.map +1 -0
  56. package/dist/database/query/conditions/ColumnCondition.d.ts +6 -0
  57. package/dist/database/query/conditions/ColumnCondition.js +3 -0
  58. package/dist/database/query/conditions/ColumnCondition.js.map +1 -0
  59. package/dist/database/query/conditions/Condition.d.ts +5 -0
  60. package/dist/database/query/conditions/Condition.js +3 -0
  61. package/dist/database/query/conditions/Condition.js.map +1 -0
  62. package/dist/database/query/conditions/ConditionConnector.d.ts +4 -0
  63. package/dist/database/query/conditions/ConditionConnector.js +9 -0
  64. package/dist/database/query/conditions/ConditionConnector.js.map +1 -0
  65. package/dist/database/query/conditions/ConditionGroup.d.ts +40 -0
  66. package/dist/database/query/conditions/ConditionGroup.js +138 -0
  67. package/dist/database/query/conditions/ConditionGroup.js.map +1 -0
  68. package/dist/database/query/conditions/ConnectedCondition.d.ts +6 -0
  69. package/dist/database/query/conditions/ConnectedCondition.js +3 -0
  70. package/dist/database/query/conditions/ConnectedCondition.js.map +1 -0
  71. package/dist/database/query/conditions/RawCondition.d.ts +4 -0
  72. package/dist/database/query/conditions/RawCondition.js +3 -0
  73. package/dist/database/query/conditions/RawCondition.js.map +1 -0
  74. package/dist/database/query/conditions/index.d.ts +7 -0
  75. package/dist/database/query/conditions/index.js +24 -0
  76. package/dist/database/query/conditions/index.js.map +1 -0
  77. package/dist/database/query/features/HasAlias.d.ts +6 -0
  78. package/dist/database/query/features/HasAlias.js +17 -0
  79. package/dist/database/query/features/HasAlias.js.map +1 -0
  80. package/dist/database/query/features/HasDistinct.d.ts +6 -0
  81. package/dist/database/query/features/HasDistinct.js +20 -0
  82. package/dist/database/query/features/HasDistinct.js.map +1 -0
  83. package/dist/database/query/features/HasFieldValues.d.ts +9 -0
  84. package/dist/database/query/features/HasFieldValues.js +27 -0
  85. package/dist/database/query/features/HasFieldValues.js.map +1 -0
  86. package/dist/database/query/features/HasGroupByFields.d.ts +7 -0
  87. package/dist/database/query/features/HasGroupByFields.js +21 -0
  88. package/dist/database/query/features/HasGroupByFields.js.map +1 -0
  89. package/dist/database/query/features/HasHavingConditions.d.ts +13 -0
  90. package/dist/database/query/features/HasHavingConditions.js +28 -0
  91. package/dist/database/query/features/HasHavingConditions.js.map +1 -0
  92. package/dist/database/query/features/HasJoins.d.ts +41 -0
  93. package/dist/database/query/features/HasJoins.js +66 -0
  94. package/dist/database/query/features/HasJoins.js.map +1 -0
  95. package/dist/database/query/features/HasLimit.d.ts +6 -0
  96. package/dist/database/query/features/HasLimit.js +20 -0
  97. package/dist/database/query/features/HasLimit.js.map +1 -0
  98. package/dist/database/query/features/HasOffset.d.ts +6 -0
  99. package/dist/database/query/features/HasOffset.js +20 -0
  100. package/dist/database/query/features/HasOffset.js.map +1 -0
  101. package/dist/database/query/features/HasOrderByFields.d.ts +15 -0
  102. package/dist/database/query/features/HasOrderByFields.js +38 -0
  103. package/dist/database/query/features/HasOrderByFields.js.map +1 -0
  104. package/dist/database/query/features/HasSelectFields.d.ts +11 -0
  105. package/dist/database/query/features/HasSelectFields.js +21 -0
  106. package/dist/database/query/features/HasSelectFields.js.map +1 -0
  107. package/dist/database/query/features/HasTable.d.ts +7 -0
  108. package/dist/database/query/features/HasTable.js +20 -0
  109. package/dist/database/query/features/HasTable.js.map +1 -0
  110. package/dist/database/query/features/HasUnions.d.ts +13 -0
  111. package/dist/database/query/features/HasUnions.js +21 -0
  112. package/dist/database/query/features/HasUnions.js.map +1 -0
  113. package/dist/database/query/features/HasWhen.d.ts +3 -0
  114. package/dist/database/query/features/HasWhen.js +13 -0
  115. package/dist/database/query/features/HasWhen.js.map +1 -0
  116. package/dist/database/query/features/HasWhereConditions.d.ts +35 -0
  117. package/dist/database/query/features/HasWhereConditions.js +92 -0
  118. package/dist/database/query/features/HasWhereConditions.js.map +1 -0
  119. package/dist/database/query/features/index.d.ts +14 -0
  120. package/dist/database/query/features/index.js +31 -0
  121. package/dist/database/query/features/index.js.map +1 -0
  122. package/dist/database/query/fields/BasicField.d.ts +5 -0
  123. package/dist/database/query/fields/BasicField.js +3 -0
  124. package/dist/database/query/fields/BasicField.js.map +1 -0
  125. package/dist/database/query/fields/Field.d.ts +3 -0
  126. package/dist/database/query/fields/Field.js +3 -0
  127. package/dist/database/query/fields/Field.js.map +1 -0
  128. package/dist/database/query/fields/RawField.d.ts +1 -0
  129. package/dist/database/query/fields/RawField.js +3 -0
  130. package/dist/database/query/fields/RawField.js.map +1 -0
  131. package/dist/database/query/fields/index.d.ts +3 -0
  132. package/dist/database/query/fields/index.js +20 -0
  133. package/dist/database/query/fields/index.js.map +1 -0
  134. package/dist/database/query/index.d.ts +11 -0
  135. package/dist/database/query/index.js +28 -0
  136. package/dist/database/query/index.js.map +1 -0
  137. package/dist/database/sources/index.d.ts +3 -0
  138. package/dist/database/sources/index.js +20 -0
  139. package/dist/database/sources/index.js.map +1 -0
  140. package/dist/database/sources/mysql/MysqlConnection.d.ts +14 -0
  141. package/dist/database/sources/mysql/MysqlConnection.js +36 -0
  142. package/dist/database/sources/mysql/MysqlConnection.js.map +1 -0
  143. package/dist/database/sources/mysql/MysqlDataSource.d.ts +24 -0
  144. package/dist/database/sources/mysql/MysqlDataSource.js +72 -0
  145. package/dist/database/sources/mysql/MysqlDataSource.js.map +1 -0
  146. package/dist/database/sources/mysql/MysqlQueryBuilder.d.ts +6 -0
  147. package/dist/database/sources/mysql/MysqlQueryBuilder.js +28 -0
  148. package/dist/database/sources/mysql/MysqlQueryBuilder.js.map +1 -0
  149. package/dist/database/sources/mysql/index.d.ts +3 -0
  150. package/dist/database/sources/mysql/index.js +20 -0
  151. package/dist/database/sources/mysql/index.js.map +1 -0
  152. package/dist/database/sources/postgres/PostgresConnection.d.ts +13 -0
  153. package/dist/database/sources/postgres/PostgresConnection.js +40 -0
  154. package/dist/database/sources/postgres/PostgresConnection.js.map +1 -0
  155. package/dist/database/sources/postgres/PostgresDataSource.d.ts +24 -0
  156. package/dist/database/sources/postgres/PostgresDataSource.js +73 -0
  157. package/dist/database/sources/postgres/PostgresDataSource.js.map +1 -0
  158. package/dist/database/sources/postgres/PostgresQueryBuilder.d.ts +5 -0
  159. package/dist/database/sources/postgres/PostgresQueryBuilder.js +13 -0
  160. package/dist/database/sources/postgres/PostgresQueryBuilder.js.map +1 -0
  161. package/dist/database/sources/postgres/index.d.ts +2 -0
  162. package/dist/database/sources/postgres/index.js +19 -0
  163. package/dist/database/sources/postgres/index.js.map +1 -0
  164. package/dist/database/sources/sqlite/SqliteConnection.d.ts +14 -0
  165. package/dist/database/sources/sqlite/SqliteConnection.js +37 -0
  166. package/dist/database/sources/sqlite/SqliteConnection.js.map +1 -0
  167. package/dist/database/sources/sqlite/SqliteDataSource.d.ts +11 -0
  168. package/dist/database/sources/sqlite/SqliteDataSource.js +34 -0
  169. package/dist/database/sources/sqlite/SqliteDataSource.js.map +1 -0
  170. package/dist/database/sources/sqlite/SqliteQueryBuilder.d.ts +6 -0
  171. package/dist/database/sources/sqlite/SqliteQueryBuilder.js +23 -0
  172. package/dist/database/sources/sqlite/SqliteQueryBuilder.js.map +1 -0
  173. package/dist/database/sources/sqlite/index.d.ts +3 -0
  174. package/dist/database/sources/sqlite/index.js +20 -0
  175. package/dist/database/sources/sqlite/index.js.map +1 -0
  176. package/dist/entities/BaseEntity.d.ts +76 -0
  177. package/dist/entities/BaseEntity.js +208 -0
  178. package/dist/entities/BaseEntity.js.map +1 -0
  179. package/dist/entities/CastType.d.ts +1 -0
  180. package/dist/entities/CastType.js +3 -0
  181. package/dist/entities/CastType.js.map +1 -0
  182. package/dist/entities/Entities.d.ts +14 -0
  183. package/dist/entities/Entities.js +85 -0
  184. package/dist/entities/Entities.js.map +1 -0
  185. package/dist/entities/EntityQuery.d.ts +60 -0
  186. package/dist/entities/EntityQuery.js +305 -0
  187. package/dist/entities/EntityQuery.js.map +1 -0
  188. package/dist/entities/RelationshipType.d.ts +1 -0
  189. package/dist/entities/RelationshipType.js +3 -0
  190. package/dist/entities/RelationshipType.js.map +1 -0
  191. package/dist/entities/decorators/BelongsTo.d.ts +2 -0
  192. package/dist/entities/decorators/BelongsTo.js +15 -0
  193. package/dist/entities/decorators/BelongsTo.js.map +1 -0
  194. package/dist/entities/decorators/Column.d.ts +13 -0
  195. package/dist/entities/decorators/Column.js +12 -0
  196. package/dist/entities/decorators/Column.js.map +1 -0
  197. package/dist/entities/decorators/Entity.d.ts +20 -0
  198. package/dist/entities/decorators/Entity.js +50 -0
  199. package/dist/entities/decorators/Entity.js.map +1 -0
  200. package/dist/entities/decorators/HasMany.d.ts +2 -0
  201. package/dist/entities/decorators/HasMany.js +15 -0
  202. package/dist/entities/decorators/HasMany.js.map +1 -0
  203. package/dist/entities/decorators/HasManyThrough.d.ts +2 -0
  204. package/dist/entities/decorators/HasManyThrough.js +23 -0
  205. package/dist/entities/decorators/HasManyThrough.js.map +1 -0
  206. package/dist/entities/decorators/HasOne.d.ts +2 -0
  207. package/dist/entities/decorators/HasOne.js +12 -0
  208. package/dist/entities/decorators/HasOne.js.map +1 -0
  209. package/dist/entities/decorators/HasOneThrough.d.ts +2 -0
  210. package/dist/entities/decorators/HasOneThrough.js +23 -0
  211. package/dist/entities/decorators/HasOneThrough.js.map +1 -0
  212. package/dist/entities/decorators/casts.d.ts +3 -0
  213. package/dist/entities/decorators/casts.js +38 -0
  214. package/dist/entities/decorators/casts.js.map +1 -0
  215. package/dist/entities/decorators/index.d.ts +7 -0
  216. package/dist/entities/decorators/index.js +24 -0
  217. package/dist/entities/decorators/index.js.map +1 -0
  218. package/dist/entities/decorators/metadata.d.ts +19 -0
  219. package/dist/entities/decorators/metadata.js +12 -0
  220. package/dist/entities/decorators/metadata.js.map +1 -0
  221. package/dist/entities/index.d.ts +5 -3
  222. package/dist/entities/index.js +5 -2
  223. package/dist/entities/index.js.map +1 -1
  224. package/dist/entities/relationship.d.ts +1 -6
  225. package/dist/entities/relationship.js +1 -22
  226. package/dist/entities/relationship.js.map +1 -1
  227. package/dist/index.d.ts +1 -9
  228. package/dist/index.js +1 -14
  229. package/dist/index.js.map +1 -1
  230. package/dist/query/DeleteQuery.d.ts +8 -0
  231. package/dist/query/DeleteQuery.js +17 -0
  232. package/dist/query/DeleteQuery.js.map +1 -0
  233. package/dist/query/InsertQuery.d.ts +8 -0
  234. package/dist/query/InsertQuery.js +17 -0
  235. package/dist/query/InsertQuery.js.map +1 -0
  236. package/dist/query/QueryTable.d.ts +7 -0
  237. package/dist/query/QueryTable.js +3 -0
  238. package/dist/query/QueryTable.js.map +1 -0
  239. package/dist/query/SelectQuery.d.ts +9 -0
  240. package/dist/query/SelectQuery.js +33 -0
  241. package/dist/query/SelectQuery.js.map +1 -0
  242. package/dist/query/UpdateQuery.d.ts +8 -0
  243. package/dist/query/UpdateQuery.js +17 -0
  244. package/dist/query/UpdateQuery.js.map +1 -0
  245. package/dist/query/builders/DefaultQueryBuilder.d.ts +87 -0
  246. package/dist/query/builders/DefaultQueryBuilder.js +524 -0
  247. package/dist/query/builders/DefaultQueryBuilder.js.map +1 -0
  248. package/dist/query/builders/QueryBuilder.d.ts +5 -0
  249. package/dist/query/builders/QueryBuilder.js +7 -0
  250. package/dist/query/builders/QueryBuilder.js.map +1 -0
  251. package/dist/query/builders/index.d.ts +2 -2
  252. package/dist/query/builders/index.js +2 -2
  253. package/dist/query/builders/index.js.map +1 -1
  254. package/dist/query/conditions/BasicCondition.d.ts +6 -0
  255. package/dist/query/conditions/BasicCondition.js +3 -0
  256. package/dist/query/conditions/BasicCondition.js.map +1 -0
  257. package/dist/query/conditions/ColumnCondition.d.ts +6 -0
  258. package/dist/query/conditions/ColumnCondition.js +3 -0
  259. package/dist/query/conditions/ColumnCondition.js.map +1 -0
  260. package/dist/query/conditions/Condition.d.ts +5 -0
  261. package/dist/query/conditions/Condition.js +3 -0
  262. package/dist/query/conditions/Condition.js.map +1 -0
  263. package/dist/query/conditions/ConditionConnector.d.ts +4 -0
  264. package/dist/query/conditions/ConditionConnector.js +9 -0
  265. package/dist/query/conditions/ConditionConnector.js.map +1 -0
  266. package/dist/query/conditions/ConditionGroup.d.ts +40 -0
  267. package/dist/query/conditions/ConditionGroup.js +138 -0
  268. package/dist/query/conditions/ConditionGroup.js.map +1 -0
  269. package/dist/query/conditions/ConnectedCondition.d.ts +6 -0
  270. package/dist/query/conditions/ConnectedCondition.js +3 -0
  271. package/dist/query/conditions/ConnectedCondition.js.map +1 -0
  272. package/dist/query/conditions/RawCondition.d.ts +4 -0
  273. package/dist/query/conditions/RawCondition.js +3 -0
  274. package/dist/query/conditions/RawCondition.js.map +1 -0
  275. package/dist/query/conditions/index.d.ts +7 -0
  276. package/dist/query/conditions/index.js +24 -0
  277. package/dist/query/conditions/index.js.map +1 -0
  278. package/dist/query/features/HasAlias.d.ts +6 -0
  279. package/dist/query/features/HasAlias.js +17 -0
  280. package/dist/query/features/HasAlias.js.map +1 -0
  281. package/dist/query/features/HasDistinct.d.ts +6 -0
  282. package/dist/query/features/HasDistinct.js +20 -0
  283. package/dist/query/features/HasDistinct.js.map +1 -0
  284. package/dist/query/features/HasFieldValues.d.ts +9 -0
  285. package/dist/query/features/HasFieldValues.js +27 -0
  286. package/dist/query/features/HasFieldValues.js.map +1 -0
  287. package/dist/query/features/HasGroupByFields.d.ts +7 -0
  288. package/dist/query/features/HasGroupByFields.js +21 -0
  289. package/dist/query/features/HasGroupByFields.js.map +1 -0
  290. package/dist/query/features/HasHavingConditions.d.ts +13 -0
  291. package/dist/query/features/HasHavingConditions.js +28 -0
  292. package/dist/query/features/HasHavingConditions.js.map +1 -0
  293. package/dist/query/features/HasJoins.d.ts +41 -0
  294. package/dist/query/features/HasJoins.js +66 -0
  295. package/dist/query/features/HasJoins.js.map +1 -0
  296. package/dist/query/features/HasLimit.d.ts +6 -0
  297. package/dist/query/features/HasLimit.js +20 -0
  298. package/dist/query/features/HasLimit.js.map +1 -0
  299. package/dist/query/features/HasOffset.d.ts +6 -0
  300. package/dist/query/features/HasOffset.js +20 -0
  301. package/dist/query/features/HasOffset.js.map +1 -0
  302. package/dist/query/features/HasOrderByFields.d.ts +15 -0
  303. package/dist/query/features/HasOrderByFields.js +38 -0
  304. package/dist/query/features/HasOrderByFields.js.map +1 -0
  305. package/dist/query/features/HasSelectFields.d.ts +11 -0
  306. package/dist/query/features/HasSelectFields.js +21 -0
  307. package/dist/query/features/HasSelectFields.js.map +1 -0
  308. package/dist/query/features/HasTable.d.ts +7 -0
  309. package/dist/query/features/HasTable.js +20 -0
  310. package/dist/query/features/HasTable.js.map +1 -0
  311. package/dist/query/features/HasUnions.d.ts +13 -0
  312. package/dist/query/features/HasUnions.js +21 -0
  313. package/dist/query/features/HasUnions.js.map +1 -0
  314. package/dist/query/features/HasWhen.d.ts +3 -0
  315. package/dist/query/features/HasWhen.js +13 -0
  316. package/dist/query/features/HasWhen.js.map +1 -0
  317. package/dist/query/features/HasWhereConditions.d.ts +35 -0
  318. package/dist/query/features/HasWhereConditions.js +92 -0
  319. package/dist/query/features/HasWhereConditions.js.map +1 -0
  320. package/dist/query/features/index.d.ts +14 -14
  321. package/dist/query/features/index.js +14 -14
  322. package/dist/query/features/index.js.map +1 -1
  323. package/dist/query/fields/BasicField.d.ts +5 -0
  324. package/dist/query/fields/BasicField.js +3 -0
  325. package/dist/query/fields/BasicField.js.map +1 -0
  326. package/dist/query/fields/Field.d.ts +3 -0
  327. package/dist/query/fields/Field.js +3 -0
  328. package/dist/query/fields/Field.js.map +1 -0
  329. package/dist/query/fields/RawField.d.ts +1 -0
  330. package/dist/query/fields/RawField.js +3 -0
  331. package/dist/query/fields/RawField.js.map +1 -0
  332. package/dist/query/fields/index.d.ts +3 -0
  333. package/dist/query/fields/index.js +20 -0
  334. package/dist/query/fields/index.js.map +1 -0
  335. package/dist/query/index.d.ts +7 -7
  336. package/dist/query/index.js +7 -7
  337. package/dist/query/index.js.map +1 -1
  338. package/dist/query/query.js +1 -1
  339. package/dist/query/query.js.map +1 -1
  340. package/dist/query/statement.js +1 -1
  341. package/dist/query/statement.js.map +1 -1
  342. package/dist/utilities.js +2 -3
  343. package/dist/utilities.js.map +1 -1
  344. package/package.json +21 -12
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseEntity = void 0;
4
+ const DB_1 = require("../database/DB");
5
+ const query_1 = require("../database/query");
6
+ const casts_1 = require("./decorators/casts");
7
+ const EntityQuery_1 = require("./EntityQuery");
8
+ /**
9
+ * Abstract Active Record base class. Entities extend BaseEntity and are
10
+ * decorated with @Entity/@Column — the decorators fill in the static metadata,
11
+ * and BaseEntity provides every static query method (find, where, with, …)
12
+ * plus the save() and delete() instance methods.
13
+ */
14
+ class BaseEntity {
15
+ // ── Internals ────────────────────────────────────────────────────────────────
16
+ static getSource() {
17
+ return this.source ? DB_1.DB.source(this.source) : DB_1.DB.getActiveSource();
18
+ }
19
+ /** Creates a new EntityQuery for this entity. */
20
+ static query() {
21
+ return new EntityQuery_1.EntityQuery(this, this.getSource().table(this.table));
22
+ }
23
+ /** Hydrates a database row into an entity instance (applying casts). */
24
+ static fromRow(row) {
25
+ var _a, _b, _c, _d;
26
+ const instance = new this();
27
+ const fieldNames = (_a = this.fields) !== null && _a !== void 0 ? _a : [];
28
+ const columnsMap = (_b = this.columnsMap) !== null && _b !== void 0 ? _b : {};
29
+ const castsMap = (_c = this.casts) !== null && _c !== void 0 ? _c : {};
30
+ const cols = fieldNames.length > 0 ? fieldNames : Object.keys(row);
31
+ for (const prop of cols) {
32
+ const col = (_d = columnsMap[prop]) !== null && _d !== void 0 ? _d : prop;
33
+ if (!(col in row)) {
34
+ continue;
35
+ }
36
+ const cast = castsMap[prop];
37
+ instance[prop] = cast ? (0, casts_1.applyCast)(row[col], cast) : row[col];
38
+ }
39
+ return instance;
40
+ }
41
+ // ── Static query methods ─────────────────────────────────────────────────────
42
+ static async find(id) {
43
+ return this.query().find(id);
44
+ }
45
+ static async get() {
46
+ return this.query().get();
47
+ }
48
+ static async first() {
49
+ return this.query().first();
50
+ }
51
+ static where(...args) {
52
+ return this.query().where(...args);
53
+ }
54
+ static whereIn(field, values) {
55
+ return this.query().whereIn(field, values);
56
+ }
57
+ static whereNotIn(field, values) {
58
+ return this.query().whereNotIn(field, values);
59
+ }
60
+ static whereBetween(field, range) {
61
+ return this.query().whereBetween(field, range);
62
+ }
63
+ static whereNotBetween(field, range) {
64
+ return this.query().whereNotBetween(field, range);
65
+ }
66
+ static whereNull(field) {
67
+ return this.query().whereNull(field);
68
+ }
69
+ static whereNotNull(field) {
70
+ return this.query().whereNotNull(field);
71
+ }
72
+ static whereLike(field, pattern) {
73
+ return this.query().whereLike(field, pattern);
74
+ }
75
+ static whereNotLike(field, pattern) {
76
+ return this.query().whereNotLike(field, pattern);
77
+ }
78
+ static whereColumn(...args) {
79
+ return this.query().whereColumn(...args);
80
+ }
81
+ static orderBy(field, direction) {
82
+ return this.query().orderBy(field, direction);
83
+ }
84
+ static limit(value) {
85
+ return this.query().limit(value);
86
+ }
87
+ static offset(value) {
88
+ return this.query().offset(value);
89
+ }
90
+ static select(...fields) {
91
+ return this.query().select(...fields);
92
+ }
93
+ static with(relations, ...rest) {
94
+ return this.query().with(relations, ...rest);
95
+ }
96
+ static joinRelationship(relationName) {
97
+ return this.query().joinRelationship(relationName);
98
+ }
99
+ static innerJoinRelationship(relationName) {
100
+ return this.query().innerJoinRelationship(relationName);
101
+ }
102
+ static leftJoinRelationship(relationName) {
103
+ return this.query().leftJoinRelationship(relationName);
104
+ }
105
+ // ── Persistence ──────────────────────────────────────────────────────────────
106
+ /**
107
+ * Persists the entity to the database.
108
+ * - If the primary key is set → UPDATE (auto-generated columns are excluded from SET).
109
+ * - If the primary key is null/undefined → INSERT (auto-generated columns are excluded;
110
+ * the generated PK is written back to the instance).
111
+ */
112
+ async save() {
113
+ var _a, _b, _c, _d, _e, _f;
114
+ const cls = this.constructor;
115
+ const pk = cls.primaryKey;
116
+ const fieldNames = (_a = cls.fields) !== null && _a !== void 0 ? _a : [];
117
+ const autoGeneratedFields = (_b = cls.autoGeneratedFields) !== null && _b !== void 0 ? _b : [];
118
+ const castsMap = (_c = cls.casts) !== null && _c !== void 0 ? _c : {};
119
+ const columnsMap = (_d = cls.columnsMap) !== null && _d !== void 0 ? _d : {};
120
+ const pkProp = (_e = Object.keys(columnsMap).find((p) => columnsMap[p] === pk)) !== null && _e !== void 0 ? _e : pk;
121
+ const source = cls.getSource();
122
+ // Build the row, skipping auto-generated columns (DB manages their values)
123
+ const row = {};
124
+ const cols = fieldNames.length > 0
125
+ ? fieldNames
126
+ : Object.keys(this).filter((k) => typeof this[k] !== 'function');
127
+ for (const col of cols) {
128
+ if (autoGeneratedFields.includes(col)) {
129
+ continue;
130
+ }
131
+ const value = this[col];
132
+ if (value === undefined) {
133
+ continue;
134
+ }
135
+ const cast = castsMap[col];
136
+ row[(_f = columnsMap[col]) !== null && _f !== void 0 ? _f : col] = cast ? (0, casts_1.applyCastForStorage)(value, cast) : value;
137
+ }
138
+ if (this[pkProp] != null) {
139
+ // UPDATE — also exclude PK from SET clause
140
+ const updateRow = Object.assign({}, row);
141
+ delete updateRow[pk];
142
+ await source
143
+ .table(cls.table)
144
+ .where(pk, this[pkProp])
145
+ .update(updateRow);
146
+ }
147
+ else {
148
+ // INSERT — get connection to read back the generated ID
149
+ const conn = await source.getConnection();
150
+ try {
151
+ await conn.execute(new query_1.InsertQuery().setTable(cls.table).setFields(row));
152
+ if (autoGeneratedFields.includes(pkProp)) {
153
+ ;
154
+ this[pkProp] = await conn.lastInsertId();
155
+ }
156
+ }
157
+ finally {
158
+ await conn.close();
159
+ }
160
+ }
161
+ }
162
+ /**
163
+ * Deletes the entity from the database by its primary key.
164
+ * Throws if the primary key is not set.
165
+ */
166
+ async delete() {
167
+ var _a, _b;
168
+ const cls = this.constructor;
169
+ const pk = cls.primaryKey;
170
+ const columnsMap = (_a = cls.columnsMap) !== null && _a !== void 0 ? _a : {};
171
+ const pkProp = (_b = Object.keys(columnsMap).find((p) => columnsMap[p] === pk)) !== null && _b !== void 0 ? _b : pk;
172
+ const pkValue = this[pkProp];
173
+ if (pkValue == null) {
174
+ throw new Error('Cannot delete an entity without a primary key value.');
175
+ }
176
+ await cls.getSource().table(cls.table).where(pk, pkValue).delete();
177
+ }
178
+ // ── Serialization ────────────────────────────────────────────────────────────
179
+ toJSON() {
180
+ const result = {};
181
+ // Own enumerable properties — column values set by fromRow
182
+ for (const key of Object.keys(this)) {
183
+ result[key] = this[key];
184
+ }
185
+ // Getters defined on the entity's prototype chain (computed attributes)
186
+ let proto = Object.getPrototypeOf(this);
187
+ while (proto && proto !== BaseEntity.prototype && proto !== Object.prototype) {
188
+ for (const key of Object.getOwnPropertyNames(proto)) {
189
+ if (key === 'constructor' || key in result) {
190
+ continue;
191
+ }
192
+ const descriptor = Object.getOwnPropertyDescriptor(proto, key);
193
+ if (descriptor && typeof descriptor.get === 'function') {
194
+ try {
195
+ result[key] = this[key];
196
+ }
197
+ catch (_a) {
198
+ // skip getters that throw (e.g. unloaded relationships)
199
+ }
200
+ }
201
+ }
202
+ proto = Object.getPrototypeOf(proto);
203
+ }
204
+ return result;
205
+ }
206
+ }
207
+ exports.BaseEntity = BaseEntity;
208
+ //# sourceMappingURL=BaseEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../../src/entities/BaseEntity.ts"],"names":[],"mappings":";;;AAEA,uCAAmC;AACnC,6CAAsD;AAItD,8CAAmE;AACnE,+CAA2C;AAM3C;;;;;GAKG;AACH,MAAsB,UAAU;IAoB9B,gFAAgF;IAEhF,MAAM,CAAC,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAE,CAAC,eAAe,EAAE,CAAA;IACpE,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,yBAAW,CAAI,IAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,OAAO,CAA6C,GAAwB;;QACjF,MAAM,QAAQ,GAAG,IAAK,IAAY,EAAE,CAAA;QACpC,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAA;QACpC,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,EAAE,CAAA;QACxC,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElE,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAA,UAAU,CAAC,IAAI,CAAC,mCAAI,IAAI,CAAA;YAEpC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBAClB,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAE3B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,gFAAgF;IAEhF,MAAM,CAAC,KAAK,CAAC,IAAI,CAA6C,EAAO;QACnE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG;QACd,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAMD,MAAM,CAAC,KAAK,CAAY,GAAG,IAAW;QACpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,OAAO,CAA6C,KAAY,EAAE,MAAa;QACpF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,UAAU,CAA6C,KAAY,EAAE,MAAa;QACvF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,YAAY,CAA6C,KAAY,EAAE,KAAiB;QAC7F,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,eAAe,CAA6C,KAAY,EAAE,KAAiB;QAChG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,SAAS,CAA6C,KAAY;QACvE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,YAAY,CAA6C,KAAY;QAC1E,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,SAAS,CAA6C,KAAY,EAAE,OAAe;QACxF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,YAAY,CAA6C,KAAY,EAAE,OAAe;QAC3F,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IASD,MAAM,CAAC,WAAW,CAAY,GAAG,IAAW;QAC1C,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,OAAO,CAEZ,KAAY,EACZ,SAA4B;QAE5B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAA6C,KAAa;QACpE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,MAAM,CAA6C,KAAa;QACrE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,MAAM,CAA6C,GAAG,MAA2B;QACtF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAET,SAA4B,EAC5B,GAAG,IAAc;QAEjB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAA6C,YAAoB;QACtF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,qBAAqB,CAA6C,YAAoB;QAC3F,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,oBAAoB,CAA6C,YAAoB;QAC1F,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;IACxD,CAAC;IAED,gFAAgF;IAEhF;;;;;OAKG;IACH,KAAK,CAAC,IAAI;;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,WAA0B,CAAA;QAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAA;QACzB,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAA;QACnC,MAAM,mBAAmB,GAAG,MAAA,GAAG,CAAC,mBAAmB,mCAAI,EAAE,CAAA;QACzD,MAAM,QAAQ,GAAG,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAA;QAChC,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,UAAU,mCAAI,EAAE,CAAA;QACvC,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,mCAAI,EAAE,CAAA;QAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;QAC9B,2EAA2E;QAC3E,MAAM,GAAG,GAAY,EAAE,CAAA;QACvB,MAAM,IAAI,GACR,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAQ,IAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAA;QAEpF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,SAAQ;YACV,CAAC;YAED,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;YAEhC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAE1B,GAAG,CAAC,MAAA,UAAU,CAAC,GAAG,CAAC,mCAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,2BAAmB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC/E,CAAC;QAED,IAAK,IAAY,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAClC,2CAA2C;YAC3C,MAAM,SAAS,qBAAQ,GAAG,CAAE,CAAA;YAE5B,OAAO,SAAS,CAAC,EAAE,CAAC,CAAA;YACpB,MAAM,MAAM;iBACT,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;iBAChB,KAAK,CAAC,EAAE,EAAG,IAAY,CAAC,MAAM,CAAC,CAAC;iBAChC,MAAM,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAA;YAEzC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;gBAExE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzC,CAAC;oBAAC,IAAY,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBACpD,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM;;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,WAA0B,CAAA;QAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAA;QACzB,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,UAAU,mCAAI,EAAE,CAAA;QACvC,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,mCAAI,EAAE,CAAA;QAC9E,MAAM,OAAO,GAAI,IAAY,CAAC,MAAM,CAAC,CAAA;QAErC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACzE,CAAC;QAED,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;IACpE,CAAC;IAED,gFAAgF;IAEhF,MAAM;QACJ,MAAM,MAAM,GAAwB,EAAE,CAAA;QAEtC,2DAA2D;QAC3D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAW,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QAED,wEAAwE;QACxE,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAEvC,OAAO,KAAK,IAAI,KAAK,KAAK,UAAU,CAAC,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;oBAC3C,SAAQ;gBACV,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAE9D,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvD,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;oBAClC,CAAC;oBAAC,WAAM,CAAC;wBACP,wDAAwD;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AArRD,gCAqRC"}
@@ -0,0 +1 @@
1
+ export type CastType = 'number' | 'boolean' | 'string' | 'json' | 'date';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CastType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CastType.js","sourceRoot":"","sources":["../../src/entities/CastType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ export declare class Entities {
2
+ /**
3
+ * Persists an entity instance to the database.
4
+ * - If the primary key is set → UPDATE (auto-generated columns are excluded from SET).
5
+ * - If the primary key is null/undefined → INSERT (auto-generated columns are excluded;
6
+ * the generated PK is written back to the instance).
7
+ */
8
+ static save(entity: object): Promise<void>;
9
+ /**
10
+ * Deletes an entity instance from the database by its primary key.
11
+ * Throws if the primary key is not set.
12
+ */
13
+ static delete(entity: object): Promise<void>;
14
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entities = void 0;
4
+ const DB_1 = require("../database/DB");
5
+ const query_1 = require("../query");
6
+ const casts_1 = require("./decorators/casts");
7
+ // ── Entities namespace ────────────────────────────────────────────────────────
8
+ class Entities {
9
+ /**
10
+ * Persists an entity instance to the database.
11
+ * - If the primary key is set → UPDATE (auto-generated columns are excluded from SET).
12
+ * - If the primary key is null/undefined → INSERT (auto-generated columns are excluded;
13
+ * the generated PK is written back to the instance).
14
+ */
15
+ static async save(entity) {
16
+ var _a, _b, _c, _d, _e, _f, _g;
17
+ const cls = entity.constructor;
18
+ const pk = cls.primaryKey;
19
+ const tableName = cls.table;
20
+ const fieldNames = (_a = cls.fields) !== null && _a !== void 0 ? _a : [];
21
+ const autoGeneratedFields = (_b = cls.autoGeneratedFields) !== null && _b !== void 0 ? _b : [];
22
+ const castsMap = (_c = cls.casts) !== null && _c !== void 0 ? _c : {};
23
+ const columnsMap = (_d = cls.columnsMap) !== null && _d !== void 0 ? _d : {};
24
+ const pkProp = (_e = Object.keys(columnsMap).find((p) => columnsMap[p] === pk)) !== null && _e !== void 0 ? _e : pk;
25
+ const source = (_f = cls.source) !== null && _f !== void 0 ? _f : DB_1.DB.getActiveSource();
26
+ // Build the row, skipping auto-generated columns (DB manages their values)
27
+ const row = {};
28
+ const cols = fieldNames.length > 0
29
+ ? fieldNames
30
+ : Object.keys(entity).filter((k) => typeof entity[k] !== 'function');
31
+ for (const col of cols) {
32
+ if (autoGeneratedFields.includes(col)) {
33
+ continue;
34
+ }
35
+ const value = entity[col];
36
+ if (value === undefined) {
37
+ continue;
38
+ }
39
+ const cast = castsMap[col];
40
+ row[(_g = columnsMap[col]) !== null && _g !== void 0 ? _g : col] = cast ? (0, casts_1.applyCastForStorage)(value, cast) : value;
41
+ }
42
+ if (entity[pkProp] != null) {
43
+ // UPDATE — also exclude PK from SET clause
44
+ const updateRow = Object.assign({}, row);
45
+ delete updateRow[pk];
46
+ await source
47
+ .table(tableName)
48
+ .where(pk, entity[pkProp])
49
+ .update(updateRow);
50
+ }
51
+ else {
52
+ // INSERT — get connection to read back the generated ID
53
+ const conn = await source.getConnection();
54
+ try {
55
+ await conn.execute(new query_1.InsertQuery().setTable(tableName).setFields(row));
56
+ if (autoGeneratedFields.includes(pkProp)) {
57
+ ;
58
+ entity[pkProp] = await conn.lastInsertId();
59
+ }
60
+ }
61
+ finally {
62
+ await conn.close();
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Deletes an entity instance from the database by its primary key.
68
+ * Throws if the primary key is not set.
69
+ */
70
+ static async delete(entity) {
71
+ var _a, _b, _c;
72
+ const cls = entity.constructor;
73
+ const pk = cls.primaryKey;
74
+ const columnsMap = (_a = cls.columnsMap) !== null && _a !== void 0 ? _a : {};
75
+ const pkProp = (_b = Object.keys(columnsMap).find((p) => columnsMap[p] === pk)) !== null && _b !== void 0 ? _b : pk;
76
+ const pkValue = entity[pkProp];
77
+ if (pkValue == null) {
78
+ throw new Error('Cannot delete an entity without a primary key value.');
79
+ }
80
+ const source = (_c = cls.source) !== null && _c !== void 0 ? _c : DB_1.DB.getActiveSource();
81
+ await source.table(cls.table).where(pk, pkValue).delete();
82
+ }
83
+ }
84
+ exports.Entities = Entities;
85
+ //# sourceMappingURL=Entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entities.js","sourceRoot":"","sources":["../../src/entities/Entities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { DataTable } from '../database/DataTable';
2
+ import { Field } from '../database/query';
3
+ import { Condition, ConditionGroup } from '../database/query/conditions';
4
+ import { OrderByDirection } from '../database/query/features/HasOrderByFields';
5
+ import { Relationship } from './Relationship';
6
+ type EntityClass<T> = (new () => T) & {
7
+ table: string;
8
+ primaryKey: string;
9
+ relationships: Record<string, Relationship>;
10
+ fromRow(row: Record<string, any>): T;
11
+ };
12
+ /**
13
+ * Chainable query builder for Entities. Wraps DataTable and hydrates rows
14
+ * into typed Entity instances when a terminal method is called.
15
+ */
16
+ export declare class EntityQuery<T> {
17
+ private _entityClass;
18
+ private _table;
19
+ private _withs;
20
+ constructor(entityClass: EntityClass<T>, table: DataTable);
21
+ with(relations: string | string[], ...rest: string[]): this;
22
+ joinRelationship(relationName: string): this;
23
+ innerJoinRelationship(relationName: string): this;
24
+ leftJoinRelationship(relationName: string): this;
25
+ private _applyJoin;
26
+ get(): Promise<T[]>;
27
+ first(): Promise<T | null>;
28
+ find(id: any): Promise<T | null>;
29
+ private _loadRelations;
30
+ where(callback: (group: ConditionGroup) => void): this;
31
+ where(condition: Condition): this;
32
+ where(field: Field, value: any): this;
33
+ where(field: Field, operator: string, value: any): this;
34
+ whereIn(field: Field, values: any[]): this;
35
+ whereNotIn(field: Field, values: any[]): this;
36
+ whereBetween(field: Field, range: [any, any]): this;
37
+ whereNotBetween(field: Field, range: [any, any]): this;
38
+ whereNull(field: Field): this;
39
+ whereNotNull(field: Field): this;
40
+ whereLike(field: Field, pattern: string): this;
41
+ whereNotLike(field: Field, pattern: string): this;
42
+ whereColumn(field: Field, column: Field): this;
43
+ whereColumn(field: Field, operator: string, column: Field): this;
44
+ orWhere(...args: any[]): this;
45
+ orWhereIn(field: Field, values: any[]): this;
46
+ orWhereNotIn(field: Field, values: any[]): this;
47
+ orWhereBetween(field: Field, range: [any, any]): this;
48
+ orWhereNotBetween(field: Field, range: [any, any]): this;
49
+ orWhereNull(field: Field): this;
50
+ orWhereNotNull(field: Field): this;
51
+ orWhereLike(field: Field, pattern: string): this;
52
+ orWhereNotLike(field: Field, pattern: string): this;
53
+ select(...fields: (Field | Field[])[]): this;
54
+ orderBy(field: Field, direction?: OrderByDirection): this;
55
+ groupBy(...fields: Field[]): this;
56
+ limit(value: number): this;
57
+ offset(value: number): this;
58
+ distinct(): this;
59
+ }
60
+ export {};