@antelopejs/interface-database-decorators 0.0.4 → 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.
@@ -7,18 +7,14 @@ exports.default = (0, config_1.defineConfig)({
7
7
  name: "interface-database-decorators-test",
8
8
  cacheFolder: ".antelope/cache",
9
9
  modules: {
10
+ local: {
11
+ source: { type: "local", path: "." },
12
+ },
10
13
  mongodb: {
11
14
  source: {
12
15
  type: "package",
13
16
  package: "@antelopejs/mongodb",
14
- version: "1.0.0",
15
- },
16
- },
17
- database_decorators: {
18
- source: {
19
- type: "package",
20
- package: "@antelopejs/database-decorators",
21
- version: "1.0.0",
17
+ version: "1.2.1",
22
18
  },
23
19
  },
24
20
  api: {
@@ -39,7 +35,7 @@ exports.default = (0, config_1.defineConfig)({
39
35
  return {
40
36
  modules: {
41
37
  mongodb: {
42
- config: { url: mongod.getUri() },
38
+ config: { url: mongod.getUri(), database: "antelopejs_test" },
43
39
  },
44
40
  },
45
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"antelope.test.js","sourceRoot":"","sources":["../src/antelope.test.ts"],"names":[],"mappings":";;AAAA,8DAAiE;AACjE,2EAA+D;AAE/D,IAAI,MAAyB,CAAC;AAE9B,kBAAe,IAAA,qBAAY,EAAC;IAC1B,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE;QACP,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,OAAO;aACjB;SACF;QACD,mBAAmB,EAAE;YACnB,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE,OAAO;aACjB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,OAAO;aACjB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC/D;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,MAAM,8CAAiB,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;qBACjC;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"antelope.test.js","sourceRoot":"","sources":["../src/antelope.test.ts"],"names":[],"mappings":";;AAAA,8DAAiE;AACjE,2EAA+D;AAE/D,IAAI,MAAyB,CAAC;AAE9B,kBAAe,IAAA,qBAAY,EAAC;IAC1B,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE;QACP,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;SACrC;QACD,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,OAAO;aACjB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,OAAO;aACjB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aAC/D;SACF;KACF;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,MAAM,8CAAiB,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE;qBAC9D;iBACF;aACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF;CACF,CAAC,CAAC"}
package/dist/common.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { FieldType } from "@antelopejs/interface-database/schema";
1
2
  export type Constructible<T = object, A extends unknown[] = unknown[]> = new (...args: A) => T;
2
3
  export type DeepPartial<T> = {
3
4
  [K in keyof T]?: T[K] extends Array<infer U1> ? Array<DeepPartial<U1>> : T[K] extends ReadonlyArray<infer U2> ? ReadonlyArray<DeepPartial<U2>> : T[K] extends object ? DeepPartial<T[K]> : T[K];
@@ -15,6 +16,7 @@ export declare class DatumStaticMetadata {
15
16
  tableName?: string;
16
17
  schemaName?: string;
17
18
  readonly indexes: Record<string, Array<string>>;
19
+ readonly fields: Record<string, FieldType>;
18
20
  primary: string;
19
21
  generator?: DatumGenerator;
20
22
  addIndex(key: string, group: string): void;
package/dist/common.js CHANGED
@@ -10,6 +10,7 @@ class DatumStaticMetadata {
10
10
  tableName;
11
11
  schemaName;
12
12
  indexes = {};
13
+ fields = {};
13
14
  primary = "_id";
14
15
  generator;
15
16
  addIndex(key, group) {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AA8CA,kCAsBC;AA1CD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;IAEtB,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IACrD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAElC,QAAQ,CAAC,GAAW,EAAE,KAAa;QACjC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;;AAdH,kDAeC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAC;IAClE,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAiDA,kCAsBC;AA3CD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;IAEtB,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAElC,QAAQ,CAAC,GAAW,EAAE,KAAa;QACjC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;;AAfH,kDAgBC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAC;IAClE,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,2 +1,10 @@
1
- import { type SchemaOptions } from "@antelopejs/interface-database";
2
- export declare function CreateDatabaseSchemaInstance(schemaId: string, instanceId?: string, options?: SchemaOptions): Promise<void>;
1
+ /**
2
+ * Registers a schema with the database adapter and runs any fixtures.
3
+ *
4
+ * Reads the table classes registered for `schemaId` via `@RegisterTable`,
5
+ * builds a `SchemaDefinition`, constructs the `Schema` (which the adapter
6
+ * provisions), then inserts fixtures for any table that declares one.
7
+ *
8
+ * @param schemaId Schema id matching the `@RegisterTable(_, schemaId)` calls
9
+ */
10
+ export declare function RegisterSchema(schemaId: string): Promise<void>;
package/dist/database.js CHANGED
@@ -3,19 +3,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CreateDatabaseSchemaInstance = CreateDatabaseSchemaInstance;
6
+ exports.RegisterSchema = RegisterSchema;
7
7
  const node_assert_1 = __importDefault(require("node:assert"));
8
8
  const interface_database_1 = require("@antelopejs/interface-database");
9
9
  const common_1 = require("./common");
10
10
  const common_2 = require("./modifiers/common");
11
11
  const schema_1 = require("./schema");
12
- async function CreateDatabaseSchemaInstance(schemaId, instanceId, options) {
12
+ /**
13
+ * Registers a schema with the database adapter and runs any fixtures.
14
+ *
15
+ * Reads the table classes registered for `schemaId` via `@RegisterTable`,
16
+ * builds a `SchemaDefinition`, constructs the `Schema` (which the adapter
17
+ * provisions), then inserts fixtures for any table that declares one.
18
+ *
19
+ * @param schemaId Schema id matching the `@RegisterTable(_, schemaId)` calls
20
+ */
21
+ async function RegisterSchema(schemaId) {
13
22
  const tables = (0, schema_1.getTablesForSchema)(schemaId);
14
23
  (0, node_assert_1.default)(tables, `No tables registered for schema '${schemaId}'`);
15
24
  const definition = buildSchemaDefinition(tables);
16
- const schema = new interface_database_1.Schema(schemaId, definition, options);
17
- await schema.createInstance(instanceId);
18
- await insertAllFixtureData(schema, instanceId, tables);
25
+ const schema = new interface_database_1.Schema(schemaId, definition);
26
+ await insertAllFixtureData(schema, tables);
19
27
  }
20
28
  function buildSchemaDefinition(tables) {
21
29
  const definition = {};
@@ -27,21 +35,24 @@ function buildSchemaDefinition(tables) {
27
35
  fields: fields.length === 1 && fields[0] === group ? undefined : fields,
28
36
  };
29
37
  }
30
- definition[tableName] = { fields: {}, indexes };
38
+ definition[tableName] = {
39
+ fields: metadata.fields,
40
+ indexes,
41
+ };
31
42
  }
32
43
  return definition;
33
44
  }
34
- async function insertAllFixtureData(schema, instanceId, tables) {
45
+ async function insertAllFixtureData(schema, tables) {
35
46
  await Promise.all(Object.entries(tables).map(([tableName, tableClass]) => {
36
47
  const metadata = (0, common_1.getMetadata)(tableClass, common_1.DatumStaticMetadata);
37
- return insertFixtureData(schema, instanceId, tableName, tableClass, metadata.generator);
48
+ return insertFixtureData(schema, tableName, tableClass, metadata.generator);
38
49
  }));
39
50
  }
40
- async function insertFixtureData(schema, instanceId, tableName, tableClass, generator) {
51
+ async function insertFixtureData(schema, tableName, tableClass, generator) {
41
52
  if (!generator) {
42
53
  return;
43
54
  }
44
- const count = await schema.instance(instanceId).table(tableName).count();
55
+ const count = await schema.instance().table(tableName).count();
45
56
  if (count > 0) {
46
57
  return;
47
58
  }
@@ -51,7 +62,7 @@ async function insertFixtureData(schema, instanceId, tableName, tableClass, gene
51
62
  return;
52
63
  }
53
64
  const payload = rows.length === 1 ? rows[0] : rows;
54
- await schema.instance(instanceId).table(tableName).insert(payload);
65
+ await schema.instance().table(tableName).insert(payload);
55
66
  }
56
67
  function toFixtureRows(fixtureData, tableClass) {
57
68
  const entries = fixtureData
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type RequestContext } from "@antelopejs/interface-api";
2
2
  import { type Class } from "@antelopejs/interface-core/decorators";
3
3
  import type * as DatabaseDev from "@antelopejs/interface-database";
4
+ import { type InstanceId } from "@antelopejs/interface-database";
4
5
  import { type Constructible, type DeepPartial } from "./common";
5
6
  export type DataModel<T = any> = {
6
7
  readonly schemaName: string;
@@ -11,6 +12,19 @@ export type DataModel<T = any> = {
11
12
  fromDatabase(obj: any): T | undefined;
12
13
  fromPlainData(obj: any): T;
13
14
  };
15
+ export type FieldError = {
16
+ field: string;
17
+ message: string;
18
+ };
19
+ export type ValidationResult = {
20
+ ok: true;
21
+ } | {
22
+ ok: false;
23
+ errors: FieldError[];
24
+ };
25
+ export type ValidateInputOptions = {
26
+ partial?: boolean;
27
+ };
14
28
  /**
15
29
  * Utility Class factory to create a basic Data Model with 1 table.
16
30
  *
@@ -52,7 +66,7 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
52
66
  * @param options Insert options
53
67
  * @returns Insert result
54
68
  */
55
- insert(obj: DeepPartial<T> | Array<DeepPartial<T>>): Promise<string[]>;
69
+ insert(obj: DeepPartial<T> | Array<DeepPartial<T>>, options?: ValidateOptions): Promise<string[]>;
56
70
  /**
57
71
  * Updates a single element in the table.
58
72
  *
@@ -61,8 +75,8 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
61
75
  * @param options Update options
62
76
  * @returns Update result
63
77
  */
64
- update(id: string, obj: DeepPartial<T>): Promise<number>;
65
- update(obj: DeepPartial<T>): Promise<number>;
78
+ update(id: string, obj: DeepPartial<T>, options?: ValidateOptions): Promise<number>;
79
+ update(obj: DeepPartial<T>, options?: ValidateOptions): Promise<number>;
66
80
  /**
67
81
  * Delete an element from the table.
68
82
  *
@@ -93,9 +107,17 @@ export declare function BasicDataModel<T extends object>(dataType: Constructible
93
107
  * @returns Database-ready data
94
108
  */
95
109
  toDatabase(obj: any): Record<string, any>;
110
+ /**
111
+ * Validates a plain object against every io-ts codec attached via `@Field`.
112
+ * Pass `{ partial: true }` to skip fields not present on `obj` (patch semantics).
113
+ */
114
+ validate(obj: unknown, options?: ValidateInputOptions): ValidationResult;
115
+ };
116
+ export type ValidateOptions = {
117
+ validate?: boolean;
96
118
  };
97
- export declare function GetModel<M extends InstanceType<DataModel>>(cl: DataModel & Class<M>, instanceId?: string): M;
119
+ export declare function GetModel<M extends InstanceType<DataModel>>(cl: DataModel & Class<M>, instanceId?: InstanceId): M;
98
120
  export declare const Model: (cl: DataModel<any> & Class<{
99
121
  readonly database: DatabaseDev.SchemaInstance<any>;
100
122
  readonly table: DatabaseDev.Table<any>;
101
- }>, instanceIdOrCallback?: string | ((ctx: RequestContext) => string | undefined) | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
123
+ }>, instanceIdOrCallback?: DatabaseDev.InstanceId | ((ctx: RequestContext) => InstanceId | undefined) | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
package/dist/model.js CHANGED
@@ -12,6 +12,16 @@ const decorators_1 = require("@antelopejs/interface-core/decorators");
12
12
  const interface_database_1 = require("@antelopejs/interface-database");
13
13
  const common_1 = require("./common");
14
14
  const common_2 = require("./modifiers/common");
15
+ function isCodec(type) {
16
+ return (typeof type === "object" &&
17
+ type !== null &&
18
+ !Array.isArray(type) &&
19
+ typeof type.decode === "function");
20
+ }
21
+ function decodeFieldError(field, result) {
22
+ const message = result.left.map((e) => e.message).find(Boolean) ?? `invalid ${field}`;
23
+ return { field, message };
24
+ }
15
25
  /**
16
26
  * Utility Class factory to create a basic Data Model with 1 table.
17
27
  *
@@ -56,6 +66,29 @@ function BasicDataModel(dataType, tableName) {
56
66
  const instance = obj instanceof dataType ? obj : Model.fromPlainData(obj);
57
67
  return (0, common_2.toDatabase)(instance);
58
68
  }
69
+ /**
70
+ * Validates a plain object against every io-ts codec attached via `@Field`.
71
+ * Pass `{ partial: true }` to skip fields not present on `obj` (patch semantics).
72
+ */
73
+ static validate(obj, options) {
74
+ const fields = metadata.fields;
75
+ const errors = [];
76
+ const partial = options?.partial === true;
77
+ const record = typeof obj === "object" && obj !== null
78
+ ? obj
79
+ : undefined;
80
+ for (const [field, type] of Object.entries(fields)) {
81
+ if (!isCodec(type))
82
+ continue;
83
+ if (partial && (!record || !(field in record)))
84
+ continue;
85
+ const result = type.decode(record?.[field]);
86
+ if (result._tag === "Left") {
87
+ errors.push(decodeFieldError(field, result));
88
+ }
89
+ }
90
+ return errors.length === 0 ? { ok: true } : { ok: false, errors };
91
+ }
59
92
  /**
60
93
  * AQL Table reference.
61
94
  */
@@ -100,7 +133,18 @@ function BasicDataModel(dataType, tableName) {
100
133
  * @param options Insert options
101
134
  * @returns Insert result
102
135
  */
103
- insert(obj) {
136
+ async insert(obj, options) {
137
+ if (options?.validate) {
138
+ const entries = Array.isArray(obj) ? obj : [obj];
139
+ const allErrors = [];
140
+ for (const entry of entries) {
141
+ const result = Model.validate(entry);
142
+ if (!result.ok)
143
+ allErrors.push(...result.errors);
144
+ }
145
+ if (allErrors.length > 0)
146
+ throw makeValidationError(allErrors);
147
+ }
104
148
  const converter = (entry) => {
105
149
  const instance = Model.fromPlainData(entry);
106
150
  (0, common_2.triggerEvent)(instance, "insert");
@@ -110,15 +154,24 @@ function BasicDataModel(dataType, tableName) {
110
154
  .insert(Array.isArray(obj) ? obj.map(converter) : converter(obj))
111
155
  .run();
112
156
  }
113
- update(obj, data) {
114
- if (typeof obj === "string") {
115
- const instance = Model.fromPlainData(data);
157
+ async update(idOrObj, objOrOptions, options) {
158
+ const parsed = parseUpdateArgs(idOrObj, objOrOptions, options);
159
+ if (parsed.options?.validate) {
160
+ const result = Model.validate(parsed.data, { partial: true });
161
+ if (!result.ok)
162
+ throw makeValidationError(result.errors);
163
+ }
164
+ if (parsed.id !== undefined) {
165
+ const instance = Model.fromPlainData(parsed.data);
116
166
  (0, common_2.triggerEvent)(instance, "update");
117
- return this.table.get(obj).update(Model.toDatabase(instance)).run();
167
+ return this.table
168
+ .get(parsed.id)
169
+ .update(Model.toDatabase(instance))
170
+ .run();
118
171
  }
119
- const instance = Model.fromPlainData(obj);
172
+ const instance = Model.fromPlainData(parsed.data);
120
173
  (0, common_2.triggerEvent)(instance, "update");
121
- const id = obj[primaryKey];
174
+ const id = parsed.data[primaryKey];
122
175
  (0, node_assert_1.default)(id !== undefined, "Missing primary key in object update.");
123
176
  return this.table.get(id).update(Model.toDatabase(instance)).run();
124
177
  }
@@ -134,18 +187,47 @@ function BasicDataModel(dataType, tableName) {
134
187
  };
135
188
  }
136
189
  const modelCache = new Map();
190
+ const UNDEFINED_INSTANCE_KEY = Symbol("undefined-instance");
191
+ function cacheKeyOf(instanceId) {
192
+ if (instanceId === undefined)
193
+ return UNDEFINED_INSTANCE_KEY;
194
+ if (typeof instanceId === "symbol")
195
+ return instanceId;
196
+ return instanceId;
197
+ }
198
+ function makeValidationError(errors) {
199
+ const summary = errors.map((e) => `${e.field} (${e.message})`).join(", ");
200
+ const err = new Error(`validation failed: ${summary}`);
201
+ err.errors = errors;
202
+ return err;
203
+ }
204
+ function parseUpdateArgs(idOrObj, objOrOptions, options) {
205
+ if (typeof idOrObj === "string") {
206
+ return {
207
+ id: idOrObj,
208
+ data: objOrOptions,
209
+ options,
210
+ };
211
+ }
212
+ return {
213
+ data: idOrObj,
214
+ options: objOrOptions,
215
+ };
216
+ }
137
217
  function GetModel(cl, instanceId) {
138
218
  if (!modelCache.has(cl)) {
139
- modelCache.set(cl, {});
219
+ modelCache.set(cl, new Map());
140
220
  }
141
- const cache = modelCache.get(cl) ?? {};
142
- const cacheKey = instanceId ?? "";
143
- if (cache[cacheKey])
144
- return cache[cacheKey];
221
+ const cache = modelCache.get(cl);
222
+ (0, node_assert_1.default)(cache);
223
+ const key = cacheKeyOf(instanceId);
224
+ const cached = cache.get(key);
225
+ if (cached)
226
+ return cached;
145
227
  const schema = interface_database_1.Schema.get(cl.schemaName);
146
228
  (0, node_assert_1.default)(schema, `Schema not found for '${cl.schemaName}'`);
147
229
  const model = new cl(schema.instance(instanceId));
148
- cache[cacheKey] = model;
230
+ cache.set(key, model);
149
231
  return model;
150
232
  }
151
233
  exports.Model = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index, cl, instanceIdOrCallback) => {
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/dist/table.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type ClassDecorator } from "@antelopejs/interface-core/decorators";
2
+ import type { FieldType } from "@antelopejs/interface-database/schema";
2
3
  import { type Constructible } from "./common";
3
4
  import { MixinSymbol, type MixinType } from "./modifiers/common";
4
5
  type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -43,6 +44,10 @@ export declare class Table {
43
44
  export declare const Index: (options?: {
44
45
  group?: string;
45
46
  } | undefined) => import("@antelopejs/interface-core/decorators").PropertyDecorator;
47
+ /**
48
+ * Database Table Field type decorator.
49
+ */
50
+ export declare const Field: (type: FieldType) => import("@antelopejs/interface-core/decorators").PropertyDecorator;
46
51
  type AwaitableArray<T> = Promise<T | T[]> | T | T[];
47
52
  /**
48
53
  * Database Table class decorator to create default data on table creation.
package/dist/table.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Fixture = exports.Index = exports.Table = exports.TableRefSymbol = exports.TableMetaSymbol = void 0;
3
+ exports.Fixture = exports.Field = exports.Index = exports.Table = exports.TableRefSymbol = exports.TableMetaSymbol = void 0;
4
4
  const decorators_1 = require("@antelopejs/interface-core/decorators");
5
5
  const common_1 = require("./common");
6
6
  const common_2 = require("./modifiers/common");
@@ -51,6 +51,13 @@ exports.Index = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, op
51
51
  const metadata = (0, common_1.getMetadata)(target.constructor, common_1.DatumStaticMetadata);
52
52
  metadata.addIndex(propertyKey, options?.group || propertyKey);
53
53
  });
54
+ /**
55
+ * Database Table Field type decorator.
56
+ */
57
+ exports.Field = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, type) => {
58
+ const metadata = (0, common_1.getMetadata)(target.constructor, common_1.DatumStaticMetadata);
59
+ metadata.fields[propertyKey] = type;
60
+ });
54
61
  /**
55
62
  * Database Table class decorator to create default data on table creation.
56
63
  *
package/dist/table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;AAAA,sEAI+C;AAC/C,qCAAgF;AAChF,+CAAiE;AAQpD,QAAA,eAAe,GAAG,MAAM,EAAE,CAAC;AAC3B,QAAA,cAAc,GAAG,MAAM,EAAE,CAAC;AAgCvC;;GAEG;AACH,MAAa,KAAK;IAGhB;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAKhB,GAAG,MAAS;QAQZ,4GAA4G;QAC5G,MAAM,CAAC,GAAG,MAAM,eAAgB,SAAS,IAAY;SAAG,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM;aACvB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,UAAU,EAAE,CAAC;aAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,oBAAW,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpB,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAY,CAAC,CAAC;IAChB,CAAC;CACF;AAzCD,sBAyCC;AAED;;;;;;;GAOG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,OAA4B,EAAE,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CACP,WAAW,EACnB,OAAO,EAAE,KAAK,IAAY,WAAW,CACtC,CAAC;AACJ,CAAC,CACF,CAAC;AAGF;;;;GAIG;AACU,QAAA,OAAO,GAEK,IAAA,+BAAkB,EAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAwD,CAAC;AAChF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":";;;AAAA,sEAI+C;AAE/C,qCAAgF;AAChF,+CAAiE;AAQpD,QAAA,eAAe,GAAG,MAAM,EAAE,CAAC;AAC3B,QAAA,cAAc,GAAG,MAAM,EAAE,CAAC;AAgCvC;;GAEG;AACH,MAAa,KAAK;IAGhB;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAKhB,GAAG,MAAS;QAQZ,4GAA4G;QAC5G,MAAM,CAAC,GAAG,MAAM,eAAgB,SAAS,IAAY;SAAG,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM;aACvB,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,UAAU,EAAE,CAAC;aAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,oBAAW,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpB,CAAC,CAAC,SAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAY,CAAC,CAAC;IAChB,CAAC;CACF;AAzCD,sBAyCC;AAED;;;;;;;GAOG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,OAA4B,EAAE,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,CACP,WAAW,EACnB,OAAO,EAAE,KAAK,IAAY,WAAW,CACtC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACU,QAAA,KAAK,GAAG,IAAA,kCAAqB,EACxC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAe,EAAE,EAAE;IACvC,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,WAAW,EAAE,4BAAmB,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,CAAC,WAAqB,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CACF,CAAC;AAGF;;;;GAIG;AACU,QAAA,OAAO,GAEK,IAAA,+BAAkB,EAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,MAAM,EAAE,4BAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,GAAG,SAAwD,CAAC;AAChF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { FieldType } from "@antelopejs/interface-database/schema";
2
+ export type DecodeLeft = {
3
+ _tag: "Left";
4
+ left: Array<{
5
+ value: unknown;
6
+ context: unknown[];
7
+ message?: string;
8
+ }>;
9
+ };
10
+ export type DecodeRight<T> = {
11
+ _tag: "Right";
12
+ right: T;
13
+ };
14
+ export type DecodeResult<T> = DecodeLeft | DecodeRight<T>;
15
+ export type TestCodec<T> = {
16
+ readonly _A: T;
17
+ readonly _O: T;
18
+ readonly _I: unknown;
19
+ readonly name: string;
20
+ is(u: unknown): u is T;
21
+ encode(a: T): unknown;
22
+ decode(u: unknown): DecodeResult<T>;
23
+ };
24
+ export declare function makeCodec<T>(name: string, guard: (u: unknown) => u is T): TestCodec<T>;
25
+ export declare const stringCodec: TestCodec<string>;
26
+ export declare const numberCodec: TestCodec<number>;
27
+ export declare function asFieldType(codec: TestCodec<unknown>): FieldType;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.numberCodec = exports.stringCodec = void 0;
4
+ exports.makeCodec = makeCodec;
5
+ exports.asFieldType = asFieldType;
6
+ function makeCodec(name, guard) {
7
+ return {
8
+ _A: undefined,
9
+ _O: undefined,
10
+ _I: undefined,
11
+ name,
12
+ is: guard,
13
+ encode: (a) => a,
14
+ decode: (u) => guard(u)
15
+ ? { _tag: "Right", right: u }
16
+ : {
17
+ _tag: "Left",
18
+ left: [{ value: u, context: [], message: `not ${name}` }],
19
+ },
20
+ };
21
+ }
22
+ exports.stringCodec = makeCodec("string", (u) => typeof u === "string");
23
+ exports.numberCodec = makeCodec("number", (u) => typeof u === "number");
24
+ function asFieldType(codec) {
25
+ return codec;
26
+ }
27
+ //# sourceMappingURL=codec_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec_helpers.js","sourceRoot":"","sources":["../../src/tests/codec_helpers.ts"],"names":[],"mappings":";;;AAmBA,8BAmBC;AAWD,kCAEC;AAhCD,SAAgB,SAAS,CACvB,IAAY,EACZ,KAA6B;IAE7B,OAAO;QACL,EAAE,EAAE,SAAyB;QAC7B,EAAE,EAAE,SAAyB;QAC7B,EAAE,EAAE,SAAoB;QACxB,IAAI;QACJ,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,KAAK,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;YAC7B,CAAC,CAAC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;aAC1D;KACR,CAAC;AACJ,CAAC;AAEY,QAAA,WAAW,GAAsB,SAAS,CACrD,QAAQ,EACR,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C,CAAC;AACW,QAAA,WAAW,GAAsB,SAAS,CACrD,QAAQ,EACR,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C,CAAC;AAEF,SAAgB,WAAW,CAAC,KAAyB;IACnD,OAAO,KAA6B,CAAC;AACvC,CAAC"}