@nx-ddd/firestore 5.15.0 → 6.0.4
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/adapters/admin/admin.adapter.d.ts +9 -4
- package/adapters/admin/admin.adapter.js +33 -8
- package/adapters/admin/admin.adapter.js.map +1 -1
- package/adapters/base/base.adapter.d.ts +13 -3
- package/adapters/base/base.adapter.js +129 -3
- package/adapters/base/base.adapter.js.map +1 -1
- package/adapters/firebase/firebase.adapter.d.ts +7 -4
- package/adapters/firebase/firebase.adapter.js +17 -4
- package/adapters/firebase/firebase.adapter.js.map +1 -1
- package/converter/converter.js +2 -3
- package/converter/converter.js.map +1 -1
- package/dao/firestore.dao.d.ts +5 -7
- package/dao/firestore.dao.js +1 -2
- package/dao/firestore.dao.js.map +1 -1
- package/decorators/decorators.d.ts +40 -3
- package/decorators/decorators.js +26 -5
- package/decorators/decorators.js.map +1 -1
- package/index.d.ts +0 -2
- package/index.js +0 -2
- package/index.js.map +1 -1
- package/interfaces/interfaces.d.ts +6 -0
- package/package.json +12 -20
- package/path-builder/path-builder.d.ts +3 -3
- package/path-builder/path-builder.js +10 -4
- package/path-builder/path-builder.js.map +1 -1
- package/query/firestore.query.d.ts +6 -1
- package/query/firestore.query.js +12 -5
- package/query/firestore.query.js.map +1 -1
- package/repository/decorator.d.ts +2 -2
- package/repository/decorator.js.map +1 -1
- package/repository/repository.d.ts +1 -4
- package/repository/repository.js +21 -15
- package/repository/repository.js.map +1 -1
- package/testing/common.d.ts +5 -4
- package/testing/common.js +1 -1
- package/testing/repository.js +4 -6
- package/testing/repository.js.map +1 -1
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import { firestore } from 'firebase-admin';
|
|
3
3
|
import { DocumentReference, FirestoreCollection, FirestoreCollectionGroup } from '../../interfaces';
|
|
4
|
-
import { FirestoreAdapter, QueryFn } from '../base';
|
|
5
|
-
export declare class
|
|
4
|
+
import { FirestoreAdapter, QueryFn, WhereFilterOp } from '../base';
|
|
5
|
+
export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
|
|
6
6
|
protected firestore: firestore.Firestore;
|
|
7
7
|
get FieldValue(): typeof firestore.FieldValue;
|
|
8
8
|
get Timestamp(): typeof firestore.Timestamp;
|
|
9
|
-
|
|
10
|
-
protected
|
|
9
|
+
get FieldPath(): typeof firestore.FieldPath;
|
|
10
|
+
protected isTimestamp(v: any): v is firestore.Timestamp;
|
|
11
|
+
protected isFieldValue(v: any): v is firestore.FieldValue;
|
|
12
|
+
protected isDate(v: any): v is dayjs.Dayjs;
|
|
11
13
|
protected convertDateToTimestamp(date: dayjs.Dayjs): firestore.Timestamp;
|
|
12
14
|
protected convertTimestampToDate(timestamp: firestore.Timestamp): dayjs.Dayjs;
|
|
13
15
|
doc(path: string): DocumentReference<any, firestore.DocumentReference>;
|
|
@@ -15,7 +17,10 @@ export declare class FirestoreAdminAdapter extends FirestoreAdapter<dayjs.Dayjs>
|
|
|
15
17
|
collectionGroup(collectionId: string): FirestoreCollectionGroup<any>;
|
|
16
18
|
runTransaction(fn: any): Promise<unknown>;
|
|
17
19
|
query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any;
|
|
20
|
+
where<Data>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<Data>;
|
|
18
21
|
orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
|
|
19
22
|
limit<Data>(n: number): QueryFn<Data>;
|
|
20
23
|
batch(): firestore.WriteBatch;
|
|
21
24
|
}
|
|
25
|
+
export declare class AdminFirestoreModule {
|
|
26
|
+
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AdminFirestoreModule = exports.AdminFirestoreAdapter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
6
6
|
const firebase_admin_1 = require("firebase-admin");
|
|
7
7
|
const base_1 = require("../base");
|
|
8
8
|
const core_1 = require("@nx-ddd/core");
|
|
9
|
-
let
|
|
9
|
+
let AdminFirestoreAdapter = exports.AdminFirestoreAdapter = class AdminFirestoreAdapter extends base_1.FirestoreAdapter {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
12
12
|
this.firestore = (0, firebase_admin_1.firestore)();
|
|
13
|
-
this.isTimestamp = (v) => v instanceof this.Timestamp;
|
|
14
|
-
this.isDate = (v) => dayjs_1.default.isDayjs(v);
|
|
15
13
|
}
|
|
16
14
|
get FieldValue() {
|
|
17
15
|
return firebase_admin_1.firestore.FieldValue;
|
|
@@ -19,8 +17,23 @@ let FirestoreAdminAdapter = class FirestoreAdminAdapter extends base_1.Firestore
|
|
|
19
17
|
get Timestamp() {
|
|
20
18
|
return firebase_admin_1.firestore.Timestamp;
|
|
21
19
|
}
|
|
20
|
+
get FieldPath() {
|
|
21
|
+
return firebase_admin_1.firestore.FieldPath;
|
|
22
|
+
}
|
|
23
|
+
isTimestamp(v) {
|
|
24
|
+
return v instanceof this.Timestamp;
|
|
25
|
+
}
|
|
26
|
+
isFieldValue(v) {
|
|
27
|
+
return v instanceof this.FieldValue;
|
|
28
|
+
}
|
|
29
|
+
isDate(v) {
|
|
30
|
+
return dayjs_1.default.isDayjs(v);
|
|
31
|
+
}
|
|
22
32
|
convertDateToTimestamp(date) {
|
|
23
|
-
|
|
33
|
+
if (dayjs_1.default.isDayjs(date) && date.isValid()) {
|
|
34
|
+
return firebase_admin_1.firestore.Timestamp.fromDate(date.toDate());
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Invalid date: ${date}`);
|
|
24
37
|
}
|
|
25
38
|
convertTimestampToDate(timestamp) {
|
|
26
39
|
return (0, dayjs_1.default)(timestamp.toDate());
|
|
@@ -29,6 +42,7 @@ let FirestoreAdminAdapter = class FirestoreAdminAdapter extends base_1.Firestore
|
|
|
29
42
|
const docRef = this.firestore.doc(path);
|
|
30
43
|
return {
|
|
31
44
|
__ref: docRef,
|
|
45
|
+
exists: () => docRef.get().then(snapshot => snapshot.exists),
|
|
32
46
|
set: (data, options) => docRef.set(data, options),
|
|
33
47
|
get: () => docRef.get(),
|
|
34
48
|
update: (data) => docRef.update(data),
|
|
@@ -47,6 +61,9 @@ let FirestoreAdminAdapter = class FirestoreAdminAdapter extends base_1.Firestore
|
|
|
47
61
|
query(collection, ...queryFnArray) {
|
|
48
62
|
return queryFnArray.reduce((collectionOrQuery, queryFn) => queryFn(collectionOrQuery), collection);
|
|
49
63
|
}
|
|
64
|
+
where(key, evaluation, value) {
|
|
65
|
+
return (collection) => collection.where(key, evaluation, value);
|
|
66
|
+
}
|
|
50
67
|
orderBy(key, order = 'asc') {
|
|
51
68
|
return (collection) => collection.orderBy(key, order);
|
|
52
69
|
}
|
|
@@ -57,8 +74,16 @@ let FirestoreAdminAdapter = class FirestoreAdminAdapter extends base_1.Firestore
|
|
|
57
74
|
return this.firestore.batch();
|
|
58
75
|
}
|
|
59
76
|
};
|
|
60
|
-
|
|
77
|
+
exports.AdminFirestoreAdapter = AdminFirestoreAdapter = tslib_1.__decorate([
|
|
61
78
|
(0, core_1.Injectable)()
|
|
62
|
-
],
|
|
63
|
-
exports.
|
|
79
|
+
], AdminFirestoreAdapter);
|
|
80
|
+
let AdminFirestoreModule = exports.AdminFirestoreModule = class AdminFirestoreModule {
|
|
81
|
+
};
|
|
82
|
+
exports.AdminFirestoreModule = AdminFirestoreModule = tslib_1.__decorate([
|
|
83
|
+
(0, core_1.NxModule)({
|
|
84
|
+
providers: [
|
|
85
|
+
{ provide: base_1.FirestoreAdapter, useClass: AdminFirestoreAdapter },
|
|
86
|
+
],
|
|
87
|
+
})
|
|
88
|
+
], AdminFirestoreModule);
|
|
64
89
|
//# sourceMappingURL=admin.adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/admin.adapter.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,mDAA2C;AAE3C,
|
|
1
|
+
{"version":3,"file":"admin.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/admin/admin.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,30 @@
|
|
|
1
|
-
import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument, ToFirestoreData, Timestamp } from '../../interfaces';
|
|
1
|
+
import type { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument, ToFirestoreData, Timestamp, FirestoreQuery, FieldValue } from '../../interfaces';
|
|
2
2
|
export type QueryFn<Data> = (collection?: any) => any;
|
|
3
|
+
export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
|
|
3
4
|
export declare abstract class FirestoreAdapter<Date = any> {
|
|
4
|
-
protected abstract isTimestamp
|
|
5
|
+
protected abstract isTimestamp(v: any): v is Timestamp;
|
|
6
|
+
protected abstract isFieldValue(v: any): v is FieldValue;
|
|
5
7
|
protected abstract isDate(v: any): v is Date;
|
|
6
8
|
protected abstract convertTimestampToDate(timestamp: Timestamp): Date;
|
|
7
9
|
protected abstract convertDateToTimestamp(date: Date): Timestamp;
|
|
8
10
|
abstract get Timestamp(): any;
|
|
9
11
|
abstract get FieldValue(): any;
|
|
12
|
+
abstract get FieldPath(): any;
|
|
10
13
|
abstract doc<Data>(path: string): FirestoreDocument<Data>;
|
|
11
14
|
abstract collection<Data>(path: string): FirestoreCollection<Data>;
|
|
12
15
|
abstract collectionGroup<Data>(collectionId: string): FirestoreCollectionGroup<Data>;
|
|
13
16
|
abstract runTransaction(fn: any): any;
|
|
14
17
|
abstract batch(): any;
|
|
15
|
-
abstract query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]):
|
|
18
|
+
abstract query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): FirestoreQuery<Data>;
|
|
19
|
+
abstract where<Data>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<Data>;
|
|
16
20
|
abstract orderBy<Data>(key: string, order: 'asc' | 'desc'): QueryFn<Data>;
|
|
17
21
|
abstract limit<Data>(n: number): QueryFn<Data>;
|
|
18
22
|
toFirestoreData<Entity>(entity: Entity): ToFirestoreData<Entity, Date>;
|
|
19
23
|
fromFirestoreData<Entity>(data: ToFirestoreData<Entity, Date>): Entity;
|
|
24
|
+
toFirestore(obj: object, Entity: any): {};
|
|
25
|
+
fromFirestore(data: any, Entity: any): {};
|
|
26
|
+
/**
|
|
27
|
+
* @description FirestoreのUpdateは通常のオブジェクトでは孫以下のプロパティが既存データとマージされないので、パスに変換する必要がある。
|
|
28
|
+
*/
|
|
29
|
+
flattenForUpdate(obj: any): any;
|
|
20
30
|
}
|
|
@@ -3,16 +3,142 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FirestoreAdapter = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const core_1 = require("@nx-ddd/core");
|
|
6
|
-
|
|
6
|
+
const decorators_1 = require("@nx-ddd/firestore/decorators");
|
|
7
|
+
const lodash_get_1 = tslib_1.__importDefault(require("lodash.get"));
|
|
8
|
+
const walk_obj_1 = require("@nx-ddd/core/util/walk-obj");
|
|
9
|
+
let FirestoreAdapter = exports.FirestoreAdapter = class FirestoreAdapter {
|
|
7
10
|
toFirestoreData(entity) {
|
|
8
11
|
return Object.entries(entity).reduce((pre, [k, v]) => (Object.assign(Object.assign({}, pre), { [k]: this.isDate(v) ? this.convertDateToTimestamp(v) : v })), {});
|
|
9
12
|
}
|
|
10
13
|
fromFirestoreData(data) {
|
|
11
14
|
return Object.entries(data).reduce((pre, [k, v]) => (Object.assign(Object.assign({}, pre), { [k]: this.isTimestamp(v) ? this.convertTimestampToDate(v) : v })), {});
|
|
12
15
|
}
|
|
16
|
+
toFirestore(obj, Entity) {
|
|
17
|
+
const newObj = {};
|
|
18
|
+
for (const annotation of (0, decorators_1.getFirestoreAnnotations)(Entity)) {
|
|
19
|
+
const _value = (0, lodash_get_1.default)(obj, annotation.propName);
|
|
20
|
+
if (_value === null) {
|
|
21
|
+
newObj[annotation.fieldName] = null;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
switch (annotation.type) {
|
|
25
|
+
case 'id':
|
|
26
|
+
case 'string':
|
|
27
|
+
case 'number': {
|
|
28
|
+
if (typeof _value === 'undefined')
|
|
29
|
+
break;
|
|
30
|
+
newObj[annotation.fieldName] = _value;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case 'timestamp': {
|
|
34
|
+
if (typeof _value === 'undefined')
|
|
35
|
+
break;
|
|
36
|
+
newObj[annotation.fieldName] = this.convertDateToTimestamp(_value);
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case 'array': {
|
|
40
|
+
const Type = annotation.childType();
|
|
41
|
+
if (typeof _value === 'undefined')
|
|
42
|
+
break;
|
|
43
|
+
const value = _value.map(v => {
|
|
44
|
+
switch (Type) {
|
|
45
|
+
case String:
|
|
46
|
+
case Number:
|
|
47
|
+
return v;
|
|
48
|
+
default:
|
|
49
|
+
return this.toFirestore(v, Type);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (value)
|
|
53
|
+
newObj[annotation.fieldName] = value;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case 'map': {
|
|
57
|
+
const Type = annotation.childType();
|
|
58
|
+
if (typeof _value === 'undefined')
|
|
59
|
+
break;
|
|
60
|
+
const value = this.toFirestore(_value, Type);
|
|
61
|
+
if (value)
|
|
62
|
+
newObj[annotation.fieldName] = value;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return newObj;
|
|
68
|
+
}
|
|
69
|
+
fromFirestore(data, Entity) {
|
|
70
|
+
const newObj = {};
|
|
71
|
+
for (const annotation of (0, decorators_1.getFirestoreAnnotations)(Entity)) {
|
|
72
|
+
const _value = data[annotation.fieldName];
|
|
73
|
+
if (typeof _value === 'undefined')
|
|
74
|
+
continue;
|
|
75
|
+
if (_value === null) {
|
|
76
|
+
newObj[annotation.propName] = null;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
switch (annotation.type) {
|
|
80
|
+
case 'id':
|
|
81
|
+
case 'string':
|
|
82
|
+
case 'number': {
|
|
83
|
+
newObj[annotation.propName] = _value;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'timestamp': {
|
|
87
|
+
try {
|
|
88
|
+
newObj[annotation.propName] = this.convertTimestampToDate(_value);
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
newObj[annotation.propName] = _value;
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case 'array': {
|
|
96
|
+
const Type = annotation.childType();
|
|
97
|
+
const value = _value.map(v => {
|
|
98
|
+
switch (Type) {
|
|
99
|
+
case String:
|
|
100
|
+
case Number:
|
|
101
|
+
return v;
|
|
102
|
+
default:
|
|
103
|
+
return this.fromFirestore(v, Type);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
if (value)
|
|
107
|
+
newObj[annotation.propName] = value;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case 'map': {
|
|
111
|
+
const Type = annotation.childType();
|
|
112
|
+
const value = this.fromFirestore(_value, Type);
|
|
113
|
+
if (value)
|
|
114
|
+
newObj[annotation.propName] = value;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return newObj;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @description FirestoreのUpdateは通常のオブジェクトでは孫以下のプロパティが既存データとマージされないので、パスに変換する必要がある。
|
|
123
|
+
*/
|
|
124
|
+
flattenForUpdate(obj) {
|
|
125
|
+
const newObj = {};
|
|
126
|
+
(0, walk_obj_1.walkObj)(obj, {
|
|
127
|
+
callback: (paths, value) => newObj[paths.join('.')] = value,
|
|
128
|
+
overwrite: (_, value) => {
|
|
129
|
+
if (Array.isArray(value))
|
|
130
|
+
return [true, value];
|
|
131
|
+
if (this.isTimestamp(value))
|
|
132
|
+
return [true, value];
|
|
133
|
+
if (this.isFieldValue(value))
|
|
134
|
+
return [true, value];
|
|
135
|
+
return [false];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return newObj;
|
|
139
|
+
}
|
|
13
140
|
};
|
|
14
|
-
FirestoreAdapter = tslib_1.__decorate([
|
|
141
|
+
exports.FirestoreAdapter = FirestoreAdapter = tslib_1.__decorate([
|
|
15
142
|
(0, core_1.Injectable)()
|
|
16
143
|
], FirestoreAdapter);
|
|
17
|
-
exports.FirestoreAdapter = FirestoreAdapter;
|
|
18
144
|
//# sourceMappingURL=base.adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/base/base.adapter.ts"],"names":[],"mappings":";;;;AAAA,uCAA0C;
|
|
1
|
+
{"version":3,"file":"base.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/base/base.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { FieldValue, Timestamp } from 'firebase/firestore';
|
|
1
|
+
import { FieldValue, Timestamp, FieldPath } from 'firebase/firestore';
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
|
-
import { FirestoreAdapter, QueryFn } from '../base';
|
|
3
|
+
import { FirestoreAdapter, QueryFn, WhereFilterOp } from '../base';
|
|
4
4
|
import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument } from '../../interfaces';
|
|
5
5
|
export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
|
|
6
6
|
firestore: import("@firebase/firestore").Firestore;
|
|
7
7
|
constructor(firestore?: import("@firebase/firestore").Firestore);
|
|
8
8
|
get FieldValue(): typeof FieldValue;
|
|
9
9
|
get Timestamp(): typeof Timestamp;
|
|
10
|
-
|
|
11
|
-
protected
|
|
10
|
+
get FieldPath(): FieldPath;
|
|
11
|
+
protected isTimestamp(v: any): v is Timestamp;
|
|
12
|
+
protected isFieldValue(v: any): v is FieldValue;
|
|
13
|
+
protected isDate(v: any): v is dayjs.Dayjs;
|
|
12
14
|
protected convertDateToTimestamp(date: dayjs.Dayjs): Timestamp;
|
|
13
15
|
protected convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs;
|
|
14
16
|
doc(path: string): FirestoreDocument<any>;
|
|
@@ -16,6 +18,7 @@ export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Day
|
|
|
16
18
|
collectionGroup(collectionId: string): FirestoreCollectionGroup<any>;
|
|
17
19
|
runTransaction(): void;
|
|
18
20
|
query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): any;
|
|
21
|
+
where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data>;
|
|
19
22
|
orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
|
|
20
23
|
limit<Data>(n: number): QueryFn<Data>;
|
|
21
24
|
batch(): import("@firebase/firestore").WriteBatch;
|
|
@@ -6,13 +6,10 @@ const firestore_1 = require("firebase/firestore");
|
|
|
6
6
|
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
7
|
const rxjs_1 = require("rxjs");
|
|
8
8
|
const base_1 = require("../base");
|
|
9
|
-
const firestore_2 = require("@angular/fire/firestore");
|
|
10
9
|
class FirebaseFirestoreAdapter extends base_1.FirestoreAdapter {
|
|
11
10
|
constructor(firestore = (0, firestore_1.getFirestore)()) {
|
|
12
11
|
super();
|
|
13
12
|
this.firestore = firestore;
|
|
14
|
-
this.isTimestamp = (v) => v instanceof firestore_1.Timestamp;
|
|
15
|
-
this.isDate = (v) => dayjs_1.default.isDayjs(v);
|
|
16
13
|
}
|
|
17
14
|
get FieldValue() {
|
|
18
15
|
return firestore_1.FieldValue;
|
|
@@ -20,6 +17,18 @@ class FirebaseFirestoreAdapter extends base_1.FirestoreAdapter {
|
|
|
20
17
|
get Timestamp() {
|
|
21
18
|
return firestore_1.Timestamp;
|
|
22
19
|
}
|
|
20
|
+
get FieldPath() {
|
|
21
|
+
return new firestore_1.FieldPath();
|
|
22
|
+
}
|
|
23
|
+
isTimestamp(v) {
|
|
24
|
+
return v instanceof firestore_1.Timestamp;
|
|
25
|
+
}
|
|
26
|
+
isFieldValue(v) {
|
|
27
|
+
return v instanceof this.FieldValue;
|
|
28
|
+
}
|
|
29
|
+
isDate(v) {
|
|
30
|
+
return dayjs_1.default.isDayjs(v);
|
|
31
|
+
}
|
|
23
32
|
convertDateToTimestamp(date) {
|
|
24
33
|
return firestore_1.Timestamp.fromDate(date.toDate());
|
|
25
34
|
}
|
|
@@ -30,9 +39,10 @@ class FirebaseFirestoreAdapter extends base_1.FirestoreAdapter {
|
|
|
30
39
|
const docRef = (0, firestore_1.doc)(this.firestore, path);
|
|
31
40
|
return {
|
|
32
41
|
__ref: docRef,
|
|
42
|
+
exists: () => (0, firestore_1.getDoc)(docRef).then(doc => doc.exists()),
|
|
33
43
|
set: (data) => (0, firestore_1.setDoc)(docRef, data),
|
|
34
44
|
get: () => (0, firestore_1.getDoc)(docRef),
|
|
35
|
-
update: (data) => (0,
|
|
45
|
+
update: (data) => (0, firestore_1.updateDoc)(docRef, data),
|
|
36
46
|
delete: () => (0, firestore_1.deleteDoc)(docRef),
|
|
37
47
|
stateChanges: () => {
|
|
38
48
|
const subject = new rxjs_1.Subject();
|
|
@@ -75,6 +85,9 @@ class FirebaseFirestoreAdapter extends base_1.FirestoreAdapter {
|
|
|
75
85
|
query(collection, ...queryFnArray) {
|
|
76
86
|
return (0, firestore_1.query)(collection.__ref, ...queryFnArray.map(queryFn => queryFn()));
|
|
77
87
|
}
|
|
88
|
+
where(fieldPath, opStr, value) {
|
|
89
|
+
return () => (0, firestore_1.where)(fieldPath, opStr, value);
|
|
90
|
+
}
|
|
78
91
|
orderBy(key, order = 'asc') {
|
|
79
92
|
return () => (0, firestore_1.orderBy)(key, order);
|
|
80
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/firebase.adapter.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"firebase.adapter.js","sourceRoot":"","sources":["../../../../../../packages/@nx-ddd/firestore/src/lib/adapters/firebase/firebase.adapter.ts"],"names":[],"mappings":"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"}
|
package/converter/converter.js
CHANGED
|
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const core_1 = require("@nx-ddd/core");
|
|
6
6
|
const lodash_pick_1 = tslib_1.__importDefault(require("lodash.pick"));
|
|
7
7
|
const decorators_1 = require("../decorators");
|
|
8
|
-
let FirestoreConverter = class FirestoreConverter {
|
|
8
|
+
let FirestoreConverter = exports.FirestoreConverter = class FirestoreConverter {
|
|
9
9
|
get fields() {
|
|
10
10
|
const annotations = this.Entity[decorators_1.FIRESTORE_ANNOTATIONS];
|
|
11
11
|
return annotations.map(a => a.fieldName);
|
|
@@ -18,10 +18,9 @@ let FirestoreConverter = class FirestoreConverter {
|
|
|
18
18
|
return (0, lodash_pick_1.default)(data, this.fields);
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
FirestoreConverter = tslib_1.__decorate([
|
|
21
|
+
exports.FirestoreConverter = FirestoreConverter = tslib_1.__decorate([
|
|
22
22
|
(0, core_1.Injectable)()
|
|
23
23
|
], FirestoreConverter);
|
|
24
|
-
exports.FirestoreConverter = FirestoreConverter;
|
|
25
24
|
function createConverter(Entity, adapter) {
|
|
26
25
|
class Converter extends FirestoreConverter {
|
|
27
26
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":";;;;AACA,uCAA0C;AAC1C,sEAA+B;AAG/B,8CAA2E;AASpE,IAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/converter/converter.ts"],"names":[],"mappings":";;;;AACA,uCAA0C;AAC1C,sEAA+B;AAG/B,8CAA2E;AASpE,IAAM,kBAAkB,gCAAxB,MAAM,kBAAkB;IAO7B,IAAY,MAAM;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kCAAqB,CAA0B,CAAC;QAChF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,GAA2B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,iCACpD,GAAG,CAAC,IAAI,EAAE,KACb,EAAE,EAAE,GAAG,CAAC,EAAE,IACV,CAAC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAA,qBAAI,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAS,CAAC;IACzC,CAAC;CACF,CAAA;6BAvBY,kBAAkB;IAD9B,IAAA,iBAAU,GAAE;GACA,kBAAkB,CAuB9B;AAED,SAAgB,eAAe,CAC7B,MAAW,EACX,OAAyB;IAEzB,MAAM,SAAU,SAAQ,kBAAqB;QAA7C;;YACY,WAAM,GAAG,MAAM,CAAC;YAChB,YAAO,GAAG,OAAO,CAAC;QAC9B,CAAC;KAAA;IAED,OAAO,IAAI,SAAS,EAAE,CAAC;AACzB,CAAC;AAVD,0CAUC"}
|
package/dao/firestore.dao.d.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import { FirestoreAdapter } from '../adapters/base';
|
|
3
|
-
import { FirestoreConverter } from '../converter';
|
|
4
3
|
import { FirestoreCollection, FirestoreCollectionGroup, FirestoreDocument, ToFirestoreData } from '../interfaces';
|
|
5
4
|
import { FirestorePathBuilder } from '../path-builder';
|
|
6
5
|
export declare abstract class FirestoreDAO<Entity extends {
|
|
7
6
|
id: string;
|
|
8
7
|
}, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> {
|
|
9
8
|
protected adapter: FirestoreAdapter;
|
|
10
|
-
protected converter: FirestoreConverter<Entity>;
|
|
11
9
|
protected abstract pathBuilder: FirestorePathBuilder<Entity>;
|
|
12
|
-
constructor(adapter: FirestoreAdapter
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
constructor(adapter: FirestoreAdapter);
|
|
11
|
+
collection(paramMap?: Partial<Entity>): FirestoreCollection<FirestoreData>;
|
|
12
|
+
collectionGroup(): FirestoreCollectionGroup<FirestoreData>;
|
|
13
|
+
doc(paramMap: Partial<Entity> & {
|
|
16
14
|
id: string;
|
|
17
15
|
}): FirestoreDocument<FirestoreData>;
|
|
18
|
-
|
|
16
|
+
getCollection(paramMap?: Partial<Entity>): FirestoreCollection<FirestoreData, any>;
|
|
19
17
|
}
|
package/dao/firestore.dao.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FirestoreDAO = void 0;
|
|
4
4
|
class FirestoreDAO {
|
|
5
|
-
constructor(adapter
|
|
5
|
+
constructor(adapter) {
|
|
6
6
|
this.adapter = adapter;
|
|
7
|
-
this.converter = converter;
|
|
8
7
|
}
|
|
9
8
|
collection(paramMap) {
|
|
10
9
|
const path = this.pathBuilder.collection(paramMap);
|
package/dao/firestore.dao.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.dao.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/dao/firestore.dao.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"firestore.dao.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/dao/firestore.dao.ts"],"names":[],"mappings":";;;AAMA,MAAsB,YAAY;IAMhC,YACY,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IACjC,CAAC;IAEL,UAAU,CAAC,QAA0B;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAgB,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAgB,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,QAAwC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAgB,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,QAA0B;QACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACvE,CAAC;CACF;AA5BD,oCA4BC"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
export declare const FIRESTORE_ANNOTATIONS = "firestore_annotations";
|
|
2
|
-
export type FirestoreFieldType = 'boolean' | 'number' | 'timestamp' | 'string' | 'geopoint' | 'null' | 'map' | 'array' | 'reference';
|
|
2
|
+
export type FirestoreFieldType = 'id' | 'boolean' | 'number' | 'timestamp' | 'string' | 'geopoint' | 'null' | 'map' | 'array' | 'reference';
|
|
3
3
|
export interface FirestoreAnnotation {
|
|
4
4
|
type: FirestoreFieldType;
|
|
5
5
|
fieldName: string;
|
|
6
6
|
propName: string;
|
|
7
|
+
childType: any;
|
|
7
8
|
}
|
|
9
|
+
export declare function getFirestoreAnnotations(target: any): FirestoreAnnotation[];
|
|
10
|
+
export declare const ID: (props?: {
|
|
11
|
+
name?: string;
|
|
12
|
+
}) => (target: any, propName: string) => void;
|
|
8
13
|
export declare const String: (props?: {
|
|
9
14
|
name?: string;
|
|
10
15
|
}) => (target: any, propName: string) => void;
|
|
@@ -23,12 +28,44 @@ export declare const Timestamp: (props?: {
|
|
|
23
28
|
export declare const Number: (props?: {
|
|
24
29
|
name?: string;
|
|
25
30
|
}) => (target: any, propName: string) => void;
|
|
26
|
-
export declare const Map: (props?: {
|
|
31
|
+
export declare const Map: (childType: () => any, props?: {
|
|
27
32
|
name?: string;
|
|
28
33
|
}) => (target: any, propName: string) => void;
|
|
29
|
-
export declare const Array: (props?: {
|
|
34
|
+
export declare const Array: (childType: () => any, props?: {
|
|
30
35
|
name?: string;
|
|
31
36
|
}) => (target: any, propName: string) => void;
|
|
32
37
|
export declare const Reference: (props?: {
|
|
33
38
|
name?: string;
|
|
34
39
|
}) => (target: any, propName: string) => void;
|
|
40
|
+
export declare class Firestore {
|
|
41
|
+
static ID: (props?: {
|
|
42
|
+
name?: string;
|
|
43
|
+
}) => (target: any, propName: string) => void;
|
|
44
|
+
static String: (props?: {
|
|
45
|
+
name?: string;
|
|
46
|
+
}) => (target: any, propName: string) => void;
|
|
47
|
+
static Null: (props?: {
|
|
48
|
+
name?: string;
|
|
49
|
+
}) => (target: any, propName: string) => void;
|
|
50
|
+
static Geopoint: (props?: {
|
|
51
|
+
name?: string;
|
|
52
|
+
}) => (target: any, propName: string) => void;
|
|
53
|
+
static Boolean: (props?: {
|
|
54
|
+
name?: string;
|
|
55
|
+
}) => (target: any, propName: string) => void;
|
|
56
|
+
static Timestamp: (props?: {
|
|
57
|
+
name?: string;
|
|
58
|
+
}) => (target: any, propName: string) => void;
|
|
59
|
+
static Number: (props?: {
|
|
60
|
+
name?: string;
|
|
61
|
+
}) => (target: any, propName: string) => void;
|
|
62
|
+
static Map: (childType: () => any, props?: {
|
|
63
|
+
name?: string;
|
|
64
|
+
}) => (target: any, propName: string) => void;
|
|
65
|
+
static Array: (childType: () => any, props?: {
|
|
66
|
+
name?: string;
|
|
67
|
+
}) => (target: any, propName: string) => void;
|
|
68
|
+
static Reference: (props?: {
|
|
69
|
+
name?: string;
|
|
70
|
+
}) => (target: any, propName: string) => void;
|
|
71
|
+
}
|
package/decorators/decorators.js
CHANGED
|
@@ -1,27 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Reference = exports.Array = exports.Map = exports.Number = exports.Timestamp = exports.Boolean = exports.Geopoint = exports.Null = exports.String = exports.FIRESTORE_ANNOTATIONS = void 0;
|
|
3
|
+
exports.Firestore = exports.Reference = exports.Array = exports.Map = exports.Number = exports.Timestamp = exports.Boolean = exports.Geopoint = exports.Null = exports.String = exports.ID = exports.getFirestoreAnnotations = exports.FIRESTORE_ANNOTATIONS = void 0;
|
|
4
4
|
exports.FIRESTORE_ANNOTATIONS = 'firestore_annotations';
|
|
5
5
|
;
|
|
6
|
-
function createDecorator(type) {
|
|
6
|
+
function createDecorator(type, options = {}) {
|
|
7
7
|
return (props) => {
|
|
8
8
|
return (target, propName) => {
|
|
9
9
|
var _a;
|
|
10
10
|
var _b;
|
|
11
11
|
const fieldName = (props === null || props === void 0 ? void 0 : props.name) || propName;
|
|
12
|
-
const ANNOTATION = { type, fieldName, propName };
|
|
12
|
+
const ANNOTATION = { type, fieldName, propName, childType: options.childType };
|
|
13
13
|
(_a = (_b = target.constructor)[exports.FIRESTORE_ANNOTATIONS]) !== null && _a !== void 0 ? _a : (_b[exports.FIRESTORE_ANNOTATIONS] = []);
|
|
14
14
|
target.constructor[exports.FIRESTORE_ANNOTATIONS].push(ANNOTATION);
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
+
function getFirestoreAnnotations(target) {
|
|
19
|
+
var _a;
|
|
20
|
+
return (_a = target[exports.FIRESTORE_ANNOTATIONS]) !== null && _a !== void 0 ? _a : [];
|
|
21
|
+
}
|
|
22
|
+
exports.getFirestoreAnnotations = getFirestoreAnnotations;
|
|
23
|
+
exports.ID = createDecorator('id');
|
|
18
24
|
exports.String = createDecorator('string');
|
|
19
25
|
exports.Null = createDecorator('null');
|
|
20
26
|
exports.Geopoint = createDecorator('geopoint');
|
|
21
27
|
exports.Boolean = createDecorator('boolean');
|
|
22
28
|
exports.Timestamp = createDecorator('timestamp');
|
|
23
29
|
exports.Number = createDecorator('number');
|
|
24
|
-
|
|
25
|
-
exports.
|
|
30
|
+
const Map = (childType, props) => createDecorator('map', { childType })(props);
|
|
31
|
+
exports.Map = Map;
|
|
32
|
+
const Array = (childType, props) => createDecorator('array', { childType })(props);
|
|
33
|
+
exports.Array = Array;
|
|
26
34
|
exports.Reference = createDecorator('reference');
|
|
35
|
+
class Firestore {
|
|
36
|
+
}
|
|
37
|
+
exports.Firestore = Firestore;
|
|
38
|
+
Firestore.ID = exports.ID;
|
|
39
|
+
Firestore.String = exports.String;
|
|
40
|
+
Firestore.Null = exports.Null;
|
|
41
|
+
Firestore.Geopoint = exports.Geopoint;
|
|
42
|
+
Firestore.Boolean = exports.Boolean;
|
|
43
|
+
Firestore.Timestamp = exports.Timestamp;
|
|
44
|
+
Firestore.Number = exports.Number;
|
|
45
|
+
Firestore.Map = exports.Map;
|
|
46
|
+
Firestore.Array = exports.Array;
|
|
47
|
+
Firestore.Reference = exports.Reference;
|
|
27
48
|
//# 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,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/decorators/decorators.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAS5D,CAAC;AAEF,SAAS,eAAe,CAAC,IAAwB,EAAE,UAA6B,EAAE;IAChF,OAAO,CAAC,KAAuB,EAAE,EAAE;QACjC,OAAO,CAAC,MAAW,EAAE,QAAgB,EAAE,EAAE;;;YACvC,MAAM,SAAS,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,QAAQ,CAAC;YAC1C,MAAM,UAAU,GAAwB,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC;YAClG,YAAA,MAAM,CAAC,WAAW,EAAC,6BAAqB,wCAArB,6BAAqB,IAAM,EAAE,EAAC;YACjD,MAAM,CAAC,WAAW,CAAC,6BAAqB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAW;;IACjD,OAAO,MAAA,MAAM,CAAC,6BAAqB,CAAC,mCAAI,EAAE,CAAC;AAC7C,CAAC;AAFD,0DAEC;AAEY,QAAA,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AACvC,QAAA,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AACrC,QAAA,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AACzC,MAAM,GAAG,GAAG,CAAC,SAAoB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAApG,QAAA,GAAG,OAAiG;AAC1G,MAAM,KAAK,GAAG,CAAC,SAAoB,EAAE,KAAuB,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAAxG,QAAA,KAAK,SAAmG;AACxG,QAAA,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAEtD,MAAa,SAAS;;AAAtB,8BAWC;AAVQ,YAAE,GAAG,UAAE,CAAC;AACR,gBAAM,GAAG,cAAM,CAAC;AAChB,cAAI,GAAG,YAAI,CAAC;AACZ,kBAAQ,GAAG,gBAAQ,CAAC;AACpB,iBAAO,GAAG,eAAO,CAAC;AAClB,mBAAS,GAAG,iBAAS,CAAC;AACtB,gBAAM,GAAG,cAAM,CAAC;AAChB,aAAG,GAAG,WAAG,CAAC;AACV,eAAK,GAAG,aAAK,CAAC;AACd,mBAAS,GAAG,iBAAS,CAAC"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -4,9 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
tslib_1.__exportStar(require("./adapters"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./converter"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./dao"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./decorators"), exports);
|
|
8
7
|
tslib_1.__exportStar(require("./path-builder"), exports);
|
|
9
8
|
tslib_1.__exportStar(require("./query"), exports);
|
|
10
9
|
tslib_1.__exportStar(require("./repository"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./testing"), exports);
|
|
12
10
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/firestore/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,sDAA4B;AAC5B,gDAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/firestore/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,sDAA4B;AAC5B,gDAAsB;AACtB,yDAA+B;AAC/B,kDAAwB;AACxB,uDAA6B"}
|
|
@@ -38,6 +38,7 @@ export type ToFirestoreData<Entity, Date> = {
|
|
|
38
38
|
};
|
|
39
39
|
export interface DocumentReference<DocumentData, OriginalReference = any> {
|
|
40
40
|
__ref?: OriginalReference;
|
|
41
|
+
exists(): Promise<boolean>;
|
|
41
42
|
set(data: DocumentData, options?: any): Promise<void | any>;
|
|
42
43
|
get(): Promise<DocumentSnapshot<DocumentData>>;
|
|
43
44
|
update(data: DocumentData): Promise<void | any>;
|
|
@@ -55,3 +56,8 @@ export interface FirestoreCollectionGroup<DocumentData> {
|
|
|
55
56
|
stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
|
|
56
57
|
get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
|
|
57
58
|
}
|
|
59
|
+
export interface FirestoreQuery<DocumentData> {
|
|
60
|
+
__ref?: any;
|
|
61
|
+
stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
|
|
62
|
+
get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
|
|
63
|
+
}
|
package/package.json
CHANGED
|
@@ -1,29 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/firestore",
|
|
3
|
-
"version": "
|
|
4
|
-
"main": "./index.js",
|
|
3
|
+
"version": "6.0.4",
|
|
4
|
+
"main": "./src/lib/index.js",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
|
-
"
|
|
7
|
-
"@
|
|
8
|
-
"@
|
|
9
|
-
"
|
|
10
|
-
"@angular/core": "^15.0.0",
|
|
11
|
-
"@angular/fire": "^7.5.0",
|
|
12
|
-
"@angular/platform-browser": "^15.0.0",
|
|
13
|
-
"@angular/platform-browser-dynamic": "^15.0.0",
|
|
14
|
-
"dayjs": "1.11.7",
|
|
6
|
+
"peerDependencies": {
|
|
7
|
+
"@nx-ddd/common": "6.0.4",
|
|
8
|
+
"@nx-ddd/core": "6.0.4",
|
|
9
|
+
"dayjs": "1.11.10",
|
|
15
10
|
"firebase": "^9.0.0",
|
|
16
|
-
"firebase-admin": "^
|
|
17
|
-
"
|
|
11
|
+
"firebase-admin": "^11.11.0",
|
|
12
|
+
"lodash-es": "^4.17.15",
|
|
18
13
|
"lodash.camelcase": "^4.3.0",
|
|
14
|
+
"lodash.get": "^4.4.2",
|
|
19
15
|
"lodash.pick": "^4.4.0",
|
|
20
|
-
"reflect-metadata": "^0.1.13",
|
|
21
16
|
"rxjs": "^7.0.0",
|
|
22
|
-
"zone.js": "0.12.0"
|
|
23
|
-
},
|
|
24
|
-
"peerDependencies": {
|
|
25
|
-
"@nx-ddd/common": "5.15.0",
|
|
26
|
-
"@nx-ddd/core": "5.15.0",
|
|
27
17
|
"tslib": "^2.3.0"
|
|
28
|
-
}
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {},
|
|
20
|
+
"type": "commonjs"
|
|
29
21
|
}
|
|
@@ -8,9 +8,9 @@ export declare class FirestorePathBuilder<Entity extends {
|
|
|
8
8
|
id: string;
|
|
9
9
|
}> {
|
|
10
10
|
private paths;
|
|
11
|
-
doc
|
|
12
|
-
collection
|
|
13
|
-
collectionGroup
|
|
11
|
+
doc(param: DocParamMap<Entity>): string;
|
|
12
|
+
collection(param?: CollectionParamMap<Entity>): string;
|
|
13
|
+
collectionGroup(): string;
|
|
14
14
|
constructor(paths: string[]);
|
|
15
15
|
}
|
|
16
16
|
export declare const pathBuilderFactory: <E extends {
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolvePaths = exports.parsePath = exports.pathBuilderFactory = exports.FirestorePathBuilder = void 0;
|
|
4
4
|
class FirestorePathBuilder {
|
|
5
|
+
doc(param) {
|
|
6
|
+
return (0, exports.resolvePaths)(param, this.paths);
|
|
7
|
+
}
|
|
8
|
+
collection(param = {}) {
|
|
9
|
+
return (0, exports.resolvePaths)(param, this.paths.slice(0, -1));
|
|
10
|
+
}
|
|
11
|
+
collectionGroup() {
|
|
12
|
+
return this.paths[this.paths.length - 2];
|
|
13
|
+
}
|
|
5
14
|
constructor(paths) {
|
|
6
15
|
this.paths = paths;
|
|
7
|
-
this.doc = (param) => (0, exports.resolvePaths)(param, this.paths);
|
|
8
|
-
this.collection = (param = {}) => (0, exports.resolvePaths)(param, this.paths.slice(0, -1));
|
|
9
|
-
this.collectionGroup = () => this.paths[this.paths.length - 2];
|
|
10
16
|
}
|
|
11
17
|
}
|
|
12
18
|
exports.FirestorePathBuilder = FirestorePathBuilder;
|
|
@@ -28,7 +34,7 @@ const resolvePaths = (obj, paths) => {
|
|
|
28
34
|
exports.resolvePaths = resolvePaths;
|
|
29
35
|
const resolvePath = (obj, key) => {
|
|
30
36
|
if (!(obj === null || obj === void 0 ? void 0 : obj[key]))
|
|
31
|
-
throw new Error(`Invalid key is detected in resolving paths, key:
|
|
37
|
+
throw new Error(`Invalid key is detected in resolving paths, key: \`${key}\`, obj: \`${JSON.stringify(obj)}\``);
|
|
32
38
|
return obj === null || obj === void 0 ? void 0 : obj[key];
|
|
33
39
|
};
|
|
34
40
|
//# sourceMappingURL=path-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IAC/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,IAAA,oBAAY,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAAoC,EAAE;QAC/C,OAAO,IAAA,oBAAY,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,YAAoB,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAI,CAAC;CACzC;AAdD,oDAcC;AAEM,MAAM,kBAAkB,GAAG,CAChC,IAAY,EACa,EAAE;IAC3B,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B;AAEK,MAAM,SAAS,GAAG,CAAC,IAAY,EAAY,EAAE;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB;AAEM,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,KAAe,EAAU,EAAE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IAC/C,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAA;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjI,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,GAAG,CAAC,CAAC;AACpB,CAAC,CAAA"}
|
|
@@ -9,17 +9,22 @@ type FirestoreCollectionType<D> = FirestoreCollection<D> | FirestoreCollectionGr
|
|
|
9
9
|
export declare class FirestoreQuery<Entity extends {
|
|
10
10
|
id: string;
|
|
11
11
|
} = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
|
|
12
|
+
protected converter: FirestoreConverter<Entity>;
|
|
12
13
|
protected pathBuilder: FirestorePathBuilder<Entity>;
|
|
13
14
|
constructor(adapter: FirestoreAdapter, converter: FirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
|
|
14
15
|
protected readonly collection$: ReplaySubject<FirestoreCollectionType<FirestoreData>>;
|
|
15
16
|
protected readonly list$: Observable<Entity[]>;
|
|
16
|
-
listChanges(paramMap?: Partial<Entity
|
|
17
|
+
listChanges(paramMap?: Partial<Entity>, options?: {
|
|
18
|
+
switch?: boolean;
|
|
19
|
+
}): Observable<Entity[]>;
|
|
17
20
|
changes({ id }: Partial<Entity>): Observable<Entity>;
|
|
21
|
+
changesV2(params: Partial<Entity>): Observable<Entity>;
|
|
18
22
|
get({ id }: Partial<Entity> & {
|
|
19
23
|
id: string;
|
|
20
24
|
}): Promise<Entity>;
|
|
21
25
|
list(paramMap?: Partial<Entity>): Promise<Entity[]>;
|
|
22
26
|
protected listChangesByCollectionRef(collection: FirestoreCollection<FirestoreData> | FirestoreCollectionGroup<FirestoreData>): Observable<Entity[]>;
|
|
23
27
|
protected switchCollectionRef(paramMap?: Partial<Entity>): void;
|
|
28
|
+
switchCollection(collection: FirestoreCollection<FirestoreData>): void;
|
|
24
29
|
}
|
|
25
30
|
export {};
|
package/query/firestore.query.js
CHANGED
|
@@ -6,21 +6,25 @@ const operators_1 = require("rxjs/operators");
|
|
|
6
6
|
const dao_1 = require("../dao");
|
|
7
7
|
class FirestoreQuery extends dao_1.FirestoreDAO {
|
|
8
8
|
constructor(adapter, converter, pathBuilder) {
|
|
9
|
-
super(adapter
|
|
9
|
+
super(adapter);
|
|
10
|
+
this.converter = converter;
|
|
10
11
|
this.pathBuilder = pathBuilder;
|
|
11
12
|
this.collection$ = new rxjs_1.ReplaySubject(1);
|
|
12
|
-
this.list$ = this.collection$.pipe((0, operators_1.switchMap)((collection) => this.listChangesByCollectionRef(collection)), (0, operators_1.shareReplay)(1));
|
|
13
|
+
this.list$ = this.collection$.pipe((0, operators_1.switchMap)((collection) => this.listChangesByCollectionRef(collection).pipe((0, operators_1.catchError)(error => (0, rxjs_1.throwError)(() => error)))), (0, operators_1.shareReplay)(1));
|
|
13
14
|
this.switchCollectionRef();
|
|
14
15
|
}
|
|
15
|
-
listChanges(paramMap) {
|
|
16
|
-
this.switchCollectionRef(paramMap);
|
|
17
|
-
return this.list$;
|
|
16
|
+
listChanges(paramMap, options = { switch: true }) {
|
|
17
|
+
return (0, rxjs_1.of)(paramMap).pipe((0, operators_1.tap)((paramMap) => (options === null || options === void 0 ? void 0 : options.switch) && this.switchCollectionRef(paramMap)), (0, operators_1.switchMap)(() => this.list$));
|
|
18
18
|
}
|
|
19
19
|
changes({ id }) {
|
|
20
20
|
if (!id)
|
|
21
21
|
throw new Error(`Invalid Id. it must be Truthy`);
|
|
22
22
|
return this.list$.pipe((0, operators_1.map)(entities => entities.find(entity => entity.id === id)), (0, operators_1.distinctUntilChanged)((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
|
|
23
23
|
}
|
|
24
|
+
changesV2(params) {
|
|
25
|
+
const docRef = this.doc(params);
|
|
26
|
+
return docRef.stateChanges().pipe((0, operators_1.map)((doc) => this.converter.fromFirestore(doc)));
|
|
27
|
+
}
|
|
24
28
|
get({ id }) {
|
|
25
29
|
return (0, rxjs_1.lastValueFrom)(this.list$.pipe((0, operators_1.take)(1), (0, operators_1.map)(entities => entities.find(entity => entity.id === id))));
|
|
26
30
|
}
|
|
@@ -41,6 +45,9 @@ class FirestoreQuery extends dao_1.FirestoreDAO {
|
|
|
41
45
|
}
|
|
42
46
|
switchCollectionRef(paramMap) {
|
|
43
47
|
const collection = this.getCollection(paramMap);
|
|
48
|
+
this.switchCollection(collection);
|
|
49
|
+
}
|
|
50
|
+
switchCollection(collection) {
|
|
44
51
|
this.collection$.next(collection);
|
|
45
52
|
}
|
|
46
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":";;;AACA,+
|
|
1
|
+
{"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Entity } from '@nx-ddd/common/domain/models';
|
|
2
2
|
import { FirestoreQuery } from '../query';
|
|
3
|
-
export interface
|
|
3
|
+
export interface FirestoreRepository<EntityClass extends typeof Entity = any> {
|
|
4
4
|
Entity: EntityClass;
|
|
5
5
|
path?: string;
|
|
6
6
|
Query?: typeof FirestoreQuery;
|
|
7
7
|
}
|
|
8
|
-
export declare function FirestoreRepository({ Entity, Query, path, }:
|
|
8
|
+
export declare function FirestoreRepository({ Entity, Query, path, }: FirestoreRepository): <T extends new (...args: any[]) => {}>(target: T) => any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/decorator.ts"],"names":[],"mappings":";;;;AAAA,uCAA0C;AAE1C,gFAAyC;AACzC,2CAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/decorator.ts"],"names":[],"mappings":";;;;AAAA,uCAA0C;AAE1C,gFAAyC;AACzC,2CAAoD;AACpD,4CAA+C;AAC/C,kDAAqD;AACrD,oCAA0C;AAC1C,8CAAwD;AAYxD,SAAgB,mBAAmB,CAAC,EAClC,MAAM;AACN,aAAa;AACb,KAAK,EACL,IAAI,GACgB;IACpB,OAAO,UAAkD,MAAS;QAChE,4DAA4D;QAC5D,MAAM,YAAY,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,sBAAc,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEnD,IACM,CAAC,GADP,MACM,CAAE,SAAQ,oCAAsC;YAOpD,YACE,OAAyB;gBAEzB,KAAK,CAAC,OAAO,CAAC,CAAC;gBATP,gBAAW,GAAG,IAAA,iCAAkB,EAAC,MAAM,CAAC,CAAC;gBACzC,mBAAc,GAAG,MAAM,CAAC;gBACxB,cAAS,GAAG,IAAA,2BAAe,EAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE5D,UAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAMzE,CAAC;SACF,CAAA;QAZK,CAAC;YADN,IAAA,iBAAU,GAAE;qDASA,uBAAgB;WARvB,CAAC,CAYN;QAAA,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QAExE,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;AACH,CAAC;AA9BD,kDA8BC;AAED,SAAS,mBAAmB,CAAC,WAA0B;IACrD,OAAO,GAAG,IAAA,0BAAS,EAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC"}
|
|
@@ -8,9 +8,6 @@ export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
|
8
8
|
id: string;
|
|
9
9
|
}, FirestoreData = ToFirestoreData<Entity, Dayjs>> extends Repository<Entity> {
|
|
10
10
|
protected adapter: FirestoreAdapter;
|
|
11
|
-
protected Entity: {
|
|
12
|
-
new (): Entity;
|
|
13
|
-
};
|
|
14
11
|
protected abstract collectionPath: string;
|
|
15
12
|
protected abstract converter: IFirestoreConverter<Entity, FirestoreData>;
|
|
16
13
|
protected pathBuilder: FirestorePathBuilder<Entity>;
|
|
@@ -19,6 +16,7 @@ export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
|
19
16
|
get(paramMap?: Partial<Entity>): Promise<Entity>;
|
|
20
17
|
save(entity: Entity): Promise<[Entity, boolean]>;
|
|
21
18
|
create(entity: Partial<Entity>): Promise<Entity>;
|
|
19
|
+
createMany(entities: Partial<Entity>[]): Promise<Entity[]>;
|
|
22
20
|
update(entity: PartialWithId<Entity>): Promise<void>;
|
|
23
21
|
delete(paramMap: Partial<Entity>): Promise<void>;
|
|
24
22
|
bulkWrite(entities: Entity[], timestamps?: string[]): Promise<void>;
|
|
@@ -32,7 +30,6 @@ export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
|
32
30
|
protected _get(doc: FirestoreDocument<FirestoreData>): Promise<Entity>;
|
|
33
31
|
protected _save(doc: FirestoreDocument<FirestoreData>, entity: Entity): Promise<[Entity, boolean]>;
|
|
34
32
|
protected _create(doc: FirestoreDocument<FirestoreData>, entity: Entity): Promise<Entity>;
|
|
35
|
-
protected _update(doc: FirestoreDocument<FirestoreData>, entity: Partial<Entity>): Promise<void>;
|
|
36
33
|
protected _set(doc: FirestoreDocument<FirestoreData>, entity: Partial<Entity>, isUpdate?: boolean): Promise<import("../interfaces").DocumentSnapshot<FirestoreData>>;
|
|
37
34
|
protected buildServerTimestampObject(keys?: string[]): {};
|
|
38
35
|
}
|
package/repository/repository.js
CHANGED
|
@@ -15,30 +15,37 @@ const toPromise = callback => new Promise((resolve, reject) => tslib_1.__awaiter
|
|
|
15
15
|
reject(error);
|
|
16
16
|
}
|
|
17
17
|
}));
|
|
18
|
-
let BaseFirestoreRepository = class BaseFirestoreRepository extends repository_1.Repository {
|
|
18
|
+
let BaseFirestoreRepository = exports.BaseFirestoreRepository = class BaseFirestoreRepository extends repository_1.Repository {
|
|
19
19
|
constructor(adapter) {
|
|
20
20
|
super();
|
|
21
21
|
this.adapter = adapter;
|
|
22
22
|
this.genId = () => (0, utilities_1.generateId)();
|
|
23
23
|
}
|
|
24
24
|
list(paramMap, query = q => q) {
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
|
|
27
|
+
return this._list(query(collection));
|
|
28
|
+
});
|
|
27
29
|
}
|
|
28
30
|
get(paramMap) {
|
|
29
31
|
return this._get(this.doc(paramMap));
|
|
30
32
|
}
|
|
31
33
|
save(entity) {
|
|
32
|
-
|
|
33
|
-
return this._save(
|
|
34
|
+
const docRef = this.doc(Object.assign(Object.assign({}, entity), { id: (entity === null || entity === void 0 ? void 0 : entity.id) || this.genId() }));
|
|
35
|
+
return this._save(docRef, entity);
|
|
34
36
|
}
|
|
35
37
|
create(entity) {
|
|
36
38
|
const obj = (0, to_object_1.toObject)(entity);
|
|
37
39
|
const id = (obj === null || obj === void 0 ? void 0 : obj.id) || this.genId();
|
|
38
40
|
return toPromise(() => this.doc(Object.assign(Object.assign({}, obj), { id }))).then(doc => this._create(doc, entity));
|
|
39
41
|
}
|
|
42
|
+
createMany(entities) {
|
|
43
|
+
return Promise.all(entities.map(entity => this.create(entity)));
|
|
44
|
+
}
|
|
40
45
|
update(entity) {
|
|
41
|
-
return
|
|
46
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
return this.doc(entity).update(this.adapter.flattenForUpdate(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['updatedAt'])))).then(() => { });
|
|
48
|
+
});
|
|
42
49
|
}
|
|
43
50
|
delete(paramMap) {
|
|
44
51
|
return this.doc(paramMap).delete();
|
|
@@ -84,9 +91,7 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends repository_1
|
|
|
84
91
|
}));
|
|
85
92
|
}
|
|
86
93
|
_get(doc) {
|
|
87
|
-
const doesExist = (doc) => typeof doc.exists === 'function' ? doc.exists() : doc.exists;
|
|
88
94
|
return doc.get().then((doc => {
|
|
89
|
-
console.debug(doc.data());
|
|
90
95
|
if (!doc.data())
|
|
91
96
|
return null;
|
|
92
97
|
return this.converter.fromFirestore(doc);
|
|
@@ -97,11 +102,13 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends repository_1
|
|
|
97
102
|
.then(doc => this.converter.fromFirestore(doc)).then(e => [e, !!(entity === null || entity === void 0 ? void 0 : entity.id)]);
|
|
98
103
|
}
|
|
99
104
|
_create(doc, entity) {
|
|
100
|
-
return
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
const exists = yield doc.exists();
|
|
107
|
+
if (exists)
|
|
108
|
+
throw new Error('Document already exists');
|
|
109
|
+
return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt']))).then(() => doc.get()).then(doc => this.converter.fromFirestore(doc));
|
|
110
|
+
;
|
|
111
|
+
});
|
|
105
112
|
}
|
|
106
113
|
_set(doc, entity, isUpdate = true) {
|
|
107
114
|
return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(isUpdate ? ['updatedAt'] : [])), { merge: isUpdate }).then(() => doc.get());
|
|
@@ -110,9 +117,8 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends repository_1
|
|
|
110
117
|
return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
|
|
111
118
|
}
|
|
112
119
|
};
|
|
113
|
-
BaseFirestoreRepository = tslib_1.__decorate([
|
|
120
|
+
exports.BaseFirestoreRepository = BaseFirestoreRepository = tslib_1.__decorate([
|
|
114
121
|
(0, core_1.Injectable)(),
|
|
115
122
|
tslib_1.__metadata("design:paramtypes", [base_1.FirestoreAdapter])
|
|
116
123
|
], BaseFirestoreRepository);
|
|
117
|
-
exports.BaseFirestoreRepository = BaseFirestoreRepository;
|
|
118
124
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":";;;;AAAA,uCAA0C;AAC1C,iEAA6E;AAC7E,kEAA8D;AAC9D,wDAAsD;AAEtD,2CAAoD;AAKpD,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,OAAO,CAA8B,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;IAC/F,IAAI;QAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAAE;IAAC,OAAO,KAAK,EAAE;QAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAAE;AAC/D,CAAC,CAAA,CAAC,CAAC;AAGI,IAAe,uBAAuB,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":"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"}
|
package/testing/common.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import admin from 'firebase-admin';
|
|
1
2
|
import dayjs from 'dayjs';
|
|
2
|
-
import {
|
|
3
|
-
export declare const testAdapterFactory: () =>
|
|
4
|
-
export declare const timestampFactory: (dt: dayjs.Dayjs) =>
|
|
5
|
-
export declare function initializeTest(projectId?: string):
|
|
3
|
+
import { AdminFirestoreAdapter } from '../adapters/admin';
|
|
4
|
+
export declare const testAdapterFactory: () => AdminFirestoreAdapter;
|
|
5
|
+
export declare const timestampFactory: (dt: dayjs.Dayjs) => admin.firestore.Timestamp;
|
|
6
|
+
export declare function initializeTest(projectId?: string): AdminFirestoreAdapter;
|
package/testing/common.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.initializeTest = exports.timestampFactory = exports.testAdapterFactory =
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const firebase_admin_1 = tslib_1.__importDefault(require("firebase-admin"));
|
|
6
6
|
const admin_1 = require("../adapters/admin");
|
|
7
|
-
const testAdapterFactory = () => new admin_1.
|
|
7
|
+
const testAdapterFactory = () => new admin_1.AdminFirestoreAdapter();
|
|
8
8
|
exports.testAdapterFactory = testAdapterFactory;
|
|
9
9
|
const timestampFactory = (dt) => {
|
|
10
10
|
return firebase_admin_1.default.firestore.Timestamp.fromDate(dt.toDate());
|
package/testing/repository.js
CHANGED
|
@@ -5,22 +5,20 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const repository_1 = require("@nx-ddd/common/domain/repository");
|
|
6
6
|
const repository_2 = require("../repository");
|
|
7
7
|
const domain_1 = require("./domain");
|
|
8
|
-
let TransactionRepository = class TransactionRepository extends repository_1.Repository {
|
|
8
|
+
let TransactionRepository = exports.TransactionRepository = class TransactionRepository extends repository_1.Repository {
|
|
9
9
|
};
|
|
10
|
-
TransactionRepository = tslib_1.__decorate([
|
|
10
|
+
exports.TransactionRepository = TransactionRepository = tslib_1.__decorate([
|
|
11
11
|
(0, repository_2.FirestoreRepository)({
|
|
12
12
|
Entity: domain_1.Transaction,
|
|
13
13
|
path: 'transactions',
|
|
14
14
|
})
|
|
15
15
|
], TransactionRepository);
|
|
16
|
-
exports.
|
|
17
|
-
let UserTransactionRepository = class UserTransactionRepository extends repository_1.Repository {
|
|
16
|
+
let UserTransactionRepository = exports.UserTransactionRepository = class UserTransactionRepository extends repository_1.Repository {
|
|
18
17
|
};
|
|
19
|
-
UserTransactionRepository = tslib_1.__decorate([
|
|
18
|
+
exports.UserTransactionRepository = UserTransactionRepository = tslib_1.__decorate([
|
|
20
19
|
(0, repository_2.FirestoreRepository)({
|
|
21
20
|
Entity: domain_1.UserTransaction,
|
|
22
21
|
path: `users/:userId/transactions`,
|
|
23
22
|
})
|
|
24
23
|
], UserTransactionRepository);
|
|
25
|
-
exports.UserTransactionRepository = UserTransactionRepository;
|
|
26
24
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/repository.ts"],"names":[],"mappings":";;;;AAAA,iEAA8D;AAC9D,8CAAoD;AACpD,qCAAwD;AAMjD,IAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/testing/repository.ts"],"names":[],"mappings":";;;;AAAA,iEAA8D;AAC9D,8CAAoD;AACpD,qCAAwD;AAMjD,IAAM,qBAAqB,mCAA3B,MAAM,qBAAsB,SAAQ,uBAAuB;CAAI,CAAA;gCAAzD,qBAAqB;IAJjC,IAAA,gCAAmB,EAAC;QACnB,MAAM,EAAE,oBAAW;QACnB,IAAI,EAAE,cAAc;KACrB,CAAC;GACW,qBAAqB,CAAoC;AAM/D,IAAM,yBAAyB,uCAA/B,MAAM,yBAA0B,SAAQ,uBAA2B;CAAI,CAAA;oCAAjE,yBAAyB;IAJrC,IAAA,gCAAmB,EAAC;QACnB,MAAM,EAAE,wBAAe;QACvB,IAAI,EAAE,4BAA4B;KACnC,CAAC;GACW,yBAAyB,CAAwC"}
|