@casekit/orm 0.0.1-alpha.12 → 0.0.1-alpha.13

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 (227) hide show
  1. package/package.json +13 -3
  2. package/.env +0 -2
  3. package/.eslintrc.cjs +0 -69
  4. package/.github/actions/ci-setup/action.yml +0 -19
  5. package/.github/dependabot.yml +0 -12
  6. package/.github/workflows/ci.yml +0 -119
  7. package/.github/workflows/dependabot.yml +0 -26
  8. package/.github/workflows/semgrep.yml +0 -24
  9. package/.prettierrc.cjs +0 -11
  10. package/.vscode/tasks.json +0 -28
  11. package/codecov.yml +0 -7
  12. package/lib/orm.query.test.d.ts +0 -2
  13. package/lib/orm.query.test.d.ts.map +0 -1
  14. package/lib/orm.query.test.js +0 -22
  15. package/lib/orm.query.test.js.map +0 -1
  16. package/src/Connection.ts +0 -65
  17. package/src/errors.ts +0 -18
  18. package/src/index.ts +0 -16
  19. package/src/logger.ts +0 -3
  20. package/src/migrate/commands/implode.ts +0 -46
  21. package/src/migrate/index.ts +0 -1
  22. package/src/migrate/migrator.ts +0 -24
  23. package/src/migrate/sql/createExtensionsSql.test.ts +0 -26
  24. package/src/migrate/sql/createExtensionsSql.ts +0 -16
  25. package/src/migrate/sql/createForeignKeyConstraintSql.test.ts +0 -50
  26. package/src/migrate/sql/createForeignKeyConstraintSql.ts +0 -44
  27. package/src/migrate/sql/createSchemasSql.test.ts +0 -81
  28. package/src/migrate/sql/createSchemasSql.ts +0 -15
  29. package/src/migrate/sql/createTableSql.properties.ts +0 -38
  30. package/src/migrate/sql/createTableSql.test.ts +0 -74
  31. package/src/migrate/sql/createTableSql.ts +0 -53
  32. package/src/migrate/sql/createUniqueConstraintSql.ts +0 -27
  33. package/src/migrate/sql/dropSchemasSql.ts +0 -15
  34. package/src/migrate/sql/dropTableSql.ts +0 -13
  35. package/src/orm.query.test.ts +0 -28
  36. package/src/orm.ts +0 -370
  37. package/src/pull/index.ts +0 -1
  38. package/src/pull/introspect/getForeignKeys.ts +0 -64
  39. package/src/pull/introspect/getPrimaryKeys.ts +0 -26
  40. package/src/pull/introspect/getTables.ts +0 -51
  41. package/src/pull/introspect/getUniqueConstraints.ts +0 -39
  42. package/src/pull/parse/parseCreateUniqueIndexStatement.test.ts +0 -14
  43. package/src/pull/parse/parseCreateUniqueIndexStatement.ts +0 -19
  44. package/src/pull/pull.ts +0 -78
  45. package/src/pull/render/renderModel.test.ts +0 -144
  46. package/src/pull/render/renderModel.ts +0 -141
  47. package/src/pull/render/renderModelsIndex.ts +0 -24
  48. package/src/pull/render/renderRelations.ts +0 -77
  49. package/src/pull/render/renderRelationsIndex.ts +0 -24
  50. package/src/pull/types/ColumnMeta.ts +0 -10
  51. package/src/pull/types/ForeignKey.ts +0 -6
  52. package/src/pull/types/PrimaryKey.ts +0 -6
  53. package/src/pull/types/UniqueConstraint.ts +0 -8
  54. package/src/pull/util/format.ts +0 -17
  55. package/src/pull/util/quote.ts +0 -7
  56. package/src/pull/util/unquote.ts +0 -9
  57. package/src/queries/clauses/IncludeClause.ts +0 -39
  58. package/src/queries/clauses/LateralByClause.ts +0 -4
  59. package/src/queries/clauses/ReturningClause.ts +0 -7
  60. package/src/queries/clauses/SelectClause.ts +0 -7
  61. package/src/queries/clauses/WhereClause.ts +0 -16
  62. package/src/queries/clauses/helpers/OptionalColumn.ts +0 -18
  63. package/src/queries/clauses/helpers/OptionalParams.ts +0 -14
  64. package/src/queries/clauses/helpers/RequiredColumn.ts +0 -8
  65. package/src/queries/clauses/helpers/RequiredParams.ts +0 -14
  66. package/src/queries/clauses/include/IncludedRelationModel.ts +0 -13
  67. package/src/queries/clauses/include/IncludedRelationName.ts +0 -11
  68. package/src/queries/clauses/include/IncludedRelationQuery.ts +0 -20
  69. package/src/queries/clauses/where/buildWhereClause.ts +0 -121
  70. package/src/queries/clauses/where/buildWhereClauses.test.ts +0 -145
  71. package/src/queries/clauses/where/buildWhereClauses.ts +0 -45
  72. package/src/queries/clauses/where/operators.ts +0 -13
  73. package/src/queries/clauses/where/types/WhereClauseValue.ts +0 -39
  74. package/src/queries/count/buildCount.ts +0 -77
  75. package/src/queries/count/countToSql.ts +0 -66
  76. package/src/queries/count/tests/count.test.ts +0 -35
  77. package/src/queries/count/types/BaseCountParams.ts +0 -11
  78. package/src/queries/count/types/CountBuilder.ts +0 -45
  79. package/src/queries/count/types/CountParams.ts +0 -27
  80. package/src/queries/count.ts +0 -33
  81. package/src/queries/create/buildCreate.ts +0 -67
  82. package/src/queries/create/createResultSchema.ts +0 -24
  83. package/src/queries/create/createToSql.ts +0 -44
  84. package/src/queries/create/tests/createMany.varied-keys.test.ts +0 -28
  85. package/src/queries/create/tests/createOne.test-d.ts +0 -116
  86. package/src/queries/create/tests/createOne.test.ts +0 -197
  87. package/src/queries/create/types/BaseCreateManyParams.ts +0 -7
  88. package/src/queries/create/types/BaseCreateOneParams.ts +0 -7
  89. package/src/queries/create/types/CreateManyParams.ts +0 -15
  90. package/src/queries/create/types/CreateManyResult.ts +0 -17
  91. package/src/queries/create/types/CreateOneParams.ts +0 -22
  92. package/src/queries/create/types/CreateOneResult.ts +0 -17
  93. package/src/queries/createMany.ts +0 -38
  94. package/src/queries/createOne.ts +0 -27
  95. package/src/queries/delete/buildDelete.ts +0 -56
  96. package/src/queries/delete/deleteResultSchema.ts +0 -23
  97. package/src/queries/delete/deleteToSql.ts +0 -48
  98. package/src/queries/delete/tests/deleteOne.test.ts +0 -108
  99. package/src/queries/delete/types/BaseDeleteParams.ts +0 -9
  100. package/src/queries/delete/types/DeleteManyResult.ts +0 -16
  101. package/src/queries/delete/types/DeleteOneResult.ts +0 -16
  102. package/src/queries/delete/types/DeleteParams.ts +0 -12
  103. package/src/queries/deleteMany.ts +0 -33
  104. package/src/queries/deleteOne.ts +0 -32
  105. package/src/queries/find/buildFind.ts +0 -138
  106. package/src/queries/find/findResultSchema.ts +0 -32
  107. package/src/queries/find/findToSql.test.ts +0 -123
  108. package/src/queries/find/findToSql.ts +0 -141
  109. package/src/queries/find/getIncludedManyToManyRelations.ts +0 -49
  110. package/src/queries/find/getIncludedOneToManyRelations.ts +0 -44
  111. package/src/queries/find/tests/findMany.include.test.ts +0 -107
  112. package/src/queries/find/tests/findMany.limit.test-d.ts +0 -75
  113. package/src/queries/find/tests/findMany.limit.test.ts +0 -176
  114. package/src/queries/find/tests/findMany.nullable-relations.test.ts +0 -127
  115. package/src/queries/find/tests/findMany.orderBy.test-d.ts +0 -84
  116. package/src/queries/find/tests/findMany.orderBy.test.ts +0 -184
  117. package/src/queries/find/tests/findMany.select.test-d.ts +0 -117
  118. package/src/queries/find/tests/findMany.select.test.ts +0 -188
  119. package/src/queries/find/tests/findMany.too-deep.test-d.ts +0 -154
  120. package/src/queries/find/tests/findMany.where.test-d.ts +0 -85
  121. package/src/queries/find/tests/findMany.where.test.ts +0 -76
  122. package/src/queries/find/tests/middleware.find.where.test.ts +0 -467
  123. package/src/queries/find/types/BaseFindParams.ts +0 -18
  124. package/src/queries/find/types/FindBuilder.ts +0 -73
  125. package/src/queries/find/types/FindManyParams.ts +0 -24
  126. package/src/queries/find/types/FindManyResult.ts +0 -13
  127. package/src/queries/find/types/FindOneParams.ts +0 -17
  128. package/src/queries/find/types/FindOneResult.ts +0 -50
  129. package/src/queries/findMany.ts +0 -134
  130. package/src/queries/findOne.ts +0 -30
  131. package/src/queries/middleware/Middleware.ts +0 -53
  132. package/src/queries/middleware/ValuesMiddleware.ts +0 -9
  133. package/src/queries/middleware/WhereMiddleware.ts +0 -16
  134. package/src/queries/update/buildUpdate.ts +0 -76
  135. package/src/queries/update/tests/updateOne.test.ts +0 -118
  136. package/src/queries/update/types/BaseUpdateParams.ts +0 -10
  137. package/src/queries/update/types/UpdateManyResult.ts +0 -16
  138. package/src/queries/update/types/UpdateOneResult.ts +0 -16
  139. package/src/queries/update/types/UpdateParams.ts +0 -14
  140. package/src/queries/update/types/UpdateValues.ts +0 -12
  141. package/src/queries/update/updateResultSchema.ts +0 -23
  142. package/src/queries/update/updateToSql.ts +0 -43
  143. package/src/queries/updateMany.ts +0 -33
  144. package/src/queries/updateOne.ts +0 -33
  145. package/src/queries/util/hasConditions.test.ts +0 -36
  146. package/src/queries/util/hasConditions.ts +0 -14
  147. package/src/queries/util/rowToObject.test.ts +0 -76
  148. package/src/queries/util/rowToObject.ts +0 -13
  149. package/src/queries/util/tableAlias.test.ts +0 -20
  150. package/src/queries/util/tableAlias.ts +0 -10
  151. package/src/schema/populate/composeMiddleware.ts +0 -51
  152. package/src/schema/populate/populateConfiguration.ts +0 -48
  153. package/src/schema/populate/populateModel.ts +0 -98
  154. package/src/schema/populate/suggestedColumnSchema.ts +0 -62
  155. package/src/schema/types/base/BaseColumn.ts +0 -10
  156. package/src/schema/types/base/BaseConfiguration.ts +0 -14
  157. package/src/schema/types/base/BaseModel.ts +0 -12
  158. package/src/schema/types/base/BaseModels.ts +0 -3
  159. package/src/schema/types/base/BaseOrm.ts +0 -8
  160. package/src/schema/types/base/BaseRelation.ts +0 -19
  161. package/src/schema/types/base/BaseRelations.ts +0 -3
  162. package/src/schema/types/constraints/ForeignKey.ts +0 -13
  163. package/src/schema/types/constraints/UniqueConstraint.ts +0 -9
  164. package/src/schema/types/helpers/ColumnName.ts +0 -6
  165. package/src/schema/types/helpers/ColumnType.ts +0 -23
  166. package/src/schema/types/helpers/Columns.ts +0 -3
  167. package/src/schema/types/helpers/HasDefault.ts +0 -11
  168. package/src/schema/types/helpers/IsNullable.ts +0 -7
  169. package/src/schema/types/helpers/IsProvided.ts +0 -8
  170. package/src/schema/types/helpers/IsSerial.ts +0 -10
  171. package/src/schema/types/helpers/ModelName.ts +0 -6
  172. package/src/schema/types/loose/LooseColumnDefinition.ts +0 -80
  173. package/src/schema/types/loose/LooseModelDefinition.ts +0 -47
  174. package/src/schema/types/loose/LooseModelDefinitions.ts +0 -3
  175. package/src/schema/types/loose/LooseRelationDefinition.ts +0 -10
  176. package/src/schema/types/loose/LooseRelationsDefinition.ts +0 -8
  177. package/src/schema/types/loose/LooseRelationsDefinitions.ts +0 -7
  178. package/src/schema/types/postgres/DataType.ts +0 -65
  179. package/src/schema/types/relations/ManyToManyRelation.ts +0 -15
  180. package/src/schema/types/relations/ManyToOneRelation.ts +0 -14
  181. package/src/schema/types/relations/OneToManyRelation.ts +0 -12
  182. package/src/schema/types/strict/ColumnDefinition.ts +0 -81
  183. package/src/schema/types/strict/ModelDefinition.ts +0 -47
  184. package/src/schema/types/strict/ModelDefinitions.ts +0 -3
  185. package/src/schema/types/strict/RelationDefinition.ts +0 -13
  186. package/src/schema/types/strict/RelationsDefinition.ts +0 -8
  187. package/src/schema/types/strict/RelationsDefinitions.ts +0 -7
  188. package/src/schema/validate/validateConfiguration.ts +0 -9
  189. package/src/schema/validate/validateModel.ts +0 -32
  190. package/src/sql/SQLStatement.test.ts +0 -112
  191. package/src/sql/SQLStatement.ts +0 -86
  192. package/src/sql/index.ts +0 -2
  193. package/src/sql/sql.ts +0 -47
  194. package/src/test/db/index.ts +0 -27
  195. package/src/test/db/models/foo.model.ts +0 -24
  196. package/src/test/db/models/foo.relations.ts +0 -4
  197. package/src/test/db/models/post.model.ts +0 -34
  198. package/src/test/db/models/post.relations.ts +0 -21
  199. package/src/test/db/models/tenant.model.ts +0 -14
  200. package/src/test/db/models/tenant.relations.ts +0 -22
  201. package/src/test/db/models/tenantUser.model.ts +0 -23
  202. package/src/test/db/models/tenantUser.relations.ts +0 -15
  203. package/src/test/db/models/user.model.ts +0 -29
  204. package/src/test/db/models/user.relations.ts +0 -38
  205. package/src/test/db/models.ts +0 -15
  206. package/src/test/db/relations.ts +0 -13
  207. package/src/test/gen/column.ts +0 -39
  208. package/src/test/gen/index.ts +0 -2
  209. package/src/test/gen/model.ts +0 -58
  210. package/src/test/gen/sqldate.ts +0 -8
  211. package/src/test/globalSetup.ts +0 -6
  212. package/src/test/seed/index.ts +0 -75
  213. package/src/test/util/withRollback.ts +0 -18
  214. package/src/test/util/withTransaction.ts +0 -19
  215. package/src/types/ColumnName.ts +0 -6
  216. package/src/types/ColumnType.ts +0 -20
  217. package/src/types/Configuration.ts +0 -21
  218. package/src/types/ModelType.ts +0 -20
  219. package/src/types/util/DeepRequired.ts +0 -7
  220. package/src/types/util/DisallowExtraKeys.ts +0 -5
  221. package/src/types/util/NonEmptyArray.ts +0 -1
  222. package/src/types/util/Simplify.ts +0 -8
  223. package/src/util/ensureArray.ts +0 -4
  224. package/src/util/interleave.test.ts +0 -35
  225. package/src/util/interleave.ts +0 -8
  226. package/tsconfig.json +0 -18
  227. package/vitest.config.ts +0 -15
@@ -1,154 +0,0 @@
1
- import { assertType, describe, test } from "vitest";
2
-
3
- import { db } from "../../../test/db";
4
- import { $and, $gt, $ilike, $not, $or } from "../../clauses/where/operators";
5
-
6
- describe("findMany", () => {
7
- test("up to a point, deeply nested clauses don't cause type errors", async () => {
8
- assertType(
9
- await db.findMany("user", {
10
- select: ["username"],
11
- include: {
12
- tenants: {
13
- select: ["name"],
14
- orderBy: ["name"],
15
- include: {
16
- tenancies: {
17
- select: ["id"],
18
- where: { createdAt: { [$gt]: new Date() } },
19
- },
20
- users: {
21
- select: ["username", "id"],
22
- where: {
23
- id: "abc",
24
- deletedAt: { [$gt]: new Date() },
25
- },
26
- include: {
27
- tenants: {
28
- select: ["name"],
29
- where: {
30
- [$or]: [
31
- { name: "a" },
32
- { name: "b" },
33
- {
34
- [$and]: [
35
- {
36
- [$or]: [
37
- { name: "c" },
38
- { name: "d" },
39
- ],
40
- },
41
- {
42
- [$or]: [
43
- { name: "e" },
44
- { name: "f" },
45
- ],
46
- },
47
- ],
48
- },
49
- ],
50
- },
51
- include: {
52
- tenancies: {
53
- select: ["id"],
54
- where: {
55
- [$or]: [
56
- {
57
- createdAt: {
58
- [$gt]: new Date(),
59
- },
60
- },
61
- {
62
- [$and]: [
63
- {
64
- createdAt: {
65
- [$not]: null,
66
- },
67
- },
68
- ],
69
- },
70
- ],
71
- },
72
- include: {
73
- tenant: {
74
- select: ["id"],
75
- where: {
76
- name: "abc",
77
- },
78
- include: {
79
- users: {
80
- select: [
81
- "username",
82
- ],
83
- where: {
84
- username: {
85
- [$ilike]:
86
- "Russell",
87
- },
88
- },
89
- },
90
- posts: {
91
- select: [
92
- "id",
93
- "title",
94
- ],
95
- where: {
96
- publishedAt:
97
- {
98
- [$not]: null,
99
- },
100
- },
101
- include: {
102
- author: {
103
- select: [
104
- "id",
105
- "username",
106
- ],
107
- include:
108
- {
109
- posts: {
110
- select: [
111
- "id",
112
- "title",
113
- ],
114
- where: {
115
- publishedAt:
116
- {
117
- [$not]: null,
118
- },
119
- },
120
- include:
121
- {
122
- author: {
123
- select: [
124
- "id",
125
- "username",
126
- ],
127
- },
128
- },
129
- },
130
- },
131
- where: {
132
- username:
133
- "Russell",
134
- },
135
- },
136
- },
137
- },
138
- },
139
- },
140
- },
141
- },
142
- },
143
- orderBy: ["name"],
144
- },
145
- },
146
- orderBy: ["joinedAt"],
147
- },
148
- },
149
- },
150
- },
151
- }),
152
- );
153
- });
154
- });
@@ -1,85 +0,0 @@
1
- import { assertType, describe, test } from "vitest";
2
-
3
- import { db } from "../../../test/db";
4
- import { $gte, $ilike, $like, $not, $or } from "../../clauses/where/operators";
5
-
6
- describe("findMany", () => {
7
- test("where clauses can only refer to fields that exist on the model", async () => {
8
- assertType(
9
- await db.findMany("post", {
10
- select: ["id", "title", "content"],
11
- where: {
12
- title: "I like cats",
13
- // @ts-expect-error 'wrong' is not a field on the post model
14
- wrong: 2,
15
- },
16
- }),
17
- );
18
- });
19
-
20
- test("where clauses allow conditions to be grouped using logical operators", async () => {
21
- assertType(
22
- await db.findMany("post", {
23
- select: ["id", "title", "content"],
24
- where: {
25
- title: { [$like]: "I like %" },
26
- [$or]: [
27
- { title: { [$ilike]: "%dogs" } },
28
- { title: { [$ilike]: "%cats" } },
29
- ],
30
- },
31
- }),
32
- );
33
- });
34
-
35
- test("where clauses can be applied to N:1 relations", async () => {
36
- assertType(
37
- await db.findMany("post", {
38
- select: ["id", "title", "content"],
39
- include: {
40
- author: {
41
- select: ["id", "username"],
42
- where: {
43
- username: "Russell",
44
- joinedAt: { [$gte]: new Date("2021-01-01") },
45
- },
46
- },
47
- },
48
- }),
49
- );
50
- });
51
-
52
- test("where clauses can be applied to 1:N relations", async () => {
53
- assertType(
54
- await db.findMany("user", {
55
- select: ["id", "username"],
56
- include: {
57
- posts: {
58
- select: ["id", "title"],
59
- where: {
60
- publishedAt: { [$gte]: new Date("2021-01-01") },
61
- },
62
- },
63
- },
64
- }),
65
- );
66
- });
67
-
68
- test("where clauses can be applied to N:N relations", async () => {
69
- assertType(
70
- await db.findMany("user", {
71
- select: ["id", "username"],
72
- include: {
73
- tenants: {
74
- select: ["id", "name"],
75
- where: {
76
- [$not]: {
77
- name: { [$like]: "% (Archived)" },
78
- },
79
- },
80
- },
81
- },
82
- }),
83
- );
84
- });
85
- });
@@ -1,76 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
-
3
- import { db } from "../../../test/db";
4
- import { seed } from "../../../test/seed";
5
- import { $in } from "../../clauses/where/operators";
6
-
7
- describe("findMany", () => {
8
- test("it can apply where clauses to queries", async () => {
9
- await db.transact(
10
- async (db) => {
11
- await seed(db, {
12
- users: [
13
- {
14
- username: "Russell",
15
- tenants: [{ name: "Popova Park", posts: 6 }],
16
- },
17
- ],
18
- });
19
- const result = await db.findMany("post", {
20
- select: ["title"],
21
- where: { title: { [$in]: ["Post a", "Post c"] } },
22
- orderBy: ["title"],
23
- });
24
- expect(result).toEqual([
25
- { title: "Post a" },
26
- { title: "Post c" },
27
- ]);
28
- },
29
- { rollback: true },
30
- );
31
- });
32
-
33
- test("clauses applied to N:1 models apply to the whole query", async () => {
34
- await db.transact(
35
- async (db) => {
36
- await seed(db, {
37
- users: [
38
- {
39
- username: "Russell",
40
- tenants: [{ name: "Popova Park", posts: 2 }],
41
- },
42
- ],
43
- });
44
- expect(
45
- await db.findMany("post", {
46
- select: ["title"],
47
- include: {
48
- author: {
49
- select: ["username"],
50
- where: { username: "Fairooz" },
51
- },
52
- },
53
- orderBy: ["title"],
54
- }),
55
- ).toEqual([]);
56
-
57
- expect(
58
- await db.findMany("post", {
59
- select: ["title"],
60
- include: {
61
- author: {
62
- select: ["username"],
63
- where: { username: "Russell" },
64
- },
65
- },
66
- orderBy: ["title"],
67
- }),
68
- ).toEqual([
69
- { title: "Post a", author: { username: "Russell" } },
70
- { title: "Post b", author: { username: "Russell" } },
71
- ]);
72
- },
73
- { rollback: true },
74
- );
75
- });
76
- });