@thisisagile/easy 12.19.14 → 12.20.0

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.
@@ -1,14 +1,18 @@
1
- import { Gateway, Id, Json, List } from '../types';
1
+ import { Gateway, Id, Json, List, PageOptions } from '../types';
2
2
  import { QueryProvider } from '../data';
3
3
  import { Table } from './Table';
4
- export declare class TableGateway<T extends Table> extends Gateway {
4
+ export declare type TableOptions = PageOptions & {
5
+ provider?: QueryProvider;
6
+ };
7
+ export declare class TableGateway<T extends Table> extends Gateway<PageOptions> {
5
8
  readonly table: T;
6
9
  readonly provider: QueryProvider;
7
10
  constructor(table: T, provider?: QueryProvider);
8
- all(): Promise<List<Json>>;
9
- byId(id: Id): Promise<Json | undefined>;
10
- exists(id: Id): Promise<boolean>;
11
- add(item: Json): Promise<Json>;
12
- remove(id: Id): Promise<boolean>;
13
- update(item: Json): Promise<Json>;
11
+ protected provide: ({ provider }?: TableOptions) => QueryProvider;
12
+ all(options?: TableOptions): Promise<List<Json>>;
13
+ byId(id: Id, options?: TableOptions): Promise<Json | undefined>;
14
+ exists(id: Id, options?: TableOptions): Promise<boolean>;
15
+ add(item: Json, options?: TableOptions): Promise<Json>;
16
+ remove(id: Id, options?: TableOptions): Promise<boolean>;
17
+ update(item: Json, options?: TableOptions): Promise<Json>;
14
18
  }
@@ -9,30 +9,35 @@ class TableGateway extends types_1.Gateway {
9
9
  super();
10
10
  this.table = table;
11
11
  this.provider = provider;
12
+ this.provide = ({ provider } = {}) => provider ?? this.provider;
12
13
  }
13
- all() {
14
- return this.provider.query(this.table.select()).then(js => js.map(j => this.table.in(j)));
14
+ all(options) {
15
+ return this.provide(options)
16
+ .query(this.table.select())
17
+ .then(js => js.map(j => this.table.in(j)));
15
18
  }
16
- byId(id) {
17
- return this.provider
19
+ byId(id, options) {
20
+ return this.provide(options)
18
21
  .query(this.table.select().where(this.table.id.is(id)))
19
22
  .then(js => js.first())
20
23
  .then(j => (0, utils_1.ifDefined)(j, this.table.in(j)));
21
24
  }
22
- exists(id) {
25
+ exists(id, options) {
23
26
  return this.byId(id).then(j => (0, types_1.isDefined)(j));
24
27
  }
25
- add(item) {
26
- return this.provider
28
+ add(item, options) {
29
+ return this.provide(options)
27
30
  .query(this.table.insert(item))
28
31
  .then(js => (0, validation_1.when)(js.first()).not.isDefined.reject(`Could not add items with id ${item.id}`))
29
32
  .then(j => this.table.in(j));
30
33
  }
31
- remove(id) {
32
- return this.provider.command(this.table.delete().where(this.table.id.is(id))).then(() => true);
34
+ remove(id, options) {
35
+ return this.provide(options)
36
+ .command(this.table.delete().where(this.table.id.is(id)))
37
+ .then(() => true);
33
38
  }
34
- update(item) {
35
- return this.provider
39
+ update(item, options) {
40
+ return this.provide(options)
36
41
  .query(this.table.update(item).where(this.table.id.is(item.id)))
37
42
  .then(js => (0, validation_1.when)(js.first()).not.isDefined.reject(`Could not update item with id ${item.id}`))
38
43
  .then(j => this.table.in(j));
@@ -1 +1 @@
1
- {"version":3,"file":"TableGateway.js","sourceRoot":"","sources":["../../src/sql/TableGateway.ts"],"names":[],"mappings":";;;AAAA,oCAA8D;AAE9D,8CAAqC;AACrC,oCAAqC;AAGrC,MAAa,YAA8B,SAAQ,eAAO;IACxD,YAAqB,KAAQ,EAAW,WAAW,KAAK,CAAC,EAAE,CAAC,OAAO,EAAiB;QAClF,KAAK,EAAE,CAAC;QADW,UAAK,GAAL,KAAK,CAAG;QAAW,aAAQ,GAAR,QAAQ,CAAoC;IAEpF,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,CAAC,EAAM;QACT,OAAO,IAAI,CAAC,QAAQ;aACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACtD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;aACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,QAAQ;aACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC9B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;aAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,QAAQ;aACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC/D,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,iBAAI,EAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;aAC7F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AArCD,oCAqCC"}
1
+ {"version":3,"file":"TableGateway.js","sourceRoot":"","sources":["../../src/sql/TableGateway.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare type Text = {
6
6
  export declare const isText: (t?: unknown) => t is Text;
7
7
  export declare const asString: (t?: unknown, alt?: Get<Text>) => string;
8
8
  export declare const replaceAll: (origin: Text, search: Text, replace?: Text) => string;
9
- export declare const kebab: (s: string) => string;
9
+ export declare const kebab: (s?: string) => string;
10
10
  export declare class ToText implements Text {
11
11
  readonly subject: string;
12
12
  constructor(subject: string);
@@ -13,7 +13,7 @@ const asString = (t, alt = '') => ((0, exports.isText)(t) ? t : (0, Get_1.ofGet)
13
13
  exports.asString = asString;
14
14
  const replaceAll = (origin, search, replace = '') => (0, exports.asString)(origin).split((0, exports.asString)(search)).join((0, exports.asString)(replace));
15
15
  exports.replaceAll = replaceAll;
16
- const kebab = (s) => s
16
+ const kebab = (s = '') => s
17
17
  .replace(/[^a-z\d]+/gi, '-')
18
18
  .replace(/-$/, '')
19
19
  .replace(/^-/, '')
@@ -1 +1 @@
1
- {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/types/Text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/types/Text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "12.19.14",
3
+ "version": "12.20.0",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "12.19.14",
34
+ "@thisisagile/easy-test": "12.20.0",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.9",
37
37
  "@types/luxon": "3.1.0",
@@ -1,42 +1,50 @@
1
- import { Gateway, Id, isDefined, Json, List } from '../types';
1
+ import { Gateway, Id, isDefined, Json, List, PageOptions } from '../types';
2
2
  import { QueryProvider } from '../data';
3
3
  import { when } from '../validation';
4
4
  import { ifDefined } from '../utils';
5
5
  import { Table } from './Table';
6
6
 
7
- export class TableGateway<T extends Table> extends Gateway {
7
+ export type TableOptions = PageOptions & { provider?: QueryProvider };
8
+
9
+ export class TableGateway<T extends Table> extends Gateway<PageOptions> {
8
10
  constructor(readonly table: T, readonly provider = table.db.provide<QueryProvider>()) {
9
11
  super();
10
12
  }
11
13
 
12
- all(): Promise<List<Json>> {
13
- return this.provider.query(this.table.select()).then(js => js.map(j => this.table.in(j)));
14
+ protected provide = ({ provider }: TableOptions = {}): QueryProvider => provider ?? this.provider;
15
+
16
+ all(options?: TableOptions): Promise<List<Json>> {
17
+ return this.provide(options)
18
+ .query(this.table.select())
19
+ .then(js => js.map(j => this.table.in(j)));
14
20
  }
15
21
 
16
- byId(id: Id): Promise<Json | undefined> {
17
- return this.provider
22
+ byId(id: Id, options?: TableOptions): Promise<Json | undefined> {
23
+ return this.provide(options)
18
24
  .query(this.table.select().where(this.table.id.is(id)))
19
25
  .then(js => js.first())
20
26
  .then(j => ifDefined(j, this.table.in(j)));
21
27
  }
22
28
 
23
- exists(id: Id): Promise<boolean> {
29
+ exists(id: Id, options?: TableOptions): Promise<boolean> {
24
30
  return this.byId(id).then(j => isDefined(j));
25
31
  }
26
32
 
27
- add(item: Json): Promise<Json> {
28
- return this.provider
33
+ add(item: Json, options?: TableOptions): Promise<Json> {
34
+ return this.provide(options)
29
35
  .query(this.table.insert(item))
30
36
  .then(js => when(js.first()).not.isDefined.reject(`Could not add items with id ${item.id}`))
31
37
  .then(j => this.table.in(j));
32
38
  }
33
39
 
34
- remove(id: Id): Promise<boolean> {
35
- return this.provider.command(this.table.delete().where(this.table.id.is(id))).then(() => true);
40
+ remove(id: Id, options?: TableOptions): Promise<boolean> {
41
+ return this.provide(options)
42
+ .command(this.table.delete().where(this.table.id.is(id)))
43
+ .then(() => true);
36
44
  }
37
45
 
38
- update(item: Json): Promise<Json> {
39
- return this.provider
46
+ update(item: Json, options?: TableOptions): Promise<Json> {
47
+ return this.provide(options)
40
48
  .query(this.table.update(item).where(this.table.id.is(item.id)))
41
49
  .then(js => when(js.first()).not.isDefined.reject(`Could not update item with id ${item.id}`))
42
50
  .then(j => this.table.in(j));
package/src/types/Text.ts CHANGED
@@ -14,7 +14,7 @@ export const asString = (t?: unknown, alt: Get<Text> = ''): string => (isText(t)
14
14
 
15
15
  export const replaceAll = (origin: Text, search: Text, replace: Text = ''): string => asString(origin).split(asString(search)).join(asString(replace));
16
16
 
17
- export const kebab = (s: string): string =>
17
+ export const kebab = (s = ''): string =>
18
18
  s
19
19
  .replace(/[^a-z\d]+/gi, '-')
20
20
  .replace(/-$/, '')