@nx-ddd/firestore 19.0.0-preview.9 → 19.1.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.
- package/README.md +157 -81
- package/adapters/admin/admin.adapter.d.ts +2 -5
- package/adapters/admin/admin.adapter.js +2 -9
- package/adapters/admin/admin.adapter.js.map +1 -1
- package/adapters/base/base.adapter.d.ts +4 -3
- package/adapters/base/base.adapter.js +21 -5
- package/adapters/base/base.adapter.js.map +1 -1
- package/adapters/dayjs/dayjs.adatper.d.ts +15 -0
- package/adapters/dayjs/dayjs.adatper.js +44 -0
- package/adapters/dayjs/dayjs.adatper.js.map +1 -0
- package/adapters/dayjs/index.d.ts +1 -0
- package/adapters/dayjs/index.js +2 -0
- package/adapters/dayjs/index.js.map +1 -0
- package/adapters/firebase/firebase.adapter.d.ts +1 -5
- package/adapters/firebase/firebase.adapter.js +0 -10
- package/adapters/firebase/firebase.adapter.js.map +1 -1
- package/converter/converter.d.ts +5 -0
- package/converter/converter.js +15 -12
- package/converter/converter.js.map +1 -1
- package/decorators/decorators.d.ts +23 -13
- package/decorators/decorators.js +19 -13
- package/decorators/decorators.js.map +1 -1
- package/package.json +3 -16
- package/query/v2/query.d.ts +26 -7
- package/query/v2/query.js +31 -10
- package/query/v2/query.js.map +1 -1
- package/repository/repository.d.ts +42 -22
- package/repository/repository.js +102 -47
- package/repository/repository.js.map +1 -1
- package/testing/common.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAWpD,MAAM,eAAe;IACnB,MAAM,CAAC,aAAa,CAAyB,GAA6B,EAAE,MAAmB,EAAE,OAAyB;QACxH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,iCAAK,GAAG,CAAC,IAAI,EAAE,KAAE,EAAE,EAAE,GAAG,CAAC,EAAE,KAAG,MAAM,CAAC,CAAC;QACxE,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,cAAc;IAClB,YACqB,MAAmB,EACnB,OAAyB;QADzB,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAAkB;IAC1C,CAAC;IAEL,aAAa,CAAC,GAA0B;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,iCAC5B,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,KACT,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,IAA6B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,MAAS;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,UAA4B,MAAM,CAAC,gBAAgB,CAAC;IAEpD,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAA8B,MAAwB;IACnF,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -10,7 +10,13 @@ export declare const createDecorator: (type: FirestoreFieldType, options?: {
|
|
|
10
10
|
childType?: any;
|
|
11
11
|
}) => (nameOrProps?: {
|
|
12
12
|
name?: string;
|
|
13
|
-
} | string) => (target: any, propName: string) => void,
|
|
13
|
+
} | string) => (target: any, propName: string) => void, createPropsDecorator: (type: FirestoreFieldType, options?: {
|
|
14
|
+
childType?: any;
|
|
15
|
+
}) => (nameOrProps?: {
|
|
16
|
+
name?: string;
|
|
17
|
+
} | string) => (target: any, propName: string) => void, createClassDecorator: <Props extends {
|
|
18
|
+
name: string;
|
|
19
|
+
}>(type: string) => (nameOrProps: Props | string) => (target: any) => void, getAnnotations: (target: any) => FirestoreAnnotation[];
|
|
14
20
|
/** @deprecated use getAnnotations */
|
|
15
21
|
export declare function getFirestoreAnnotations(target: any): FirestoreAnnotation[];
|
|
16
22
|
export declare const ID: (nameOrProps?: {
|
|
@@ -43,35 +49,39 @@ export declare const Array: (childType?: () => any, props?: {
|
|
|
43
49
|
export declare const Reference: (nameOrProps?: {
|
|
44
50
|
name?: string;
|
|
45
51
|
} | string) => (target: any, propName: string) => void;
|
|
46
|
-
export declare
|
|
47
|
-
|
|
52
|
+
export declare function getCollection(target: any): string;
|
|
53
|
+
export declare const Firestore: {
|
|
54
|
+
Collection: (nameOrProps: string | {
|
|
55
|
+
name: string;
|
|
56
|
+
}) => (target: any) => void;
|
|
57
|
+
ID: (nameOrProps?: {
|
|
48
58
|
name?: string;
|
|
49
59
|
} | string) => (target: any, propName: string) => void;
|
|
50
|
-
|
|
60
|
+
String: (nameOrProps?: {
|
|
51
61
|
name?: string;
|
|
52
62
|
} | string) => (target: any, propName: string) => void;
|
|
53
|
-
|
|
63
|
+
Null: (nameOrProps?: {
|
|
54
64
|
name?: string;
|
|
55
65
|
} | string) => (target: any, propName: string) => void;
|
|
56
|
-
|
|
66
|
+
Geopoint: (nameOrProps?: {
|
|
57
67
|
name?: string;
|
|
58
68
|
} | string) => (target: any, propName: string) => void;
|
|
59
|
-
|
|
69
|
+
Boolean: (nameOrProps?: {
|
|
60
70
|
name?: string;
|
|
61
71
|
} | string) => (target: any, propName: string) => void;
|
|
62
|
-
|
|
72
|
+
Timestamp: (nameOrProps?: {
|
|
63
73
|
name?: string;
|
|
64
74
|
} | string) => (target: any, propName: string) => void;
|
|
65
|
-
|
|
75
|
+
Number: (nameOrProps?: {
|
|
66
76
|
name?: string;
|
|
67
77
|
} | string) => (target: any, propName: string) => void;
|
|
68
|
-
|
|
78
|
+
Map: (childType?: () => any, props?: {
|
|
69
79
|
name?: string;
|
|
70
80
|
}) => (target: any, propName: string) => void;
|
|
71
|
-
|
|
81
|
+
Array: (childType?: () => any, props?: {
|
|
72
82
|
name?: string;
|
|
73
83
|
}) => (target: any, propName: string) => void;
|
|
74
|
-
|
|
84
|
+
Reference: (nameOrProps?: {
|
|
75
85
|
name?: string;
|
|
76
86
|
} | string) => (target: any, propName: string) => void;
|
|
77
|
-
}
|
|
87
|
+
};
|
package/decorators/decorators.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { makeDecoratorFactories } from '@nx-ddd/core
|
|
1
|
+
import { makeDecoratorFactories } from '@nx-ddd/core';
|
|
2
2
|
export const FIRESTORE_ANNOTATIONS = 'firestore_annotations';
|
|
3
|
-
export const { createDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);
|
|
3
|
+
export const { createDecorator, createPropsDecorator, createClassDecorator, getAnnotations, } = makeDecoratorFactories((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), FIRESTORE_ANNOTATIONS);
|
|
4
4
|
/** @deprecated use getAnnotations */
|
|
5
5
|
export function getFirestoreAnnotations(target) {
|
|
6
6
|
return getAnnotations(target);
|
|
@@ -15,16 +15,22 @@ export const Number = createDecorator('number');
|
|
|
15
15
|
export const Map = (childType, props) => createDecorator('map', { childType })(props);
|
|
16
16
|
export const Array = (childType, props) => createDecorator('array', { childType })(props);
|
|
17
17
|
export const Reference = createDecorator('reference');
|
|
18
|
-
export
|
|
18
|
+
export function getCollection(target) {
|
|
19
|
+
const annotations = getAnnotations(target);
|
|
20
|
+
const annotation = annotations.find((annotation) => annotation.type === 'collection');
|
|
21
|
+
return annotation.name;
|
|
19
22
|
}
|
|
20
|
-
Firestore
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
export const Firestore = {
|
|
24
|
+
Collection: createClassDecorator('collection'),
|
|
25
|
+
ID: ID,
|
|
26
|
+
String: String,
|
|
27
|
+
Null: Null,
|
|
28
|
+
Geopoint: Geopoint,
|
|
29
|
+
Boolean: Boolean,
|
|
30
|
+
Timestamp: Timestamp,
|
|
31
|
+
Number: Number,
|
|
32
|
+
Map: Map,
|
|
33
|
+
Array: Array,
|
|
34
|
+
Reference: Reference,
|
|
35
|
+
};
|
|
30
36
|
//# sourceMappingURL=decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAW7D,MAAM,CAAC,MAAM,EACX,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,GACf,GAAG,sBAAsB,CAKxB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,EACnG,qBAAqB,CACtB,CAAC;AAEF,qCAAqC;AACrC,MAAM,UAAU,uBAAuB,CAAC,MAAW;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAqB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAW;IACvC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC3F,OAAQ,UAAkB,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU,EAAE,oBAAoB,CAAmB,YAAY,CAAC;IAChE,EAAE,EAAE,EAAE;IACN,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/firestore",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.1.0",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
6
|
"homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/firestore",
|
|
@@ -9,21 +9,8 @@
|
|
|
9
9
|
"url": "https://github.com/xx-machina/plaform.git"
|
|
10
10
|
},
|
|
11
11
|
"peerDependencies": {
|
|
12
|
-
"@
|
|
13
|
-
"@nx-ddd/
|
|
14
|
-
"@nx-ddd/core": "19.0.0-preview.9",
|
|
15
|
-
"axios": "^1.0.0",
|
|
16
|
-
"class-transformer": "^0.5.1",
|
|
17
|
-
"class-validator-extended": "^3.2.0",
|
|
18
|
-
"dayjs": "1.11.13",
|
|
19
|
-
"dexie": "^3.2.6",
|
|
20
|
-
"firebase": "^10.7.0",
|
|
21
|
-
"firebase-admin": "^12.1.1",
|
|
22
|
-
"lodash-es": "^4.17.15",
|
|
23
|
-
"reflect-metadata": "^0.1.13",
|
|
24
|
-
"rxjs": "^7.0.0",
|
|
25
|
-
"tslib": "^2.3.0",
|
|
26
|
-
"@angular/compiler": "19.1.4"
|
|
12
|
+
"@nx-ddd/common": "19.1.0",
|
|
13
|
+
"@nx-ddd/core": "19.1.0"
|
|
27
14
|
},
|
|
28
15
|
"dependencies": {},
|
|
29
16
|
"module": "./index.js",
|
package/query/v2/query.d.ts
CHANGED
|
@@ -4,18 +4,18 @@ import { FirestoreDAO } from '@nx-ddd/firestore/dao';
|
|
|
4
4
|
import { CollectionLike, DocumentReference } from '@nx-ddd/firestore/interfaces';
|
|
5
5
|
import { ExtractParams, FirestorePathBuilder } from '@nx-ddd/firestore/path-builder';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
7
|
-
type ColParam<T extends
|
|
8
|
-
type DocParam<T extends
|
|
7
|
+
type ColParam<T extends BaseFirestoreQuery<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
|
|
8
|
+
type DocParam<T extends BaseFirestoreQuery<any>> = ColParam<T> & {
|
|
9
9
|
id: string;
|
|
10
10
|
};
|
|
11
|
-
export declare abstract class
|
|
11
|
+
export declare abstract class BaseFirestoreQuery<Entity extends {
|
|
12
12
|
id: string;
|
|
13
13
|
} = any> {
|
|
14
|
-
abstract readonly
|
|
14
|
+
protected abstract readonly adapter: FirestoreAdapter;
|
|
15
15
|
protected abstract readonly converter: IFirestoreConverter<Entity>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
protected
|
|
16
|
+
abstract readonly collectionPath: string;
|
|
17
|
+
protected abstract pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
18
|
+
protected abstract dao: FirestoreDAO<Entity>;
|
|
19
19
|
count(paramMap?: ColParam<this>): Promise<number>;
|
|
20
20
|
changes(params: DocParam<this>): Observable<Entity>;
|
|
21
21
|
get(paramMap: DocParam<this>): Promise<Entity>;
|
|
@@ -24,4 +24,23 @@ export declare abstract class FirestoreQuery<Entity extends {
|
|
|
24
24
|
protected getChanges$ByDocument(doc: DocumentReference): Observable<Entity>;
|
|
25
25
|
protected getListChanges$ByCollectionLike(collection: CollectionLike): Observable<Entity[]>;
|
|
26
26
|
}
|
|
27
|
+
export declare abstract class FirestoreQuery<Entity extends {
|
|
28
|
+
id: string;
|
|
29
|
+
} = any> extends BaseFirestoreQuery<Entity> {
|
|
30
|
+
protected readonly adapter: FirestoreAdapter<any>;
|
|
31
|
+
abstract readonly collectionPath: string;
|
|
32
|
+
protected abstract readonly converter: IFirestoreConverter<Entity>;
|
|
33
|
+
get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
34
|
+
protected get dao(): FirestoreDAO<Entity, import("@nx-ddd/firestore/interfaces").ToFirestoreData<Entity, import("dayjs").Dayjs>>;
|
|
35
|
+
}
|
|
36
|
+
export declare function getFirestoreQuery<Entity extends {
|
|
37
|
+
id: string;
|
|
38
|
+
}>(entity: {
|
|
39
|
+
new (): Entity;
|
|
40
|
+
}, adapter?: FirestoreAdapter): BaseFirestoreQuery<Entity>;
|
|
41
|
+
export declare function injectFirestoreQuery<Entity extends {
|
|
42
|
+
id: string;
|
|
43
|
+
}>(entity: {
|
|
44
|
+
new (): Entity;
|
|
45
|
+
}): BaseFirestoreQuery<Entity>;
|
|
27
46
|
export {};
|
package/query/v2/query.js
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { inject, Injectable } from '@angular/core';
|
|
3
3
|
import { FirestoreAdapter } from '@nx-ddd/firestore/adapters';
|
|
4
|
+
import { getConverter } from '@nx-ddd/firestore/converter';
|
|
4
5
|
import { FirestoreDAO } from '@nx-ddd/firestore/dao';
|
|
6
|
+
import { getCollection } from '@nx-ddd/firestore/decorators/decorators';
|
|
5
7
|
import { pathBuilderFactory } from '@nx-ddd/firestore/path-builder';
|
|
6
8
|
import { catchError, lastValueFrom, map, NEVER, of, switchMap, take, tap } from 'rxjs';
|
|
7
|
-
|
|
8
|
-
constructor() {
|
|
9
|
-
this.adapter = inject(FirestoreAdapter);
|
|
10
|
-
}
|
|
11
|
-
get pathBuilder() {
|
|
12
|
-
return pathBuilderFactory(this.collectionPath);
|
|
13
|
-
}
|
|
14
|
-
get dao() {
|
|
15
|
-
return new FirestoreDAO(this.adapter, this.pathBuilder);
|
|
16
|
-
}
|
|
9
|
+
export class BaseFirestoreQuery {
|
|
17
10
|
count(paramMap) {
|
|
18
11
|
return this.dao.getCollection(paramMap).count();
|
|
19
12
|
}
|
|
@@ -52,9 +45,37 @@ let FirestoreQuery = class FirestoreQuery {
|
|
|
52
45
|
return NEVER;
|
|
53
46
|
}));
|
|
54
47
|
}
|
|
48
|
+
}
|
|
49
|
+
let FirestoreQuery = class FirestoreQuery extends BaseFirestoreQuery {
|
|
50
|
+
constructor() {
|
|
51
|
+
super(...arguments);
|
|
52
|
+
this.adapter = inject(FirestoreAdapter);
|
|
53
|
+
}
|
|
54
|
+
get pathBuilder() {
|
|
55
|
+
return pathBuilderFactory(this.collectionPath);
|
|
56
|
+
}
|
|
57
|
+
get dao() {
|
|
58
|
+
return new FirestoreDAO(this.adapter, this.pathBuilder);
|
|
59
|
+
}
|
|
55
60
|
};
|
|
56
61
|
FirestoreQuery = __decorate([
|
|
57
62
|
Injectable()
|
|
58
63
|
], FirestoreQuery);
|
|
59
64
|
export { FirestoreQuery };
|
|
65
|
+
export function getFirestoreQuery(entity, adapter = inject(FirestoreAdapter)) {
|
|
66
|
+
class FirestoreQuery extends BaseFirestoreQuery {
|
|
67
|
+
constructor(converter, collectionPath, pathBuilder, adapter, dao) {
|
|
68
|
+
super();
|
|
69
|
+
this.converter = converter;
|
|
70
|
+
this.collectionPath = collectionPath;
|
|
71
|
+
this.pathBuilder = pathBuilder;
|
|
72
|
+
this.adapter = adapter;
|
|
73
|
+
this.dao = dao;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return new FirestoreQuery(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter, new FirestoreDAO(adapter, pathBuilderFactory(getCollection(entity))));
|
|
77
|
+
}
|
|
78
|
+
export function injectFirestoreQuery(entity) {
|
|
79
|
+
return getFirestoreQuery(entity, inject(FirestoreAdapter));
|
|
80
|
+
}
|
|
60
81
|
//# sourceMappingURL=query.js.map
|
package/query/v2/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/query/v2/query.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAuB,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAuC,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzG,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKnG,MAAM,OAAgB,kBAAkB;IAOtC,KAAK,CAAC,QAAyB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAe,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,MAAsB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAa,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,GAAW,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,QAAwB;QAC1B,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,QAAyB;QAC5B,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,QAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,WAAW,CAAC,QAAyB;QACnC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAe,CAAC,CAAC,EAC1D,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAA;QACzD,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAES,qBAAqB,CAC7B,GAAsB;QAEtB,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAC/C,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAES,+BAA+B,CACvC,UAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAe,CAAC;QAC3C,OAAO,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CACnC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAC,GAAG,EAAC,EAAC,EAAE,EAAE;YACxD,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,GAAW,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC,EACH,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EACpC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAGM,IAAe,cAAc,GAA7B,MAAe,cAAkD,SAAQ,kBAA0B;IAAnG;;QACc,YAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAWxD,CAAC;IAPC,IAAI,WAAW;QACb,OAAO,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,IAAc,GAAG;QACf,OAAO,IAAI,YAAY,CAAS,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;CACF,CAAA;AAZqB,cAAc;IADnC,UAAU,EAAE;GACS,cAAc,CAYnC;;AAGD,MAAM,UAAU,iBAAiB,CAC/B,MAAyB,EACzB,UAA4B,MAAM,CAAC,gBAAgB,CAAC;IAGpD,MAAM,cAAe,SAAQ,kBAA0B;QACrD,YACqB,SAAsC,EACzC,cAAsB,EAC/B,WAA8C,EAClC,OAAyB,EACzB,GAAyB;YAC1C,KAAK,EAAE,CAAC;YALS,cAAS,GAAT,SAAS,CAA6B;YACzC,mBAAc,GAAd,cAAc,CAAQ;YAC/B,gBAAW,GAAX,WAAW,CAAmC;YAClC,YAAO,GAAP,OAAO,CAAkB;YACzB,QAAG,GAAH,GAAG,CAAsB;QACjC,CAAC;KACf;IAED,OAAO,IAAI,cAAc,CACvB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,CAAC,MAAM,CAAC,EACrB,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EACzC,OAAO,EACP,IAAI,YAAY,CAAS,OAAO,EAAE,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAA8B,MAAyB;IACzF,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -1,34 +1,43 @@
|
|
|
1
|
-
import { Repository } from '@nx-ddd/common/domain
|
|
1
|
+
import { Repository } from '@nx-ddd/common/domain';
|
|
2
2
|
import { FirestoreAdapter } from '../adapters/base';
|
|
3
3
|
import { IFirestoreConverter } from '../converter';
|
|
4
4
|
import { ExtractParams, FirestorePathBuilder } from '../path-builder';
|
|
5
5
|
import { CollectionReference, CollectionGroup, DocumentReference, DocumentSnapshot } from '../interfaces';
|
|
6
|
-
|
|
7
|
-
type
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
|
+
export type ExtractEntity<T extends BaseFirestoreRepository<any, any>> = T extends BaseFirestoreRepository<infer Entity, any> ? Entity : never;
|
|
8
|
+
type ColParam<T extends BaseFirestoreRepository<any, any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
|
|
9
|
+
type DocParam<T extends BaseFirestoreRepository<any, any>, TExtra = {}> = ColParam<T> & {
|
|
8
10
|
id: string;
|
|
9
|
-
};
|
|
10
|
-
export declare abstract class
|
|
11
|
+
} & TExtra;
|
|
12
|
+
export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
11
13
|
id: string;
|
|
12
|
-
}> extends Repository<Entity> {
|
|
14
|
+
}, TExtraParams = {}> extends Repository<Entity> {
|
|
13
15
|
abstract readonly collectionPath: string;
|
|
16
|
+
protected abstract readonly adapter: FirestoreAdapter;
|
|
14
17
|
protected abstract converter: IFirestoreConverter<Entity>;
|
|
15
|
-
|
|
16
|
-
protected adapter: FirestoreAdapter<any>;
|
|
18
|
+
abstract readonly pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
17
19
|
list(paramMap?: ColParam<this>, query?: any): Promise<Entity[]>;
|
|
20
|
+
listChanges(): Observable<Entity[]>;
|
|
18
21
|
count(paramMap?: ColParam<this>): Promise<number>;
|
|
19
|
-
get(paramMap?: DocParam<this>): Promise<Entity>;
|
|
20
|
-
save(entity: DocParam<this> & Entity): Promise<[Entity, boolean]>;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
get(paramMap?: DocParam<this, TExtraParams>): Promise<Entity>;
|
|
23
|
+
save(entity: DocParam<this, TExtraParams> & Entity): Promise<[Entity, boolean]>;
|
|
24
|
+
saveMany(entities: Entity[]): Promise<void>;
|
|
25
|
+
create(entity: DocParam<this, TExtraParams> & Entity): Promise<Entity>;
|
|
26
|
+
createMany(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<Entity[]>;
|
|
27
|
+
update(entity: DocParam<this, TExtraParams> & Partial<Entity>): Promise<void>;
|
|
28
|
+
updateMany(data: Partial<Entity>[]): Promise<void>;
|
|
29
|
+
delete(paramMap: DocParam<this, TExtraParams>): Promise<void>;
|
|
30
|
+
deleteMany(params: {
|
|
31
|
+
id: string;
|
|
32
|
+
}[]): Promise<number>;
|
|
33
|
+
deleteAll(): Promise<void>;
|
|
34
|
+
bulkWrite(entities: (DocParam<this, TExtraParams> & Entity)[], timestamps?: string[]): Promise<void>;
|
|
35
|
+
bulkCreate(entities: (DocParam<this, TExtraParams> & Entity)[]): Promise<void>;
|
|
36
|
+
bulkUpdate(entities: (DocParam<this, TExtraParams> & Partial<Entity>)[]): Promise<void>;
|
|
37
|
+
bulkDelete(paramMaps: DocParam<this, TExtraParams>[]): Promise<void>;
|
|
29
38
|
protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object>;
|
|
30
39
|
protected collectionGroup(): CollectionGroup<object>;
|
|
31
|
-
protected doc(paramMap: DocParam<this>): DocumentReference<object>;
|
|
40
|
+
protected doc(paramMap: DocParam<this, TExtraParams>): DocumentReference<object>;
|
|
32
41
|
protected genId: () => string;
|
|
33
42
|
protected _list(collection: CollectionReference<object>): Promise<Entity[]>;
|
|
34
43
|
protected _get(doc: DocumentReference<object>): Promise<Entity>;
|
|
@@ -37,9 +46,20 @@ export declare abstract class FirestoreRepository<Entity extends {
|
|
|
37
46
|
protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, import("../interfaces").DocumentData>>;
|
|
38
47
|
protected buildServerTimestampObject(keys?: string[]): {};
|
|
39
48
|
}
|
|
40
|
-
|
|
41
|
-
export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
49
|
+
export declare abstract class FirestoreRepository<Entity extends {
|
|
42
50
|
id: string;
|
|
43
|
-
}> extends
|
|
51
|
+
}, TExtraParams = {}> extends BaseFirestoreRepository<Entity, TExtraParams> {
|
|
52
|
+
protected readonly adapter: FirestoreAdapter<any>;
|
|
53
|
+
get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
44
54
|
}
|
|
55
|
+
export declare function getFirestoreRepository<Entity extends {
|
|
56
|
+
id: string;
|
|
57
|
+
}, TExtraParams = {}>(entity: {
|
|
58
|
+
new (): Entity;
|
|
59
|
+
}, adapter?: FirestoreAdapter): BaseFirestoreRepository<Entity, TExtraParams>;
|
|
60
|
+
export declare function injectFirestoreRepository<Entity extends {
|
|
61
|
+
id: string;
|
|
62
|
+
}, TExtraParams = {}>(entity: {
|
|
63
|
+
new (): Entity;
|
|
64
|
+
}): BaseFirestoreRepository<Entity, TExtraParams>;
|
|
45
65
|
export {};
|
package/repository/repository.js
CHANGED
|
@@ -1,96 +1,133 @@
|
|
|
1
1
|
import { __awaiter, __decorate } from "tslib";
|
|
2
2
|
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { Repository } from '@nx-ddd/common/domain
|
|
4
|
-
import { toObject } from '@nx-ddd/common
|
|
5
|
-
import { generateId } from '@nx-ddd/common
|
|
3
|
+
import { Repository } from '@nx-ddd/common/domain';
|
|
4
|
+
import { toObject } from '@nx-ddd/common';
|
|
5
|
+
import { generateId } from '@nx-ddd/common';
|
|
6
6
|
import { FirestoreAdapter } from '../adapters/base';
|
|
7
|
+
import { getConverter } from '../converter';
|
|
7
8
|
import { pathBuilderFactory } from '../path-builder';
|
|
8
|
-
|
|
9
|
+
import { getCollection } from '../decorators/decorators';
|
|
10
|
+
const toPromise = callback => new Promise((resolve, reject) => {
|
|
9
11
|
try {
|
|
10
12
|
resolve(callback());
|
|
11
13
|
}
|
|
12
14
|
catch (error) {
|
|
13
15
|
reject(error);
|
|
14
16
|
}
|
|
15
|
-
})
|
|
17
|
+
});
|
|
16
18
|
function doesExist(doc) {
|
|
17
19
|
if (typeof doc.exists === 'function') {
|
|
18
20
|
return doc.exists();
|
|
19
21
|
}
|
|
20
22
|
return doc.exists;
|
|
21
23
|
}
|
|
22
|
-
|
|
24
|
+
export class BaseFirestoreRepository extends Repository {
|
|
23
25
|
constructor() {
|
|
24
26
|
super(...arguments);
|
|
25
|
-
// protected adapter: FirestoreAdapter;
|
|
26
|
-
this.adapter = inject(FirestoreAdapter);
|
|
27
27
|
this.genId = () => generateId();
|
|
28
28
|
}
|
|
29
|
-
// protected pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
30
|
-
get pathBuilder() {
|
|
31
|
-
return pathBuilderFactory(this.collectionPath);
|
|
32
|
-
}
|
|
33
29
|
list(paramMap_1) {
|
|
34
30
|
return __awaiter(this, arguments, void 0, function* (paramMap, query = q => q) {
|
|
35
31
|
const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
|
|
36
32
|
return this._list(query(collection));
|
|
37
33
|
});
|
|
38
34
|
}
|
|
35
|
+
listChanges() {
|
|
36
|
+
throw new Error('Method not implemented.');
|
|
37
|
+
}
|
|
39
38
|
count(paramMap) {
|
|
40
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
40
|
return this.collection(paramMap).count();
|
|
42
41
|
});
|
|
43
42
|
}
|
|
44
43
|
get(paramMap) {
|
|
45
|
-
return
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
return this._get(this.doc(paramMap));
|
|
46
|
+
});
|
|
46
47
|
}
|
|
47
48
|
save(entity) {
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const docRef = this.doc(Object.assign(Object.assign({}, entity), { id: (entity === null || entity === void 0 ? void 0 : entity.id) || this.genId() }));
|
|
51
|
+
return this._save(docRef, entity);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
saveMany(entities) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
return this.bulkWrite(entities);
|
|
57
|
+
});
|
|
50
58
|
}
|
|
51
59
|
create(entity) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const obj = toObject(entity);
|
|
62
|
+
const id = (obj === null || obj === void 0 ? void 0 : obj.id) || this.genId();
|
|
63
|
+
return toPromise(() => this.doc(Object.assign(Object.assign({}, obj), { id }))).then(doc => this._create(doc, entity));
|
|
64
|
+
});
|
|
55
65
|
}
|
|
56
66
|
createMany(entities) {
|
|
57
|
-
return
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
return Promise.all(entities.map(entity => this.create(entity)));
|
|
69
|
+
});
|
|
58
70
|
}
|
|
59
71
|
update(entity) {
|
|
60
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
73
|
return this.doc(entity).update(this.adapter.flattenForUpdate(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])))).then(() => { });
|
|
62
74
|
});
|
|
63
75
|
}
|
|
76
|
+
updateMany(data) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
return this.bulkUpdate(data);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
64
81
|
delete(paramMap) {
|
|
65
82
|
return this.doc(paramMap).delete();
|
|
66
83
|
}
|
|
67
|
-
|
|
68
|
-
return
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
84
|
+
deleteMany(params) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
return params.reduce((batch, param) => {
|
|
87
|
+
const doc = this.doc(param).__ref;
|
|
88
|
+
return batch.delete(doc);
|
|
89
|
+
}, this.adapter.batch()).commit().then(() => params.length);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
deleteAll() {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
throw new Error('Method not implemented.');
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
bulkWrite(entities_1) {
|
|
98
|
+
return __awaiter(this, arguments, void 0, function* (entities, timestamps = []) {
|
|
99
|
+
return entities.reduce((batch, entity) => {
|
|
100
|
+
const doc = this.doc(entity).__ref;
|
|
101
|
+
return batch.set(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(timestamps)));
|
|
102
|
+
}, this.adapter.batch()).commit();
|
|
103
|
+
});
|
|
72
104
|
}
|
|
73
105
|
bulkCreate(entities) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
// TODO(nontangent): add maximum 500 record validation
|
|
108
|
+
return entities.reduce((batch, entity) => {
|
|
109
|
+
const doc = this.doc(entity).__ref;
|
|
110
|
+
return batch.create(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt'])));
|
|
111
|
+
}, this.adapter.batch()).commit();
|
|
112
|
+
});
|
|
80
113
|
}
|
|
81
114
|
bulkUpdate(entities) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
// TODO(nontangent): add maximum 500 record validation
|
|
117
|
+
return entities.reduce((batch, entity) => {
|
|
118
|
+
const doc = this.doc(entity).__ref;
|
|
119
|
+
return batch.update(doc, Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])));
|
|
120
|
+
}, this.adapter.batch()).commit();
|
|
121
|
+
});
|
|
87
122
|
}
|
|
88
123
|
bulkDelete(paramMaps) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
124
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
// MEMO(@nontangent): 500件以上の削除は未対応
|
|
126
|
+
return paramMaps.reduce((batch, paramMap) => {
|
|
127
|
+
const doc = this.doc(paramMap).__ref;
|
|
128
|
+
return batch.delete(doc);
|
|
129
|
+
}, this.adapter.batch()).commit();
|
|
130
|
+
});
|
|
94
131
|
}
|
|
95
132
|
collection(paramMap) {
|
|
96
133
|
const path = this.pathBuilder.collection(paramMap);
|
|
@@ -143,21 +180,39 @@ let FirestoreRepository = class FirestoreRepository extends Repository {
|
|
|
143
180
|
});
|
|
144
181
|
}
|
|
145
182
|
_set(doc, entity, isUpdate = true) {
|
|
183
|
+
const data = this.converter.toFirestore(entity);
|
|
146
184
|
return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(isUpdate ? ['updatedAt'] : [])), { merge: isUpdate }).then(() => doc.get());
|
|
147
185
|
}
|
|
148
186
|
buildServerTimestampObject(keys = ['createdAt', 'updatedAt']) {
|
|
149
187
|
return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
|
|
150
188
|
}
|
|
189
|
+
}
|
|
190
|
+
let FirestoreRepository = class FirestoreRepository extends BaseFirestoreRepository {
|
|
191
|
+
constructor() {
|
|
192
|
+
super(...arguments);
|
|
193
|
+
this.adapter = inject(FirestoreAdapter);
|
|
194
|
+
}
|
|
195
|
+
get pathBuilder() {
|
|
196
|
+
return pathBuilderFactory(this.collectionPath);
|
|
197
|
+
}
|
|
151
198
|
};
|
|
152
199
|
FirestoreRepository = __decorate([
|
|
153
200
|
Injectable()
|
|
154
201
|
], FirestoreRepository);
|
|
155
202
|
export { FirestoreRepository };
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
203
|
+
export function getFirestoreRepository(entity, adapter = inject(FirestoreAdapter)) {
|
|
204
|
+
class FirestoreRepository extends BaseFirestoreRepository {
|
|
205
|
+
constructor(converter, collectionPath, pathBuilder, adapter) {
|
|
206
|
+
super();
|
|
207
|
+
this.converter = converter;
|
|
208
|
+
this.collectionPath = collectionPath;
|
|
209
|
+
this.pathBuilder = pathBuilder;
|
|
210
|
+
this.adapter = adapter;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return new FirestoreRepository(getConverter(entity, adapter), getCollection(entity), pathBuilderFactory(getCollection(entity)), adapter);
|
|
214
|
+
}
|
|
215
|
+
export function injectFirestoreRepository(entity) {
|
|
216
|
+
return getFirestoreRepository(entity, inject(FirestoreAdapter));
|
|
217
|
+
}
|
|
163
218
|
//# sourceMappingURL=repository.js.map
|