@nx-ddd/firestore 17.1.0 → 17.3.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 +20 -10
- package/adapters/admin/admin.adapter.d.ts +20 -11
- package/adapters/admin/admin.adapter.js +31 -16
- package/adapters/admin/admin.adapter.js.map +1 -1
- package/adapters/base/base.adapter.d.ts +9 -9
- package/adapters/base/base.adapter.js.map +1 -1
- package/adapters/firebase/firebase.adapter.d.ts +23 -12
- package/adapters/firebase/firebase.adapter.js +33 -27
- package/adapters/firebase/firebase.adapter.js.map +1 -1
- package/converter/converter.d.ts +1 -12
- package/dao/firestore.dao.d.ts +5 -5
- package/interfaces/interfaces.d.ts +24 -22
- package/interfaces/interfaces.js.map +1 -1
- package/package.json +3 -3
- package/path-builder/path-builder.d.ts +18 -5
- package/path-builder/path-builder.js +5 -4
- package/path-builder/path-builder.js.map +1 -1
- package/query/firestore.query.d.ts +4 -6
- package/query/firestore.query.js.map +1 -1
- package/repository/repository.d.ts +36 -25
- package/repository/repository.js +34 -5
- package/repository/repository.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @NxDDD/
|
|
1
|
+
# @NxDDD/Firestore
|
|
2
2
|
`@nx-ddd/firestore` is a library that wraps Firestore in the Repository pattern. It uses the Adapter pattern to enable the same codebase to work with both FirebaseAdmin and Firebase.
|
|
3
3
|
|
|
4
4
|
## Install
|
|
@@ -12,15 +12,12 @@ $ npm i @nx-ddd/firestore
|
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
14
|
// libs/common/infrastructure/repositories/user.repository
|
|
15
|
-
import 'reflect-metadata';
|
|
16
|
-
import '@angular/compiler';
|
|
17
15
|
import { inject, Injectable } from '@angular/core';
|
|
18
16
|
import { TransformToDayjs } from '@nx-ddd/common/domain/models';
|
|
17
|
+
import { bootstrap } from '@nx-ddd/core';
|
|
18
|
+
import { FirestoreRepository, Firestore, injectConverter } from '@nx-ddd/firestore';
|
|
19
19
|
import { IsDayjs } from 'class-validator-extended';
|
|
20
20
|
import dayjs from 'dayjs';
|
|
21
|
-
import { BaseFirestoreRepository, Firestore, injectConverter, pathBuilderFactory } from '@nx-ddd/firestore';
|
|
22
|
-
import { FirestoreAdapter } from '@nx-ddd/firestore/adapters/base';
|
|
23
|
-
import { bootstrap } from '@nx-ddd/core/v2';
|
|
24
21
|
|
|
25
22
|
export class User {
|
|
26
23
|
@Firestore.ID() id: string;
|
|
@@ -30,11 +27,9 @@ export class User {
|
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
@Injectable({providedIn: 'root'})
|
|
33
|
-
export class UserRepository extends
|
|
34
|
-
|
|
30
|
+
export class UserRepository extends FirestoreRepository<User> {
|
|
31
|
+
readonly collectionPath = `users/:id`;
|
|
35
32
|
protected converter = injectConverter(User);
|
|
36
|
-
protected pathBuilder = pathBuilderFactory(this.collectionPath);
|
|
37
|
-
protected adapter = inject(FirestoreAdapter);
|
|
38
33
|
}
|
|
39
34
|
```
|
|
40
35
|
|
|
@@ -43,8 +38,17 @@ Use `UserRepository` in NodeJS.
|
|
|
43
38
|
|
|
44
39
|
```ts
|
|
45
40
|
// apps/api/src/app/main.ts
|
|
41
|
+
import 'reflect-metadata';
|
|
42
|
+
import '@angular/compiler';
|
|
46
43
|
import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/admin';
|
|
47
44
|
import { UserRepository } from 'libs/common/infrastructure/repositories/user.repository';
|
|
45
|
+
import dayjs from 'dayjs';
|
|
46
|
+
|
|
47
|
+
import admin from 'firebase-admin';
|
|
48
|
+
|
|
49
|
+
admin.initializeApp({
|
|
50
|
+
credential: admin.credential.applicationDefault(),
|
|
51
|
+
});
|
|
48
52
|
|
|
49
53
|
bootstrap([
|
|
50
54
|
provideFirestoreAdapter(),
|
|
@@ -67,8 +71,14 @@ Use `UserRepository` in browser.
|
|
|
67
71
|
|
|
68
72
|
```ts
|
|
69
73
|
// apps/app/src/app/main.ts
|
|
74
|
+
import 'reflect-metadata';
|
|
75
|
+
import '@angular/compiler';
|
|
70
76
|
import { provideFirestoreAdapter } from '@nx-ddd/firestore/adapters/firebase';
|
|
71
77
|
import { UserRepository } from 'libs/common/infrastructure/repositories/user.repository';
|
|
78
|
+
import { initializeApp } from "firebase/app";
|
|
79
|
+
import dayjs from 'dayjs';
|
|
80
|
+
|
|
81
|
+
const app = initializeApp({...});
|
|
72
82
|
|
|
73
83
|
bootstrap([
|
|
74
84
|
provideFirestoreAdapter(),
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import admin from 'firebase-admin';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { DocumentData, Transaction } from 'firebase-admin/firestore';
|
|
4
|
+
import { DocumentReference, CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query } from '../../interfaces';
|
|
5
|
+
import { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp } from '../base';
|
|
6
|
+
type CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionReference<AppModelType, DbModelType, admin.firestore.CollectionReference<AppModelType, DbModelType>>;
|
|
7
|
+
type CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionGroup<AppModelType, DbModelType, admin.firestore.CollectionGroup<AppModelType, DbModelType>>;
|
|
8
|
+
type Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _Query<AppModelType, DbModelType, admin.firestore.Query<AppModelType, DbModelType>>;
|
|
9
|
+
type QueryFn<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _QueryFn<AppModelType, DbModelType, admin.firestore.Query>;
|
|
10
|
+
type Origin<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = admin.firestore.CollectionReference<AppModelType, DbModelType> | admin.firestore.CollectionGroup<AppModelType, DbModelType> | admin.firestore.Query<AppModelType, DbModelType>;
|
|
11
|
+
type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = CollectionReference<AppModelType, DbModelType> | CollectionGroup<AppModelType, DbModelType> | Query<AppModelType, DbModelType>;
|
|
12
|
+
type InferCollectionLike<O extends Origin> = O extends admin.firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> : O extends admin.firestore.CollectionGroup<infer A, infer B> ? CollectionGroup<A, B> : O extends admin.firestore.Query<infer A, infer B> ? Query<A, B> : never;
|
|
13
|
+
export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
|
|
14
|
+
export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
|
|
5
15
|
export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
|
|
6
16
|
protected firestore: admin.firestore.Firestore;
|
|
7
17
|
get FieldValue(): typeof admin.firestore.FieldValue;
|
|
@@ -13,18 +23,17 @@ export declare class AdminFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs>
|
|
|
13
23
|
convertDateToTimestamp(date: dayjs.Dayjs): admin.firestore.Timestamp;
|
|
14
24
|
convertTimestampToDate(timestamp: admin.firestore.Timestamp): dayjs.Dayjs;
|
|
15
25
|
doc(path: string): DocumentReference<any, admin.firestore.DocumentReference>;
|
|
16
|
-
collection(path: string):
|
|
17
|
-
collectionGroup(collectionId: string):
|
|
18
|
-
runTransaction(
|
|
19
|
-
query<
|
|
20
|
-
where<
|
|
21
|
-
orderBy<
|
|
22
|
-
limit<
|
|
26
|
+
collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
|
|
27
|
+
collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
|
|
28
|
+
runTransaction<T>(updateFunction: (transaction: Transaction) => Promise<T>): Promise<T>;
|
|
29
|
+
query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>, ...queryFnArray: QueryFn<AppModelType, DbModelType>[]): Query<AppModelType, DbModelType>;
|
|
30
|
+
where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType>;
|
|
31
|
+
orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order?: 'asc' | 'desc'): QueryFn<AppModelType, DbModelType>;
|
|
32
|
+
limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn<AppModelType, DbModelType>;
|
|
23
33
|
batch(): admin.firestore.WriteBatch;
|
|
24
34
|
}
|
|
25
|
-
export declare class AdminFirestoreModule {
|
|
26
|
-
}
|
|
27
35
|
export declare function provideFirestoreAdapter(): {
|
|
28
36
|
provide: typeof FirestoreAdapter;
|
|
29
37
|
useClass: new () => FirestoreAdapter<any>;
|
|
30
38
|
};
|
|
39
|
+
export {};
|
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Injectable
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
3
|
import dayjs from 'dayjs';
|
|
4
4
|
import admin from 'firebase-admin';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
5
6
|
import { FirestoreAdapter, provideFirestoreAdapter as _provideFirestoreAdapter } from '../base';
|
|
7
|
+
export function wrapCollectionLike(origin) {
|
|
8
|
+
return {
|
|
9
|
+
__ref: origin,
|
|
10
|
+
stateChanges: () => {
|
|
11
|
+
const subject = new Subject();
|
|
12
|
+
origin.onSnapshot(snapshot => {
|
|
13
|
+
const actions = snapshot.docChanges().map(change => ({
|
|
14
|
+
type: change.type, payload: { doc: change.doc },
|
|
15
|
+
}));
|
|
16
|
+
subject.next(actions);
|
|
17
|
+
});
|
|
18
|
+
return subject.asObservable();
|
|
19
|
+
},
|
|
20
|
+
get: () => origin.get(),
|
|
21
|
+
count: () => origin.get().then(snapshot => snapshot.size),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function unwrapCollectionLike(collection) {
|
|
25
|
+
return collection.__ref;
|
|
26
|
+
}
|
|
6
27
|
let AdminFirestoreAdapter = class AdminFirestoreAdapter extends FirestoreAdapter {
|
|
7
28
|
constructor() {
|
|
8
29
|
super(...arguments);
|
|
@@ -47,16 +68,20 @@ let AdminFirestoreAdapter = class AdminFirestoreAdapter extends FirestoreAdapter
|
|
|
47
68
|
};
|
|
48
69
|
}
|
|
49
70
|
collection(path) {
|
|
50
|
-
|
|
71
|
+
const collectionRef = this.firestore.collection(path);
|
|
72
|
+
return wrapCollectionLike(collectionRef);
|
|
51
73
|
}
|
|
52
74
|
collectionGroup(collectionId) {
|
|
53
|
-
|
|
75
|
+
const collectionRef = this.firestore.collectionGroup(collectionId);
|
|
76
|
+
return wrapCollectionLike(collectionRef);
|
|
54
77
|
}
|
|
55
|
-
runTransaction(
|
|
56
|
-
return this.firestore.runTransaction(
|
|
78
|
+
runTransaction(updateFunction) {
|
|
79
|
+
return this.firestore.runTransaction(updateFunction);
|
|
57
80
|
}
|
|
58
81
|
query(collection, ...queryFnArray) {
|
|
59
|
-
|
|
82
|
+
const ref = unwrapCollectionLike(collection);
|
|
83
|
+
const query = queryFnArray.reduce((_ref, queryFn) => queryFn(_ref), ref);
|
|
84
|
+
return wrapCollectionLike(query);
|
|
60
85
|
}
|
|
61
86
|
where(key, evaluation, value) {
|
|
62
87
|
return (collection) => collection.where(key, evaluation, value);
|
|
@@ -75,16 +100,6 @@ AdminFirestoreAdapter = __decorate([
|
|
|
75
100
|
Injectable()
|
|
76
101
|
], AdminFirestoreAdapter);
|
|
77
102
|
export { AdminFirestoreAdapter };
|
|
78
|
-
let AdminFirestoreModule = class AdminFirestoreModule {
|
|
79
|
-
};
|
|
80
|
-
AdminFirestoreModule = __decorate([
|
|
81
|
-
NgModule({
|
|
82
|
-
providers: [
|
|
83
|
-
{ provide: FirestoreAdapter, useClass: AdminFirestoreAdapter },
|
|
84
|
-
],
|
|
85
|
-
})
|
|
86
|
-
], AdminFirestoreModule);
|
|
87
|
-
export { AdminFirestoreModule };
|
|
88
103
|
export function provideFirestoreAdapter() {
|
|
89
104
|
return _provideFirestoreAdapter(AdminFirestoreAdapter);
|
|
90
105
|
}
|
|
@@ -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,OAAO,EAAE,UAAU,EAAE,
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type QueryFn<
|
|
1
|
+
import type { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData, Timestamp, Query, FieldValue, DocumentData } from '../../interfaces';
|
|
2
|
+
export type QueryFn<AppModelType, DbModelType, R> = (collection?: any) => R;
|
|
3
3
|
export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
|
|
4
4
|
export declare abstract class FirestoreAdapter<Date = any> {
|
|
5
5
|
protected abstract isTimestamp(v: any): v is Timestamp;
|
|
@@ -10,15 +10,15 @@ export declare abstract class FirestoreAdapter<Date = any> {
|
|
|
10
10
|
abstract get Timestamp(): any;
|
|
11
11
|
abstract get FieldValue(): any;
|
|
12
12
|
abstract get FieldPath(): any;
|
|
13
|
-
abstract doc<
|
|
14
|
-
abstract collection<
|
|
15
|
-
abstract collectionGroup<
|
|
13
|
+
abstract doc<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): DocumentReference<AppModelType>;
|
|
14
|
+
abstract collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
|
|
15
|
+
abstract collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
|
|
16
|
+
abstract query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionReference<AppModelType, DbModelType>, ...queryFnArray: QueryFn<AppModelType, DbModelType, any>[]): Query<AppModelType, DbModelType>;
|
|
17
|
+
abstract where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<AppModelType, DbModelType, any>;
|
|
18
|
+
abstract orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order: 'asc' | 'desc'): QueryFn<AppModelType, DbModelType, any>;
|
|
19
|
+
abstract limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn<AppModelType, DbModelType, any>;
|
|
16
20
|
abstract runTransaction(fn: any): any;
|
|
17
21
|
abstract batch(): any;
|
|
18
|
-
abstract query<Data>(collection: FirestoreCollection<Data>, ...queryFnArray: QueryFn<Data>[]): FirestoreQuery<Data>;
|
|
19
|
-
abstract where<Data>(key: string, evaluation: WhereFilterOp, value: unknown): QueryFn<Data>;
|
|
20
|
-
abstract orderBy<Data>(key: string, order: 'asc' | 'desc'): QueryFn<Data>;
|
|
21
|
-
abstract limit<Data>(n: number): QueryFn<Data>;
|
|
22
22
|
toFirestoreData<Entity>(entity: Entity): ToFirestoreData<Entity, Date>;
|
|
23
23
|
fromFirestoreData<Entity>(data: ToFirestoreData<Entity, Date>): Entity;
|
|
24
24
|
toFirestore<T>(obj: object, Entity: new () => T): object;
|
|
@@ -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,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
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,10 +1,20 @@
|
|
|
1
1
|
import { FieldValue, Timestamp, FieldPath } from 'firebase/firestore';
|
|
2
2
|
import dayjs from 'dayjs';
|
|
3
|
-
import { FirestoreAdapter, QueryFn, WhereFilterOp } from '../base';
|
|
4
|
-
import
|
|
3
|
+
import { FirestoreAdapter, QueryFn as _QueryFn, WhereFilterOp } from '../base';
|
|
4
|
+
import type firestore from 'firebase/firestore';
|
|
5
|
+
import { CollectionReference as _CollectionReference, CollectionGroup as _CollectionGroup, Query as _Query, DocumentReference, DocumentData } from '../../interfaces';
|
|
6
|
+
type CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionReference<AppModelType, DbModelType, firestore.CollectionReference<AppModelType, DbModelType>>;
|
|
7
|
+
type CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _CollectionGroup<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;
|
|
8
|
+
type Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _Query<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;
|
|
9
|
+
type QueryFn<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = _QueryFn<AppModelType, DbModelType, firestore.QueryConstraint>;
|
|
10
|
+
type Origin<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = firestore.CollectionReference<AppModelType, DbModelType> | firestore.Query<AppModelType, DbModelType> | firestore.Query<AppModelType, DbModelType>;
|
|
11
|
+
type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> = CollectionReference<AppModelType, DbModelType> | CollectionGroup<AppModelType, DbModelType> | Query<AppModelType, DbModelType>;
|
|
12
|
+
type InferCollectionLike<O extends Origin> = O extends firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> : O extends firestore.Query<infer A, infer B> ? CollectionGroup<A, B> : O extends firestore.Query<infer A, infer B> ? Query<A, B> : never;
|
|
13
|
+
export declare function wrapCollectionLike<O extends Origin>(origin: O): InferCollectionLike<O>;
|
|
14
|
+
export declare function unwrapCollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionLike<AppModelType, DbModelType>): Origin<AppModelType, DbModelType>;
|
|
5
15
|
export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {
|
|
6
|
-
firestore:
|
|
7
|
-
constructor(firestore?:
|
|
16
|
+
firestore: firestore.Firestore;
|
|
17
|
+
constructor(firestore?: firestore.Firestore);
|
|
8
18
|
get FieldValue(): typeof FieldValue;
|
|
9
19
|
get Timestamp(): typeof Timestamp;
|
|
10
20
|
get FieldPath(): FieldPath;
|
|
@@ -13,13 +23,14 @@ export declare class FirebaseFirestoreAdapter extends FirestoreAdapter<dayjs.Day
|
|
|
13
23
|
protected isDate(v: any): v is dayjs.Dayjs;
|
|
14
24
|
convertDateToTimestamp(date: dayjs.Dayjs): Timestamp;
|
|
15
25
|
convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs;
|
|
16
|
-
doc(path: string):
|
|
17
|
-
collection(path: string):
|
|
18
|
-
collectionGroup(collectionId: string):
|
|
26
|
+
doc(path: string): DocumentReference<any>;
|
|
27
|
+
collection<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(path: string): CollectionReference<AppModelType, DbModelType>;
|
|
28
|
+
collectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collectionId: string): CollectionGroup<AppModelType, DbModelType>;
|
|
29
|
+
query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(collection: CollectionReference<AppModelType, DbModelType>, ...queryFnArray: QueryFn[]): Query<AppModelType, DbModelType>;
|
|
30
|
+
where<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn;
|
|
31
|
+
orderBy<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(key: string, order?: 'asc' | 'desc'): QueryFn;
|
|
32
|
+
limit<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData>(n: number): QueryFn;
|
|
19
33
|
runTransaction(): void;
|
|
20
|
-
|
|
21
|
-
where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data>;
|
|
22
|
-
orderBy<Data>(key: string, order?: 'asc' | 'desc'): QueryFn<Data>;
|
|
23
|
-
limit<Data>(n: number): QueryFn<Data>;
|
|
24
|
-
batch(): import("@firebase/firestore").WriteBatch;
|
|
34
|
+
batch(): firestore.WriteBatch;
|
|
25
35
|
}
|
|
36
|
+
export {};
|
|
@@ -4,6 +4,26 @@ import dayjs from 'dayjs';
|
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { FirestoreAdapter } from '../base';
|
|
6
6
|
import { Injectable } from '@angular/core';
|
|
7
|
+
export function wrapCollectionLike(origin) {
|
|
8
|
+
return {
|
|
9
|
+
__ref: origin,
|
|
10
|
+
stateChanges: () => {
|
|
11
|
+
const subject = new Subject();
|
|
12
|
+
onSnapshot(origin, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
|
|
13
|
+
type: change.type,
|
|
14
|
+
payload: {
|
|
15
|
+
doc: change.doc
|
|
16
|
+
},
|
|
17
|
+
}))));
|
|
18
|
+
return subject.asObservable();
|
|
19
|
+
},
|
|
20
|
+
get: () => getDocs(origin),
|
|
21
|
+
count: () => getDocs(origin).then(snapshot => snapshot.size),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function unwrapCollectionLike(collection) {
|
|
25
|
+
return collection.__ref;
|
|
26
|
+
}
|
|
7
27
|
let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreAdapter {
|
|
8
28
|
constructor(firestore = getFirestore()) {
|
|
9
29
|
super();
|
|
@@ -44,44 +64,27 @@ let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreA
|
|
|
44
64
|
delete: () => deleteDoc(docRef),
|
|
45
65
|
stateChanges: () => {
|
|
46
66
|
const subject = new Subject();
|
|
47
|
-
onSnapshot(docRef, (doc) => subject.next({
|
|
67
|
+
onSnapshot(docRef, (doc) => subject.next({
|
|
68
|
+
id: doc.id,
|
|
69
|
+
ref: doc.ref,
|
|
70
|
+
data: () => doc.data(),
|
|
71
|
+
get: (fieldPath) => doc.get(fieldPath),
|
|
72
|
+
}));
|
|
48
73
|
return subject.asObservable();
|
|
49
74
|
},
|
|
50
75
|
};
|
|
51
76
|
}
|
|
52
77
|
collection(path) {
|
|
53
78
|
const ref = collection(this.firestore, path);
|
|
54
|
-
return
|
|
55
|
-
__ref: ref,
|
|
56
|
-
stateChanges: () => {
|
|
57
|
-
const subject = new Subject();
|
|
58
|
-
onSnapshot(ref, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
|
|
59
|
-
type: change.type, payload: { doc: change.doc },
|
|
60
|
-
}))));
|
|
61
|
-
return subject.asObservable();
|
|
62
|
-
},
|
|
63
|
-
get: () => getDocs(ref),
|
|
64
|
-
};
|
|
79
|
+
return wrapCollectionLike(ref);
|
|
65
80
|
}
|
|
66
81
|
collectionGroup(collectionId) {
|
|
67
82
|
const ref = collectionGroup(this.firestore, collectionId);
|
|
68
|
-
return
|
|
69
|
-
__ref: ref,
|
|
70
|
-
stateChanges: () => {
|
|
71
|
-
const subject = new Subject();
|
|
72
|
-
onSnapshot(ref, (snapshot) => subject.next(snapshot.docChanges().map(change => ({
|
|
73
|
-
type: change.type, payload: { doc: change.doc },
|
|
74
|
-
}))));
|
|
75
|
-
return subject.asObservable();
|
|
76
|
-
},
|
|
77
|
-
get: () => getDocs(ref),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
runTransaction() {
|
|
81
|
-
return;
|
|
83
|
+
return wrapCollectionLike(ref);
|
|
82
84
|
}
|
|
83
85
|
query(collection, ...queryFnArray) {
|
|
84
|
-
|
|
86
|
+
const ref = unwrapCollectionLike(collection);
|
|
87
|
+
return wrapCollectionLike(query(ref, ...queryFnArray.map(queryFn => queryFn())));
|
|
85
88
|
}
|
|
86
89
|
where(fieldPath, opStr, value) {
|
|
87
90
|
return () => where(fieldPath, opStr, value);
|
|
@@ -92,6 +95,9 @@ let FirebaseFirestoreAdapter = class FirebaseFirestoreAdapter extends FirestoreA
|
|
|
92
95
|
limit(n) {
|
|
93
96
|
return () => limit(n);
|
|
94
97
|
}
|
|
98
|
+
runTransaction() {
|
|
99
|
+
throw new Error('FirebaseFirestoreAdapter#runTransaction is not implemented');
|
|
100
|
+
}
|
|
95
101
|
batch() {
|
|
96
102
|
return writeBatch(this.firestore);
|
|
97
103
|
}
|
|
@@ -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,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,
|
|
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.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FirestoreAdapter } from '../adapters/base';
|
|
2
1
|
import { DocumentSnapshot } from '../interfaces';
|
|
3
2
|
export interface IFirestoreConverter<Entity extends {
|
|
4
3
|
id: string;
|
|
@@ -6,16 +5,6 @@ export interface IFirestoreConverter<Entity extends {
|
|
|
6
5
|
fromFirestore(doc: DocumentSnapshot<object>): Entity;
|
|
7
6
|
toFirestore(entity: Partial<Entity>): object;
|
|
8
7
|
}
|
|
9
|
-
declare class BasicConverter<E extends {
|
|
10
|
-
id: string;
|
|
11
|
-
}> {
|
|
12
|
-
protected readonly Entity: new () => E;
|
|
13
|
-
protected readonly adapter: FirestoreAdapter;
|
|
14
|
-
constructor(Entity: new () => E, adapter: FirestoreAdapter);
|
|
15
|
-
fromFirestore(doc: DocumentSnapshot<any>): E;
|
|
16
|
-
toFirestore(entity: E): object;
|
|
17
|
-
}
|
|
18
8
|
export declare function injectConverter<Entity extends {
|
|
19
9
|
id: string;
|
|
20
|
-
}>(Entity: new () => Entity):
|
|
21
|
-
export {};
|
|
10
|
+
}>(Entity: new () => Entity): IFirestoreConverter<Entity>;
|
package/dao/firestore.dao.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import { FirestoreAdapter } from '../adapters/base';
|
|
3
|
-
import {
|
|
3
|
+
import { CollectionReference, CollectionGroup, DocumentReference, ToFirestoreData } from '../interfaces';
|
|
4
4
|
import { FirestorePathBuilder } from '../path-builder';
|
|
5
5
|
export declare abstract class FirestoreDAO<Entity extends {
|
|
6
6
|
id: string;
|
|
@@ -8,10 +8,10 @@ export declare abstract class FirestoreDAO<Entity extends {
|
|
|
8
8
|
protected adapter: FirestoreAdapter;
|
|
9
9
|
protected abstract pathBuilder: FirestorePathBuilder<Entity>;
|
|
10
10
|
constructor(adapter: FirestoreAdapter);
|
|
11
|
-
collection(paramMap?: Partial<Entity>):
|
|
12
|
-
collectionGroup():
|
|
11
|
+
collection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData>;
|
|
12
|
+
collectionGroup(): CollectionGroup<FirestoreData>;
|
|
13
13
|
doc(paramMap: Partial<Entity> & {
|
|
14
14
|
id: string;
|
|
15
|
-
}):
|
|
16
|
-
getCollection(paramMap?: Partial<Entity>):
|
|
15
|
+
}): DocumentReference<FirestoreData>;
|
|
16
|
+
getCollection(paramMap?: Partial<Entity>): CollectionReference<FirestoreData, import("../interfaces").DocumentData, any>;
|
|
17
17
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import type { QueryDocumentSnapshot } from 'firebase-admin/firestore';
|
|
1
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
export type DocumentData = {
|
|
4
|
+
[field: string]: any;
|
|
5
|
+
};
|
|
2
6
|
export interface GetOptions {
|
|
3
7
|
readonly source?: 'default' | 'server' | 'cache';
|
|
4
8
|
}
|
|
@@ -8,15 +12,17 @@ export interface DocumentChangeAction<T> {
|
|
|
8
12
|
doc: DocumentSnapshot<T>;
|
|
9
13
|
};
|
|
10
14
|
}
|
|
11
|
-
export interface DocumentSnapshot<
|
|
15
|
+
export interface DocumentSnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
|
|
12
16
|
id: string;
|
|
13
17
|
ref: {
|
|
14
18
|
path: string;
|
|
15
19
|
};
|
|
16
|
-
data: () =>
|
|
20
|
+
data: () => AppModelType | undefined;
|
|
21
|
+
get: (fieldPath: string) => any;
|
|
22
|
+
exists?: (() => boolean) | boolean;
|
|
17
23
|
}
|
|
18
|
-
export interface QuerySnapshot<
|
|
19
|
-
docs:
|
|
24
|
+
export interface QuerySnapshot<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData> {
|
|
25
|
+
docs: Array<QueryDocumentSnapshot<AppModelType, DbModelType>>;
|
|
20
26
|
}
|
|
21
27
|
export interface Timestamp {
|
|
22
28
|
readonly seconds: number;
|
|
@@ -36,28 +42,24 @@ export type FieldValue = any;
|
|
|
36
42
|
export type ToFirestoreData<Entity, Date> = {
|
|
37
43
|
[K in keyof Entity]: Entity[K] extends Date ? Timestamp | FieldValue : Entity[K];
|
|
38
44
|
};
|
|
39
|
-
export interface DocumentReference<DocumentData,
|
|
40
|
-
__ref?:
|
|
45
|
+
export interface DocumentReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
|
|
46
|
+
__ref?: Origin;
|
|
41
47
|
exists(): Promise<boolean>;
|
|
42
|
-
set(data:
|
|
43
|
-
get(): Promise<DocumentSnapshot<
|
|
44
|
-
update(data:
|
|
48
|
+
set(data: AppModelType, options?: any): Promise<void | any>;
|
|
49
|
+
get(): Promise<DocumentSnapshot<AppModelType, DbModelType>>;
|
|
50
|
+
update(data: AppModelType): Promise<void | any>;
|
|
45
51
|
delete(): Promise<void | any>;
|
|
46
|
-
stateChanges?: () => Observable<DocumentSnapshot<
|
|
52
|
+
stateChanges?: () => Observable<DocumentSnapshot<AppModelType, DbModelType>>;
|
|
47
53
|
}
|
|
48
|
-
export
|
|
49
|
-
export interface FirestoreCollection<DocumentData, RawFirestoreCollection = any> {
|
|
50
|
-
__ref?: RawFirestoreCollection;
|
|
51
|
-
stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
|
|
52
|
-
get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
|
|
54
|
+
export interface CollectionReference<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> extends Query<AppModelType, DbModelType, Origin> {
|
|
53
55
|
}
|
|
54
|
-
export interface
|
|
55
|
-
__ref?: any;
|
|
56
|
-
stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
|
|
57
|
-
get(options?: GetOptions): Promise<QuerySnapshot<DocumentData>>;
|
|
56
|
+
export interface CollectionGroup<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> extends Query<AppModelType, DbModelType, Origin> {
|
|
58
57
|
}
|
|
59
|
-
export interface
|
|
60
|
-
__ref?:
|
|
58
|
+
export interface Query<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> {
|
|
59
|
+
__ref?: Origin;
|
|
61
60
|
stateChanges?: () => Observable<DocumentChangeAction<DocumentData>[]>;
|
|
62
|
-
get(options?: GetOptions): Promise<QuerySnapshot<
|
|
61
|
+
get(options?: GetOptions): Promise<QuerySnapshot<AppModelType, DbModelType>>;
|
|
62
|
+
onSnapshot?(onNext: (snapshot: QuerySnapshot<AppModelType, DbModelType>) => void, onError?: (error: Error) => void): () => void;
|
|
63
|
+
count(): Promise<number>;
|
|
63
64
|
}
|
|
65
|
+
export type CollectionLike<AppModelType = DocumentData, DbModelType extends DocumentData = DocumentData, Origin = any> = CollectionReference<AppModelType, DbModelType, Origin> | CollectionGroup<AppModelType, DbModelType, Origin> | Query<AppModelType, DbModelType, Origin>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/interfaces/interfaces.ts"],"names":[],"mappings":"AA+BC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/firestore",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.3.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",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"peerDependencies": {
|
|
12
12
|
"@angular/compiler": "^17.0.0",
|
|
13
13
|
"@angular/core": "^17.0.0",
|
|
14
|
-
"@nx-ddd/common": "17.
|
|
15
|
-
"@nx-ddd/core": "17.
|
|
14
|
+
"@nx-ddd/common": "17.3.0",
|
|
15
|
+
"@nx-ddd/core": "17.3.0",
|
|
16
16
|
"axios": "^1.0.0",
|
|
17
17
|
"class-validator-extended": "^3.2.0",
|
|
18
18
|
"dayjs": "1.11.10",
|
|
@@ -4,18 +4,31 @@ type CollectionParamMap<Entity extends {
|
|
|
4
4
|
type DocParamMap<Entity extends {
|
|
5
5
|
id: string;
|
|
6
6
|
}> = CollectionParamMap<Entity> & Pick<Entity, 'id'>;
|
|
7
|
+
export type ExtractParams<T extends string> = T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {
|
|
8
|
+
[K in Param | keyof ExtractParams<Rest>]: string;
|
|
9
|
+
} : T extends `${infer _Start}:${infer Param}` ? {
|
|
10
|
+
[K in Param]: string;
|
|
11
|
+
} : {};
|
|
12
|
+
export type ColParam<T extends {
|
|
13
|
+
readonly collectionPath: string;
|
|
14
|
+
}> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
|
|
15
|
+
export type DocParam<T extends {
|
|
16
|
+
readonly collectionPath: string;
|
|
17
|
+
}> = ColParam<T> & {
|
|
18
|
+
id: string;
|
|
19
|
+
};
|
|
7
20
|
export declare class FirestorePathBuilder<Entity extends {
|
|
8
21
|
id: string;
|
|
9
|
-
}> {
|
|
22
|
+
}, Path extends string = string> {
|
|
10
23
|
private paths;
|
|
11
24
|
doc(param: DocParamMap<Entity>): string;
|
|
12
|
-
collection(param?:
|
|
25
|
+
collection(param?: Omit<ExtractParams<Path>, 'id'> | {}): string;
|
|
13
26
|
collectionGroup(): string;
|
|
14
27
|
constructor(paths: string[]);
|
|
15
28
|
}
|
|
16
|
-
export declare
|
|
29
|
+
export declare function pathBuilderFactory<E extends {
|
|
17
30
|
id: string;
|
|
18
|
-
}>(path:
|
|
19
|
-
export declare
|
|
31
|
+
}, Path extends string = string>(path: Path): FirestorePathBuilder<E, Path>;
|
|
32
|
+
export declare function parsePath<Path extends string = string>(path: Path): string[];
|
|
20
33
|
export declare const resolvePaths: (obj: object, paths: string[]) => string;
|
|
21
34
|
export {};
|
|
@@ -12,16 +12,17 @@ export class FirestorePathBuilder {
|
|
|
12
12
|
this.paths = paths;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export function pathBuilderFactory(path) {
|
|
16
16
|
const paths = parsePath(path);
|
|
17
17
|
return new FirestorePathBuilder(paths);
|
|
18
|
-
}
|
|
19
|
-
|
|
18
|
+
}
|
|
19
|
+
;
|
|
20
|
+
export function parsePath(path) {
|
|
20
21
|
const paths = path.split('/').filter(p => p.length);
|
|
21
22
|
if (!paths[paths.length - 1].startsWith(':'))
|
|
22
23
|
paths.push(':id');
|
|
23
24
|
return paths;
|
|
24
|
-
}
|
|
25
|
+
}
|
|
25
26
|
export const resolvePaths = (obj, paths) => {
|
|
26
27
|
return paths.map((path) => path.startsWith(':') ? resolvePath(obj, path.slice(1)) : path).join('/');
|
|
27
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path-builder.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/path-builder/path-builder.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,oBAAoB;IAI/B,GAAG,CAAC,KAA0B;QAC5B,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,QAA8C,EAAE;QACzD,OAAO,YAAY,CAAC,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;AAED,MAAM,UAAU,kBAAkB,CAIhC,IAAU;IAEV,MAAM,KAAK,GAAG,SAAS,CAAO,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,SAAS,CAA+B,IAAU;IAChE,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;AAED,MAAM,CAAC,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;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"}
|
|
@@ -4,15 +4,14 @@ import { FirestoreAdapter } from '../adapters/base';
|
|
|
4
4
|
import { IFirestoreConverter } from '../converter';
|
|
5
5
|
import { FirestoreDAO } from '../dao';
|
|
6
6
|
import { FirestorePathBuilder } from '../path-builder';
|
|
7
|
-
import {
|
|
8
|
-
type FirestoreCollectionType<D> = FirestoreCollection<D> | FirestoreCollectionGroup<D>;
|
|
7
|
+
import { CollectionReference, CollectionGroup, ToFirestoreData, CollectionLike } from '../interfaces';
|
|
9
8
|
export declare class FirestoreQuery<Entity extends {
|
|
10
9
|
id: string;
|
|
11
10
|
} = any, FirestoreData = ToFirestoreData<Entity, dayjs.Dayjs>> extends FirestoreDAO<Entity, FirestoreData> {
|
|
12
11
|
protected converter: IFirestoreConverter<Entity>;
|
|
13
12
|
protected pathBuilder: FirestorePathBuilder<Entity>;
|
|
14
13
|
constructor(adapter: FirestoreAdapter, converter: IFirestoreConverter<Entity>, pathBuilder: FirestorePathBuilder<Entity>);
|
|
15
|
-
protected readonly collection$: ReplaySubject<
|
|
14
|
+
protected readonly collection$: ReplaySubject<CollectionLike<FirestoreData>>;
|
|
16
15
|
protected readonly list$: Observable<Entity[]>;
|
|
17
16
|
/** @deprecated */
|
|
18
17
|
listChanges(paramMap?: Partial<Entity>, options?: {
|
|
@@ -28,8 +27,7 @@ export declare class FirestoreQuery<Entity extends {
|
|
|
28
27
|
id: string;
|
|
29
28
|
}): Promise<Entity>;
|
|
30
29
|
list(paramMap?: Partial<Entity>): Promise<Entity[]>;
|
|
31
|
-
protected listChangesByCollectionRef(collection:
|
|
30
|
+
protected listChangesByCollectionRef(collection: CollectionReference<FirestoreData> | CollectionGroup<FirestoreData>): Observable<Entity[]>;
|
|
32
31
|
protected switchCollectionRef(paramMap?: Partial<Entity>): void;
|
|
33
|
-
switchCollection(collection:
|
|
32
|
+
switchCollection(collection: CollectionLike<any>): void;
|
|
34
33
|
}
|
|
35
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.query.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/query/firestore.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1G,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
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,33 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Repository } from '@nx-ddd/common/domain/repository';
|
|
2
2
|
import { FirestoreAdapter } from '../adapters/base';
|
|
3
3
|
import { IFirestoreConverter } from '../converter';
|
|
4
|
-
import { FirestorePathBuilder } from '../path-builder';
|
|
5
|
-
import {
|
|
6
|
-
|
|
4
|
+
import { ExtractParams, FirestorePathBuilder } from '../path-builder';
|
|
5
|
+
import { CollectionReference, CollectionGroup, DocumentReference, DocumentSnapshot } from '../interfaces';
|
|
6
|
+
type ColParam<T extends FirestoreRepository<any>> = Omit<ExtractParams<T['collectionPath']>, 'id'>;
|
|
7
|
+
type DocParam<T extends FirestoreRepository<any>> = ColParam<T> & {
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
export declare abstract class FirestoreRepository<Entity extends {
|
|
7
11
|
id: string;
|
|
8
12
|
}> extends Repository<Entity> {
|
|
9
|
-
|
|
13
|
+
abstract readonly collectionPath: string;
|
|
10
14
|
protected abstract converter: IFirestoreConverter<Entity>;
|
|
11
|
-
|
|
12
|
-
protected adapter: FirestoreAdapter
|
|
13
|
-
list(paramMap?:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
protected
|
|
25
|
-
protected
|
|
15
|
+
get pathBuilder(): FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
16
|
+
protected adapter: FirestoreAdapter<any>;
|
|
17
|
+
list(paramMap?: ColParam<this>, query?: any): Promise<Entity[]>;
|
|
18
|
+
count(paramMap?: ColParam<this>): Promise<number>;
|
|
19
|
+
get(paramMap?: DocParam<this>): Promise<Entity>;
|
|
20
|
+
save(entity: DocParam<this> & Entity): Promise<[Entity, boolean]>;
|
|
21
|
+
create(entity: DocParam<this> & Entity): Promise<Entity>;
|
|
22
|
+
createMany(entities: (DocParam<this> & Entity)[]): Promise<Entity[]>;
|
|
23
|
+
update(entity: DocParam<this> & Partial<Entity>): Promise<void>;
|
|
24
|
+
delete(paramMap: DocParam<this>): Promise<void>;
|
|
25
|
+
bulkWrite(entities: (DocParam<this> & Entity)[], timestamps?: string[]): Promise<void>;
|
|
26
|
+
bulkCreate(entities: (DocParam<this> & Entity)[]): Promise<void>;
|
|
27
|
+
bulkUpdate(entities: (DocParam<this> & Partial<Entity>)[]): Promise<void>;
|
|
28
|
+
protected collection(paramMap?: Omit<ExtractParams<typeof this.collectionPath>, 'id'>): CollectionReference<object>;
|
|
29
|
+
protected collectionGroup(): CollectionGroup<object>;
|
|
30
|
+
protected doc(paramMap: DocParam<this>): DocumentReference<object>;
|
|
26
31
|
protected genId: () => string;
|
|
27
|
-
protected _list(collection:
|
|
28
|
-
protected _get(doc:
|
|
29
|
-
protected _save(doc:
|
|
30
|
-
protected _create(doc:
|
|
31
|
-
protected _set(doc:
|
|
32
|
+
protected _list(collection: CollectionReference<object>): Promise<Entity[]>;
|
|
33
|
+
protected _get(doc: DocumentReference<object>): Promise<Entity>;
|
|
34
|
+
protected _save(doc: DocumentReference<object>, entity: Entity): Promise<[Entity, boolean]>;
|
|
35
|
+
protected _create(doc: DocumentReference<object>, entity: Entity): Promise<Entity>;
|
|
36
|
+
protected _set(doc: DocumentReference<object>, entity: Partial<Entity>, isUpdate?: boolean): Promise<DocumentSnapshot<object, import("../interfaces").DocumentData>>;
|
|
32
37
|
protected buildServerTimestampObject(keys?: string[]): {};
|
|
33
38
|
}
|
|
39
|
+
/** @deprecated use FirebaseRepository instaed. */
|
|
40
|
+
export declare abstract class BaseFirestoreRepository<Entity extends {
|
|
41
|
+
id: string;
|
|
42
|
+
}> extends FirestoreRepository<Entity> {
|
|
43
|
+
}
|
|
44
|
+
export {};
|
package/repository/repository.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
3
|
import { Repository } from '@nx-ddd/common/domain/repository';
|
|
4
4
|
import { toObject } from '@nx-ddd/common/utilities/to-object';
|
|
5
5
|
import { generateId } from '@nx-ddd/common/utilities';
|
|
6
|
+
import { FirestoreAdapter } from '../adapters/base';
|
|
7
|
+
import { pathBuilderFactory } from '../path-builder';
|
|
6
8
|
const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {
|
|
7
9
|
try {
|
|
8
10
|
resolve(callback());
|
|
@@ -11,17 +13,34 @@ const toPromise = callback => new Promise((resolve, reject) => __awaiter(void 0,
|
|
|
11
13
|
reject(error);
|
|
12
14
|
}
|
|
13
15
|
}));
|
|
14
|
-
|
|
16
|
+
function doesExist(doc) {
|
|
17
|
+
if (typeof doc.exists === 'function') {
|
|
18
|
+
return doc.exists();
|
|
19
|
+
}
|
|
20
|
+
return doc.exists;
|
|
21
|
+
}
|
|
22
|
+
let FirestoreRepository = class FirestoreRepository extends Repository {
|
|
15
23
|
constructor() {
|
|
16
24
|
super(...arguments);
|
|
25
|
+
// protected adapter: FirestoreAdapter;
|
|
26
|
+
this.adapter = inject(FirestoreAdapter);
|
|
17
27
|
this.genId = () => generateId();
|
|
18
28
|
}
|
|
29
|
+
// protected pathBuilder: FirestorePathBuilder<Entity, typeof this.collectionPath>;
|
|
30
|
+
get pathBuilder() {
|
|
31
|
+
return pathBuilderFactory(this.collectionPath);
|
|
32
|
+
}
|
|
19
33
|
list(paramMap, query = q => q) {
|
|
20
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
35
|
const collection = paramMap ? this.collection(paramMap) : this.collectionGroup();
|
|
22
36
|
return this._list(query(collection));
|
|
23
37
|
});
|
|
24
38
|
}
|
|
39
|
+
count(paramMap) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
return this.collection(paramMap).count();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
25
44
|
get(paramMap) {
|
|
26
45
|
return this._get(this.doc(paramMap));
|
|
27
46
|
}
|
|
@@ -78,7 +97,6 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
|
|
|
78
97
|
return this.adapter.doc(path);
|
|
79
98
|
}
|
|
80
99
|
_list(collection) {
|
|
81
|
-
const doesExist = (doc) => typeof doc.exists === 'function' ? doc.exists() : doc.exists;
|
|
82
100
|
return collection.get().then(({ docs }) => docs.map(doc => {
|
|
83
101
|
if (!doesExist(doc))
|
|
84
102
|
return null;
|
|
@@ -105,11 +123,15 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
|
|
|
105
123
|
}
|
|
106
124
|
_create(doc, entity) {
|
|
107
125
|
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
-
const exists = yield doc.exists()
|
|
126
|
+
const exists = yield doc.exists().catch((error) => {
|
|
127
|
+
// MEMO(@nontangent): bunで実行するときだけこのエラーがでるかもしれない。
|
|
128
|
+
if (`${error}`.startsWith('Error: Did not receive document for'))
|
|
129
|
+
return false;
|
|
130
|
+
throw error;
|
|
131
|
+
});
|
|
109
132
|
if (exists)
|
|
110
133
|
throw new Error('Document already exists');
|
|
111
134
|
return doc.set(Object.assign(Object.assign({}, this.converter.toFirestore(entity)), this.buildServerTimestampObject(['createdAt', 'updatedAt']))).then(() => doc.get()).then(doc => this.converter.fromFirestore(doc));
|
|
112
|
-
;
|
|
113
135
|
});
|
|
114
136
|
}
|
|
115
137
|
_set(doc, entity, isUpdate = true) {
|
|
@@ -119,6 +141,13 @@ let BaseFirestoreRepository = class BaseFirestoreRepository extends Repository {
|
|
|
119
141
|
return keys.reduce((m, k) => (Object.assign(Object.assign({}, m), { [k]: this.adapter.FieldValue.serverTimestamp() })), {});
|
|
120
142
|
}
|
|
121
143
|
};
|
|
144
|
+
FirestoreRepository = __decorate([
|
|
145
|
+
Injectable()
|
|
146
|
+
], FirestoreRepository);
|
|
147
|
+
export { FirestoreRepository };
|
|
148
|
+
/** @deprecated use FirebaseRepository instaed. */
|
|
149
|
+
let BaseFirestoreRepository = class BaseFirestoreRepository extends FirestoreRepository {
|
|
150
|
+
};
|
|
122
151
|
BaseFirestoreRepository = __decorate([
|
|
123
152
|
Injectable()
|
|
124
153
|
], BaseFirestoreRepository);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/firestore/src/lib/repository/repository.ts"],"names":[],"mappings":"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"}
|