@casekit/orm 0.0.1-alpha.19 → 0.0.1-alpha.20

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.
@@ -8,11 +8,17 @@ import { IncludedRelationName } from "../../clauses/include/IncludedRelationName
8
8
  import { IncludedRelationQuery } from "../../clauses/include/IncludedRelationQuery";
9
9
  import { FindManyParams } from "./FindManyParams";
10
10
  import { FindOneParams } from "./FindOneParams";
11
+ /**
12
+ * this is a mess and needs refactoring
13
+ */
11
14
  export type FindOneResult<Models extends LooseModelDefinitions, Relations extends LooseRelationsDefinitions<Models>, M extends ModelName<Models>, Q extends FindManyParams<Models, Relations, M> | FindOneParams<Models, Relations, M>> = Readonly<Simplify<{
12
15
  [C in Extract<Q["select"][number], string>]: ColumnType<Models, M, C>;
13
16
  } & (undefined extends Q["include"] ? unknown : {
14
17
  [R in IncludedRelationName<Models, Relations, M, Q>]: Relations[M][R] extends {
15
18
  type: "N:1";
19
+ optional: true;
20
+ } ? FindOneResult<Models, Relations, IncludedRelationModel<Models, Relations, M, R>, IncludedRelationQuery<Models, Relations, M, R, Q>> | undefined : Relations[M][R] extends {
21
+ type: "N:1";
16
22
  } ? FindOneResult<Models, Relations, IncludedRelationModel<Models, Relations, M, R>, IncludedRelationQuery<Models, Relations, M, R, Q>> : FindOneResult<Models, Relations, IncludedRelationModel<Models, Relations, M, R>, IncludedRelationQuery<Models, Relations, M, R, Q>>[];
17
23
  })>>;
18
24
  //# sourceMappingURL=FindOneResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FindOneResult.d.ts","sourceRoot":"","sources":["../../../../src/queries/find/types/FindOneResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,aAAa,CACrB,MAAM,SAAS,qBAAqB,EACpC,SAAS,SAAS,yBAAyB,CAAC,MAAM,CAAC,EACnD,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAC3B,CAAC,SACK,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GACpC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IACzC,QAAQ,CACR,QAAQ,CACJ;KACK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,UAAU,CACnD,MAAM,EACN,CAAC,EACD,CAAC,CACJ;CACJ,GAAG,CAAC,SAAS,SAAS,CAAC,CAAC,SAAS,CAAC,GAC7B,OAAO,GACP;KACK,CAAC,IAAI,oBAAoB,CACtB,MAAM,EACN,SAAS,EACT,CAAC,EACD,CAAC,CACJ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,GACrC,aAAa,CACT,MAAM,EACN,SAAS,EACT,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9C,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD,GACD,aAAa,CACT,MAAM,EACN,SAAS,EACT,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9C,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD,EAAE;CACZ,CAAC,CACX,CACJ,CAAC"}
1
+ {"version":3,"file":"FindOneResult.d.ts","sourceRoot":"","sources":["../../../../src/queries/find/types/FindOneResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,aAAa,CACrB,MAAM,SAAS,qBAAqB,EACpC,SAAS,SAAS,yBAAyB,CAAC,MAAM,CAAC,EACnD,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAC3B,CAAC,SACK,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,GACpC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IACzC,QAAQ,CACR,QAAQ,CACJ;KACK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,UAAU,CACnD,MAAM,EACN,CAAC,EACD,CAAC,CACJ;CACJ,GAAG,CAAC,SAAS,SAAS,CAAC,CAAC,SAAS,CAAC,GAC7B,OAAO,GACP;KACK,CAAC,IAAI,oBAAoB,CACtB,MAAM,EACN,SAAS,EACT,CAAC,EACD,CAAC,CAEJ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACxB,IAAI,EAAE,KAAK,CAAC;QACZ,QAAQ,EAAE,IAAI,CAAC;KAClB,GAMO,aAAa,CACL,MAAM,EACN,SAAS,EACT,qBAAqB,CACjB,MAAM,EACN,SAAS,EACT,CAAC,EACD,CAAC,CACJ,EACD,qBAAqB,CACjB,MAAM,EACN,SAAS,EACT,CAAC,EACD,CAAC,EACD,CAAC,CACJ,CACJ,GACD,SAAS,GACf,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAClB,IAAI,EAAE,KAAK,CAAC;KACf,GAED,aAAa,CACT,MAAM,EACN,SAAS,EACT,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9C,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD,GAED,aAAa,CACT,MAAM,EACN,SAAS,EACT,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9C,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD,EAAE;CACd,CAAC,CACX,CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@casekit/orm",
3
- "version": "0.0.1-alpha.19",
3
+ "version": "0.0.1-alpha.20",
4
4
  "description": "A simple ORM",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -9,6 +9,9 @@ import { IncludedRelationQuery } from "../../clauses/include/IncludedRelationQue
9
9
  import { FindManyParams } from "./FindManyParams";
10
10
  import { FindOneParams } from "./FindOneParams";
11
11
 
12
+ /**
13
+ * this is a mess and needs refactoring
14
+ */
12
15
  export type FindOneResult<
13
16
  Models extends LooseModelDefinitions,
14
17
  Relations extends LooseRelationsDefinitions<Models>,
@@ -32,19 +35,51 @@ export type FindOneResult<
32
35
  Relations,
33
36
  M,
34
37
  Q
35
- >]: Relations[M][R] extends { type: "N:1" }
36
- ? FindOneResult<
37
- Models,
38
- Relations,
39
- IncludedRelationModel<Models, Relations, M, R>,
40
- IncludedRelationQuery<Models, Relations, M, R, Q>
41
- >
42
- : FindOneResult<
43
- Models,
44
- Relations,
45
- IncludedRelationModel<Models, Relations, M, R>,
46
- IncludedRelationQuery<Models, Relations, M, R, Q>
47
- >[];
38
+ // for each optional N:1 relation
39
+ >]: Relations[M][R] extends {
40
+ type: "N:1";
41
+ optional: true;
42
+ }
43
+ ? // if its foreign key is optional, the included relation
44
+ // needs to be optional too
45
+ // TODO this currently doesn't work for compound primary keys
46
+ // need to figure out a way to make it work,
47
+ // and also to refactor this mess to be more readable
48
+ | FindOneResult<
49
+ Models,
50
+ Relations,
51
+ IncludedRelationModel<
52
+ Models,
53
+ Relations,
54
+ M,
55
+ R
56
+ >,
57
+ IncludedRelationQuery<
58
+ Models,
59
+ Relations,
60
+ M,
61
+ R,
62
+ Q
63
+ >
64
+ >
65
+ | undefined
66
+ : Relations[M][R] extends {
67
+ type: "N:1";
68
+ }
69
+ ? // otherwise the included relation is required
70
+ FindOneResult<
71
+ Models,
72
+ Relations,
73
+ IncludedRelationModel<Models, Relations, M, R>,
74
+ IncludedRelationQuery<Models, Relations, M, R, Q>
75
+ >
76
+ : // for other types of relation, the included relation is an array
77
+ FindOneResult<
78
+ Models,
79
+ Relations,
80
+ IncludedRelationModel<Models, Relations, M, R>,
81
+ IncludedRelationQuery<Models, Relations, M, R, Q>
82
+ >[];
48
83
  })
49
84
  >
50
85
  >;