@@ -249,6 +249,16 @@ export namespace Typesaurus {
249
249
[ Key in keyof Model ] ?: UpdateModel < Model [ Key ] > | UpdateValue < Model , Key >
250
250
}
251
251
252
+ /**
253
+ *
254
+ */
255
+ export type UpdateFields < Model > = UpdateField < Model > [ ]
256
+
257
+ /**
258
+ *
259
+ */
260
+ export type UpdateField < Model > = [ ]
261
+
252
262
/**
253
263
* The value types to use for update operation.
254
264
*/
@@ -264,25 +274,6 @@ export namespace Typesaurus {
264
274
: never
265
275
: never
266
276
267
- /**
268
- * Type of the data passed to the upset function. It extends the model
269
- * allowing to set server date field value.
270
- */
271
- export type UpsetModel <
272
- Model ,
273
- Environment extends RuntimeEnvironment | undefined
274
- > = {
275
- [ Key in keyof Model ] :
276
- | ( Exclude < Model [ Key ] , undefined > extends ServerDate // First, ensure ServerDate is properly set
277
- ? Environment extends 'server' // Date can be used only in the node environment
278
- ? Date | ServerDate
279
- : ServerDate
280
- : Model [ Key ] extends object // If it's an object, recursively pass through SetModel
281
- ? UpsetModel < Model [ Key ] , Environment >
282
- : Model [ Key ] )
283
- | UpsetValue < Model [ Key ] >
284
- }
285
-
286
277
/**
287
278
* The value types to use for upset operation.
288
279
*/
@@ -374,7 +365,7 @@ export namespace Typesaurus {
374
365
FirestoreWhereFilterOp ,
375
366
FirestoreOrderByDirection
376
367
> =
377
- | OrderQuery < Model , Key , FirestoreWhereFilterOp >
368
+ | OrderQuery < Model , Key , FirestoreOrderByDirection >
378
369
| WhereQuery < Model , FirestoreWhereFilterOp >
379
370
| LimitQuery
380
371
@@ -517,7 +508,7 @@ export namespace Typesaurus {
517
508
) : Promise < void >
518
509
519
510
upset < Environment extends RuntimeEnvironment | undefined = undefined > (
520
- data : ( $ : WriteHelpers < Model > ) => UpsetModel < Model , Environment > ,
511
+ data : ( $ : WriteHelpers < Model > ) => WriteModel < Model , Environment > ,
521
512
options ?: OperationOptions < Environment >
522
513
) : Promise < void >
523
514
@@ -621,11 +612,11 @@ export namespace Typesaurus {
621
612
* @param id - the id of the document to set
622
613
* @param data - the document data
623
614
*/
624
- upset ( id : string , data : UpsetModel < Model , Environment > ) : void
615
+ upset ( id : string , data : WriteModel < Model , Environment > ) : void
625
616
626
617
upset (
627
618
id : string ,
628
- data : ( $ : WriteHelpers < Model > ) => UpsetModel < Model , Environment >
619
+ data : ( $ : WriteHelpers < Model > ) => WriteModel < Model , Environment >
629
620
) : void
630
621
631
622
/**
@@ -757,12 +748,16 @@ export namespace Typesaurus {
757
748
758
749
get ( id : string ) : PromiseWithGetSubscription < Model >
759
750
760
- getMany (
751
+ getMany < OnMissing extends OnMissingMode < unknown > | undefined = undefined > (
761
752
ids : string [ ] ,
762
753
options ?: {
763
- onMissing : OnMissing < Model >
754
+ onMissing : OnMissing
764
755
}
765
- ) : PromiseWithListSubscription < Model >
756
+ ) : OnMissing extends 'ignore' | undefined
757
+ ? PromiseWithListSubscription < Model >
758
+ : OnMissing extends OnMissingCallback < infer OnMissingResult >
759
+ ? PromiseWithListSubscription < Model | OnMissingResult >
760
+ : never
766
761
767
762
query (
768
763
queries : (
@@ -782,12 +777,12 @@ export namespace Typesaurus {
782
777
add < Environment extends RuntimeEnvironment | undefined = undefined > (
783
778
data : WriteModel < Model , Environment > ,
784
779
options ?: OperationOptions < Environment >
785
- ) : Promise < PlainRef < Model > >
780
+ ) : Promise < RichRef < Model > >
786
781
787
782
add < Environment extends RuntimeEnvironment | undefined = undefined > (
788
783
data : ( $ : WriteHelpers < Model > ) => WriteModel < Model , Environment > ,
789
784
options ?: OperationOptions < Environment >
790
- ) : Promise < PlainRef < Model > >
785
+ ) : Promise < RichRef < Model > >
791
786
792
787
set < Environment extends RuntimeEnvironment | undefined = undefined > (
793
788
id : string ,
@@ -803,31 +798,33 @@ export namespace Typesaurus {
803
798
804
799
update < Environment extends RuntimeEnvironment | undefined = undefined > (
805
800
id : string ,
806
- data : UpdateModel < Model > ,
801
+ data : UpdateModel < Model > | UpdateFields < Model > ,
807
802
options ?: { as : Environment }
808
803
) : Promise < void >
809
804
810
805
update < Environment extends RuntimeEnvironment | undefined = undefined > (
811
806
id : string ,
812
- data : ( $ : WriteHelpers < Model > ) => UpdateModel < Model > ,
807
+ data : (
808
+ $ : WriteHelpers < Model >
809
+ ) => UpdateModel < Model > | UpdateFields < Model > ,
813
810
options ?: OperationOptions < Environment >
814
811
) : Promise < void >
815
812
816
813
upset < Environment extends RuntimeEnvironment | undefined = undefined > (
817
814
id : string ,
818
- data : UpdateModel < Model > ,
815
+ data : WriteModel < Model , Environment > ,
819
816
options ?: { as : Environment }
820
817
) : Promise < void >
821
818
822
819
upset < Environment extends RuntimeEnvironment | undefined = undefined > (
823
820
id : string ,
824
- data : ( $ : WriteHelpers < Model > ) => UpsetModel < Model , Environment > ,
821
+ data : ( $ : WriteHelpers < Model > ) => WriteModel < Model , Environment > ,
825
822
options ?: OperationOptions < Environment >
826
823
) : Promise < void >
827
824
828
825
remove ( id : string ) : Promise < void >
829
826
830
- ref ( id : string ) : PlainRef < Model >
827
+ ref ( id : string ) : RichRef < Model >
831
828
832
829
doc ( id : string , data : Model ) : PlainDoc < Model >
833
830
}
@@ -911,29 +908,24 @@ export namespace Typesaurus {
911
908
/**
912
909
* 1-level deep
913
910
*/
914
- GroupsDB extends DB < infer Schema , unknown , unknown >
915
- ? // Infer the nested (1) schema
916
- Schema [ keyof Schema ] extends
911
+ GroupsDB extends DB < infer Schema , unknown , unknown > // Infer the nested (1) schema
912
+ ? Schema [ keyof Schema ] extends
917
913
| PlainCollection < infer _ >
918
- | NestedPlainCollection < infer _ , infer NestedSchema >
919
- ? // Get the models for the given (1) level
920
- ExtractDBModels < DB < NestedSchema , unknown , unknown > >
914
+ | NestedPlainCollection < infer _ , infer NestedSchema > // Get the models for the given (1) level
915
+ ? ExtractDBModels < DB < NestedSchema , unknown , unknown > >
921
916
: { }
922
917
: { } ,
923
918
/**
924
919
* 2-levels deep
925
920
*/
926
- GroupsDB extends DB < infer Schema , unknown , unknown >
927
- ? // Infer the nested (1) schema
928
- Schema [ keyof Schema ] extends
921
+ GroupsDB extends DB < infer Schema , unknown , unknown > // Infer the nested (1) schema
922
+ ? Schema [ keyof Schema ] extends
929
923
| PlainCollection < infer _ >
930
- | NestedPlainCollection < infer _ , infer NestedSchema1 >
931
- ? // Infer the nested (2) schema
932
- NestedSchema1 [ keyof NestedSchema1 ] extends
924
+ | NestedPlainCollection < infer _ , infer NestedSchema1 > // Infer the nested (2) schema
925
+ ? NestedSchema1 [ keyof NestedSchema1 ] extends
933
926
| PlainCollection < infer _ >
934
- | NestedPlainCollection < infer _ , infer NestedSchema2 >
935
- ? // Get the models for the given (2) level
936
- ExtractDBModels < DB < NestedSchema2 , unknown , unknown > >
927
+ | NestedPlainCollection < infer _ , infer NestedSchema2 > // Get the models for the given (2) level
928
+ ? ExtractDBModels < DB < NestedSchema2 , unknown , unknown > >
937
929
: { }
938
930
: { }
939
931
: { }
@@ -994,9 +986,11 @@ export namespace Typesaurus {
994
986
>
995
987
}
996
988
997
- export type OnMissing < Model > = ( ( id : string ) => Model ) | 'ignore'
989
+ export type OnMissingMode < Model > = OnMissingCallback < Model > | 'ignore'
990
+
991
+ export type OnMissingCallback < Model > = ( id : string ) => Model
998
992
999
993
export interface OnMissingOptions < Model > {
1000
- onMissing ?: OnMissing < Model >
994
+ onMissing ?: OnMissingMode < Model >
1001
995
}
1002
996
}
0 commit comments