@igstack/app-catalog-backend-core 0.8.0 → 0.9.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/dist/db/syncAppCatalog.mjs +3 -1
- package/dist/db/syncAppCatalog.mjs.map +1 -1
- package/dist/generated/prisma/internal/class.mjs +4 -4
- package/dist/generated/prisma/internal/class.mjs.map +1 -1
- package/dist/generated/prisma/internal/prismaNamespace.d.mts +2 -0
- package/dist/generated/prisma/internal/prismaNamespace.d.mts.map +1 -1
- package/dist/generated/prisma/models/DbResource.d.mts +87 -2
- package/dist/generated/prisma/models/DbResource.d.mts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/modules/appCatalog/freshness.mjs +29 -0
- package/dist/modules/appCatalog/freshness.mjs.map +1 -0
- package/dist/modules/appCatalog/service.mjs +4 -1
- package/dist/modules/appCatalog/service.mjs.map +1 -1
- package/dist/types/common/appCatalogTypes.d.mts +25 -1
- package/dist/types/common/appCatalogTypes.d.mts.map +1 -1
- package/package.json +4 -4
- package/prisma/schema.prisma +4 -0
- package/src/__tests__/freshness.test.ts +63 -0
- package/src/db/syncAppCatalog.ts +6 -0
- package/src/generated/prisma/internal/class.ts +4 -4
- package/src/generated/prisma/internal/prismaNamespace.ts +2 -0
- package/src/generated/prisma/internal/prismaNamespaceBrowser.ts +2 -0
- package/src/generated/prisma/models/DbResource.ts +87 -1
- package/src/modules/appCatalog/freshness.ts +47 -0
- package/src/modules/appCatalog/service.ts +7 -0
- package/src/types/common/appCatalogTypes.ts +25 -0
|
@@ -42,6 +42,8 @@ export type DbResourceMinAggregateOutputType = {
|
|
|
42
42
|
familySlug: string | null
|
|
43
43
|
ownerPersonSlug: string | null
|
|
44
44
|
accessComments: string | null
|
|
45
|
+
lastCheckedAt: Date | null
|
|
46
|
+
nextCheckAfter: Date | null
|
|
45
47
|
createdAt: Date | null
|
|
46
48
|
updatedAt: Date | null
|
|
47
49
|
}
|
|
@@ -62,6 +64,8 @@ export type DbResourceMaxAggregateOutputType = {
|
|
|
62
64
|
familySlug: string | null
|
|
63
65
|
ownerPersonSlug: string | null
|
|
64
66
|
accessComments: string | null
|
|
67
|
+
lastCheckedAt: Date | null
|
|
68
|
+
nextCheckAfter: Date | null
|
|
65
69
|
createdAt: Date | null
|
|
66
70
|
updatedAt: Date | null
|
|
67
71
|
}
|
|
@@ -95,6 +99,8 @@ export type DbResourceCountAggregateOutputType = {
|
|
|
95
99
|
accessMaintainerGroupSlugs: number
|
|
96
100
|
accessComments: number
|
|
97
101
|
extra:PrismaJson.SubResourceExtra
|
|
102
|
+
lastCheckedAt: number
|
|
103
|
+
nextCheckAfter: number
|
|
98
104
|
createdAt: number
|
|
99
105
|
updatedAt: number
|
|
100
106
|
_all: number
|
|
@@ -117,6 +123,8 @@ export type DbResourceMinAggregateInputType = {
|
|
|
117
123
|
familySlug?: true
|
|
118
124
|
ownerPersonSlug?: true
|
|
119
125
|
accessComments?: true
|
|
126
|
+
lastCheckedAt?: true
|
|
127
|
+
nextCheckAfter?: true
|
|
120
128
|
createdAt?: true
|
|
121
129
|
updatedAt?: true
|
|
122
130
|
}
|
|
@@ -137,6 +145,8 @@ export type DbResourceMaxAggregateInputType = {
|
|
|
137
145
|
familySlug?: true
|
|
138
146
|
ownerPersonSlug?: true
|
|
139
147
|
accessComments?: true
|
|
148
|
+
lastCheckedAt?: true
|
|
149
|
+
nextCheckAfter?: true
|
|
140
150
|
createdAt?: true
|
|
141
151
|
updatedAt?: true
|
|
142
152
|
}
|
|
@@ -170,6 +180,8 @@ export type DbResourceCountAggregateInputType = {
|
|
|
170
180
|
accessMaintainerGroupSlugs?: true
|
|
171
181
|
accessComments?: true
|
|
172
182
|
extra?: true
|
|
183
|
+
lastCheckedAt?: true
|
|
184
|
+
nextCheckAfter?: true
|
|
173
185
|
createdAt?: true
|
|
174
186
|
updatedAt?: true
|
|
175
187
|
_all?: true
|
|
@@ -276,6 +288,8 @@ export type DbResourceGroupByOutputType = {
|
|
|
276
288
|
accessMaintainerGroupSlugs: string[]
|
|
277
289
|
accessComments: string | null
|
|
278
290
|
extra:PrismaJson.SubResourceExtra | null
|
|
291
|
+
lastCheckedAt: Date | null
|
|
292
|
+
nextCheckAfter: Date | null
|
|
279
293
|
createdAt: Date
|
|
280
294
|
updatedAt: Date
|
|
281
295
|
_count: DbResourceCountAggregateOutputType | null
|
|
@@ -330,6 +344,8 @@ export type DbResourceWhereInput = {
|
|
|
330
344
|
accessMaintainerGroupSlugs?: Prisma.StringNullableListFilter<"DbResource">
|
|
331
345
|
accessComments?: Prisma.StringNullableFilter<"DbResource"> | string | null
|
|
332
346
|
extra?: Prisma.JsonNullableFilter<"DbResource">
|
|
347
|
+
lastCheckedAt?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
348
|
+
nextCheckAfter?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
333
349
|
createdAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
334
350
|
updatedAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
335
351
|
sourceRefs?: Prisma.SourceReferenceListRelationFilter
|
|
@@ -366,6 +382,8 @@ export type DbResourceOrderByWithRelationInput = {
|
|
|
366
382
|
accessMaintainerGroupSlugs?: Prisma.SortOrder
|
|
367
383
|
accessComments?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
368
384
|
extra?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
385
|
+
lastCheckedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
386
|
+
nextCheckAfter?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
369
387
|
createdAt?: Prisma.SortOrder
|
|
370
388
|
updatedAt?: Prisma.SortOrder
|
|
371
389
|
sourceRefs?: Prisma.SourceReferenceOrderByRelationAggregateInput
|
|
@@ -405,6 +423,8 @@ export type DbResourceWhereUniqueInput = Prisma.AtLeast<{
|
|
|
405
423
|
accessMaintainerGroupSlugs?: Prisma.StringNullableListFilter<"DbResource">
|
|
406
424
|
accessComments?: Prisma.StringNullableFilter<"DbResource"> | string | null
|
|
407
425
|
extra?: Prisma.JsonNullableFilter<"DbResource">
|
|
426
|
+
lastCheckedAt?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
427
|
+
nextCheckAfter?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
408
428
|
createdAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
409
429
|
updatedAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
410
430
|
sourceRefs?: Prisma.SourceReferenceListRelationFilter
|
|
@@ -441,6 +461,8 @@ export type DbResourceOrderByWithAggregationInput = {
|
|
|
441
461
|
accessMaintainerGroupSlugs?: Prisma.SortOrder
|
|
442
462
|
accessComments?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
443
463
|
extra?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
464
|
+
lastCheckedAt?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
465
|
+
nextCheckAfter?: Prisma.SortOrderInput | Prisma.SortOrder
|
|
444
466
|
createdAt?: Prisma.SortOrder
|
|
445
467
|
updatedAt?: Prisma.SortOrder
|
|
446
468
|
_count?: Prisma.DbResourceCountOrderByAggregateInput
|
|
@@ -480,6 +502,8 @@ export type DbResourceScalarWhereWithAggregatesInput = {
|
|
|
480
502
|
accessMaintainerGroupSlugs?: Prisma.StringNullableListFilter<"DbResource">
|
|
481
503
|
accessComments?: Prisma.StringNullableWithAggregatesFilter<"DbResource"> | string | null
|
|
482
504
|
extra?: Prisma.JsonNullableWithAggregatesFilter<"DbResource">
|
|
505
|
+
lastCheckedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"DbResource"> | Date | string | null
|
|
506
|
+
nextCheckAfter?: Prisma.DateTimeNullableWithAggregatesFilter<"DbResource"> | Date | string | null
|
|
483
507
|
createdAt?: Prisma.DateTimeWithAggregatesFilter<"DbResource"> | Date | string
|
|
484
508
|
updatedAt?: Prisma.DateTimeWithAggregatesFilter<"DbResource"> | Date | string
|
|
485
509
|
}
|
|
@@ -512,6 +536,8 @@ export type DbResourceCreateInput = {
|
|
|
512
536
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
513
537
|
accessComments?: string | null
|
|
514
538
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
539
|
+
lastCheckedAt?: Date | string | null
|
|
540
|
+
nextCheckAfter?: Date | string | null
|
|
515
541
|
createdAt?: Date | string
|
|
516
542
|
updatedAt?: Date | string
|
|
517
543
|
sourceRefs?: Prisma.SourceReferenceCreateNestedManyWithoutResourceInput
|
|
@@ -548,6 +574,8 @@ export type DbResourceUncheckedCreateInput = {
|
|
|
548
574
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
549
575
|
accessComments?: string | null
|
|
550
576
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
577
|
+
lastCheckedAt?: Date | string | null
|
|
578
|
+
nextCheckAfter?: Date | string | null
|
|
551
579
|
createdAt?: Date | string
|
|
552
580
|
updatedAt?: Date | string
|
|
553
581
|
sourceRefs?: Prisma.SourceReferenceUncheckedCreateNestedManyWithoutResourceInput
|
|
@@ -582,6 +610,8 @@ export type DbResourceUpdateInput = {
|
|
|
582
610
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
583
611
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
584
612
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
613
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
614
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
585
615
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
586
616
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
587
617
|
sourceRefs?: Prisma.SourceReferenceUpdateManyWithoutResourceNestedInput
|
|
@@ -618,6 +648,8 @@ export type DbResourceUncheckedUpdateInput = {
|
|
|
618
648
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
619
649
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
620
650
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
651
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
652
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
621
653
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
622
654
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
623
655
|
sourceRefs?: Prisma.SourceReferenceUncheckedUpdateManyWithoutResourceNestedInput
|
|
@@ -653,6 +685,8 @@ export type DbResourceCreateManyInput = {
|
|
|
653
685
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
654
686
|
accessComments?: string | null
|
|
655
687
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
688
|
+
lastCheckedAt?: Date | string | null
|
|
689
|
+
nextCheckAfter?: Date | string | null
|
|
656
690
|
createdAt?: Date | string
|
|
657
691
|
updatedAt?: Date | string
|
|
658
692
|
}
|
|
@@ -685,6 +719,8 @@ export type DbResourceUpdateManyMutationInput = {
|
|
|
685
719
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
686
720
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
687
721
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
722
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
723
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
688
724
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
689
725
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
690
726
|
}
|
|
@@ -718,6 +754,8 @@ export type DbResourceUncheckedUpdateManyInput = {
|
|
|
718
754
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
719
755
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
720
756
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
757
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
758
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
721
759
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
722
760
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
723
761
|
}
|
|
@@ -766,6 +804,8 @@ export type DbResourceCountOrderByAggregateInput = {
|
|
|
766
804
|
accessMaintainerGroupSlugs?: Prisma.SortOrder
|
|
767
805
|
accessComments?: Prisma.SortOrder
|
|
768
806
|
extra?: Prisma.SortOrder
|
|
807
|
+
lastCheckedAt?: Prisma.SortOrder
|
|
808
|
+
nextCheckAfter?: Prisma.SortOrder
|
|
769
809
|
createdAt?: Prisma.SortOrder
|
|
770
810
|
updatedAt?: Prisma.SortOrder
|
|
771
811
|
}
|
|
@@ -786,6 +826,8 @@ export type DbResourceMaxOrderByAggregateInput = {
|
|
|
786
826
|
familySlug?: Prisma.SortOrder
|
|
787
827
|
ownerPersonSlug?: Prisma.SortOrder
|
|
788
828
|
accessComments?: Prisma.SortOrder
|
|
829
|
+
lastCheckedAt?: Prisma.SortOrder
|
|
830
|
+
nextCheckAfter?: Prisma.SortOrder
|
|
789
831
|
createdAt?: Prisma.SortOrder
|
|
790
832
|
updatedAt?: Prisma.SortOrder
|
|
791
833
|
}
|
|
@@ -806,6 +848,8 @@ export type DbResourceMinOrderByAggregateInput = {
|
|
|
806
848
|
familySlug?: Prisma.SortOrder
|
|
807
849
|
ownerPersonSlug?: Prisma.SortOrder
|
|
808
850
|
accessComments?: Prisma.SortOrder
|
|
851
|
+
lastCheckedAt?: Prisma.SortOrder
|
|
852
|
+
nextCheckAfter?: Prisma.SortOrder
|
|
809
853
|
createdAt?: Prisma.SortOrder
|
|
810
854
|
updatedAt?: Prisma.SortOrder
|
|
811
855
|
}
|
|
@@ -978,6 +1022,8 @@ export type DbResourceCreateWithoutChildrenInput = {
|
|
|
978
1022
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
979
1023
|
accessComments?: string | null
|
|
980
1024
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1025
|
+
lastCheckedAt?: Date | string | null
|
|
1026
|
+
nextCheckAfter?: Date | string | null
|
|
981
1027
|
createdAt?: Date | string
|
|
982
1028
|
updatedAt?: Date | string
|
|
983
1029
|
sourceRefs?: Prisma.SourceReferenceCreateNestedManyWithoutResourceInput
|
|
@@ -1013,6 +1059,8 @@ export type DbResourceUncheckedCreateWithoutChildrenInput = {
|
|
|
1013
1059
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1014
1060
|
accessComments?: string | null
|
|
1015
1061
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1062
|
+
lastCheckedAt?: Date | string | null
|
|
1063
|
+
nextCheckAfter?: Date | string | null
|
|
1016
1064
|
createdAt?: Date | string
|
|
1017
1065
|
updatedAt?: Date | string
|
|
1018
1066
|
sourceRefs?: Prisma.SourceReferenceUncheckedCreateNestedManyWithoutResourceInput
|
|
@@ -1051,6 +1099,8 @@ export type DbResourceCreateWithoutParentInput = {
|
|
|
1051
1099
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1052
1100
|
accessComments?: string | null
|
|
1053
1101
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1102
|
+
lastCheckedAt?: Date | string | null
|
|
1103
|
+
nextCheckAfter?: Date | string | null
|
|
1054
1104
|
createdAt?: Date | string
|
|
1055
1105
|
updatedAt?: Date | string
|
|
1056
1106
|
sourceRefs?: Prisma.SourceReferenceCreateNestedManyWithoutResourceInput
|
|
@@ -1085,6 +1135,8 @@ export type DbResourceUncheckedCreateWithoutParentInput = {
|
|
|
1085
1135
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1086
1136
|
accessComments?: string | null
|
|
1087
1137
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1138
|
+
lastCheckedAt?: Date | string | null
|
|
1139
|
+
nextCheckAfter?: Date | string | null
|
|
1088
1140
|
createdAt?: Date | string
|
|
1089
1141
|
updatedAt?: Date | string
|
|
1090
1142
|
sourceRefs?: Prisma.SourceReferenceUncheckedCreateNestedManyWithoutResourceInput
|
|
@@ -1140,6 +1192,8 @@ export type DbResourceUpdateWithoutChildrenInput = {
|
|
|
1140
1192
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1141
1193
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1142
1194
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1195
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1196
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1143
1197
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1144
1198
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1145
1199
|
sourceRefs?: Prisma.SourceReferenceUpdateManyWithoutResourceNestedInput
|
|
@@ -1175,6 +1229,8 @@ export type DbResourceUncheckedUpdateWithoutChildrenInput = {
|
|
|
1175
1229
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1176
1230
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1177
1231
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1232
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1233
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1178
1234
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1179
1235
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1180
1236
|
sourceRefs?: Prisma.SourceReferenceUncheckedUpdateManyWithoutResourceNestedInput
|
|
@@ -1228,6 +1284,8 @@ export type DbResourceScalarWhereInput = {
|
|
|
1228
1284
|
accessMaintainerGroupSlugs?: Prisma.StringNullableListFilter<"DbResource">
|
|
1229
1285
|
accessComments?: Prisma.StringNullableFilter<"DbResource"> | string | null
|
|
1230
1286
|
extra?: Prisma.JsonNullableFilter<"DbResource">
|
|
1287
|
+
lastCheckedAt?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
1288
|
+
nextCheckAfter?: Prisma.DateTimeNullableFilter<"DbResource"> | Date | string | null
|
|
1231
1289
|
createdAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
1232
1290
|
updatedAt?: Prisma.DateTimeFilter<"DbResource"> | Date | string
|
|
1233
1291
|
}
|
|
@@ -1260,6 +1318,8 @@ export type DbResourceCreateWithoutSourceRefsInput = {
|
|
|
1260
1318
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1261
1319
|
accessComments?: string | null
|
|
1262
1320
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1321
|
+
lastCheckedAt?: Date | string | null
|
|
1322
|
+
nextCheckAfter?: Date | string | null
|
|
1263
1323
|
createdAt?: Date | string
|
|
1264
1324
|
updatedAt?: Date | string
|
|
1265
1325
|
parent?: Prisma.DbResourceCreateNestedOneWithoutChildrenInput
|
|
@@ -1295,6 +1355,8 @@ export type DbResourceUncheckedCreateWithoutSourceRefsInput = {
|
|
|
1295
1355
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1296
1356
|
accessComments?: string | null
|
|
1297
1357
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1358
|
+
lastCheckedAt?: Date | string | null
|
|
1359
|
+
nextCheckAfter?: Date | string | null
|
|
1298
1360
|
createdAt?: Date | string
|
|
1299
1361
|
updatedAt?: Date | string
|
|
1300
1362
|
children?: Prisma.DbResourceUncheckedCreateNestedManyWithoutParentInput
|
|
@@ -1344,6 +1406,8 @@ export type DbResourceUpdateWithoutSourceRefsInput = {
|
|
|
1344
1406
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1345
1407
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1346
1408
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1409
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1410
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1347
1411
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1348
1412
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1349
1413
|
parent?: Prisma.DbResourceUpdateOneWithoutChildrenNestedInput
|
|
@@ -1379,6 +1443,8 @@ export type DbResourceUncheckedUpdateWithoutSourceRefsInput = {
|
|
|
1379
1443
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1380
1444
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1381
1445
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1446
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1447
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1382
1448
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1383
1449
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1384
1450
|
children?: Prisma.DbResourceUncheckedUpdateManyWithoutParentNestedInput
|
|
@@ -1412,6 +1478,8 @@ export type DbResourceCreateManyParentInput = {
|
|
|
1412
1478
|
accessMaintainerGroupSlugs?: Prisma.DbResourceCreateaccessMaintainerGroupSlugsInput | string[]
|
|
1413
1479
|
accessComments?: string | null
|
|
1414
1480
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1481
|
+
lastCheckedAt?: Date | string | null
|
|
1482
|
+
nextCheckAfter?: Date | string | null
|
|
1415
1483
|
createdAt?: Date | string
|
|
1416
1484
|
updatedAt?: Date | string
|
|
1417
1485
|
}
|
|
@@ -1444,6 +1512,8 @@ export type DbResourceUpdateWithoutParentInput = {
|
|
|
1444
1512
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1445
1513
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1446
1514
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1515
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1516
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1447
1517
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1448
1518
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1449
1519
|
sourceRefs?: Prisma.SourceReferenceUpdateManyWithoutResourceNestedInput
|
|
@@ -1478,6 +1548,8 @@ export type DbResourceUncheckedUpdateWithoutParentInput = {
|
|
|
1478
1548
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1479
1549
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1480
1550
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1551
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1552
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1481
1553
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1482
1554
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1483
1555
|
sourceRefs?: Prisma.SourceReferenceUncheckedUpdateManyWithoutResourceNestedInput
|
|
@@ -1512,6 +1584,8 @@ export type DbResourceUncheckedUpdateManyWithoutParentInput = {
|
|
|
1512
1584
|
accessMaintainerGroupSlugs?: Prisma.DbResourceUpdateaccessMaintainerGroupSlugsInput | string[]
|
|
1513
1585
|
accessComments?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
|
|
1514
1586
|
extra?:PrismaJson.SubResourceExtra | Prisma.NullableJsonNullValueInput
|
|
1587
|
+
lastCheckedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1588
|
+
nextCheckAfter?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
|
|
1515
1589
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1516
1590
|
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
|
|
1517
1591
|
}
|
|
@@ -1585,6 +1659,8 @@ export type DbResourceSelect<ExtArgs extends runtime.Types.Extensions.InternalAr
|
|
|
1585
1659
|
accessMaintainerGroupSlugs?: boolean
|
|
1586
1660
|
accessComments?: boolean
|
|
1587
1661
|
extra?: boolean
|
|
1662
|
+
lastCheckedAt?: boolean
|
|
1663
|
+
nextCheckAfter?: boolean
|
|
1588
1664
|
createdAt?: boolean
|
|
1589
1665
|
updatedAt?: boolean
|
|
1590
1666
|
sourceRefs?: boolean | Prisma.DbResource$sourceRefsArgs<ExtArgs>
|
|
@@ -1622,6 +1698,8 @@ export type DbResourceSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Ex
|
|
|
1622
1698
|
accessMaintainerGroupSlugs?: boolean
|
|
1623
1699
|
accessComments?: boolean
|
|
1624
1700
|
extra?: boolean
|
|
1701
|
+
lastCheckedAt?: boolean
|
|
1702
|
+
nextCheckAfter?: boolean
|
|
1625
1703
|
createdAt?: boolean
|
|
1626
1704
|
updatedAt?: boolean
|
|
1627
1705
|
parent?: boolean | Prisma.DbResource$parentArgs<ExtArgs>
|
|
@@ -1656,6 +1734,8 @@ export type DbResourceSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Ex
|
|
|
1656
1734
|
accessMaintainerGroupSlugs?: boolean
|
|
1657
1735
|
accessComments?: boolean
|
|
1658
1736
|
extra?: boolean
|
|
1737
|
+
lastCheckedAt?: boolean
|
|
1738
|
+
nextCheckAfter?: boolean
|
|
1659
1739
|
createdAt?: boolean
|
|
1660
1740
|
updatedAt?: boolean
|
|
1661
1741
|
parent?: boolean | Prisma.DbResource$parentArgs<ExtArgs>
|
|
@@ -1690,11 +1770,13 @@ export type DbResourceSelectScalar = {
|
|
|
1690
1770
|
accessMaintainerGroupSlugs?: boolean
|
|
1691
1771
|
accessComments?: boolean
|
|
1692
1772
|
extra?: boolean
|
|
1773
|
+
lastCheckedAt?: boolean
|
|
1774
|
+
nextCheckAfter?: boolean
|
|
1693
1775
|
createdAt?: boolean
|
|
1694
1776
|
updatedAt?: boolean
|
|
1695
1777
|
}
|
|
1696
1778
|
|
|
1697
|
-
export type DbResourceOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "slug" | "type" | "displayName" | "abbreviation" | "nicknames" | "description" | "access" | "teams" | "accessRequest" | "notes" | "tags" | "appUrl" | "links" | "iconName" | "screenshotIds" | "deprecated" | "aiPrompt" | "urlIssues" | "tiers" | "parentSlug" | "tier" | "familySlug" | "aliases" | "ownerPersonSlug" | "accessMaintainerGroupSlugs" | "accessComments" | "extra" | "createdAt" | "updatedAt", ExtArgs["result"]["dbResource"]>
|
|
1779
|
+
export type DbResourceOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "slug" | "type" | "displayName" | "abbreviation" | "nicknames" | "description" | "access" | "teams" | "accessRequest" | "notes" | "tags" | "appUrl" | "links" | "iconName" | "screenshotIds" | "deprecated" | "aiPrompt" | "urlIssues" | "tiers" | "parentSlug" | "tier" | "familySlug" | "aliases" | "ownerPersonSlug" | "accessMaintainerGroupSlugs" | "accessComments" | "extra" | "lastCheckedAt" | "nextCheckAfter" | "createdAt" | "updatedAt", ExtArgs["result"]["dbResource"]>
|
|
1698
1780
|
export type DbResourceInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
|
1699
1781
|
sourceRefs?: boolean | Prisma.DbResource$sourceRefsArgs<ExtArgs>
|
|
1700
1782
|
parent?: boolean | Prisma.DbResource$parentArgs<ExtArgs>
|
|
@@ -1762,6 +1844,8 @@ export type $DbResourcePayload<ExtArgs extends runtime.Types.Extensions.Internal
|
|
|
1762
1844
|
* [SubResourceExtra]
|
|
1763
1845
|
*/
|
|
1764
1846
|
extra:PrismaJson.SubResourceExtra | null
|
|
1847
|
+
lastCheckedAt: Date | null
|
|
1848
|
+
nextCheckAfter: Date | null
|
|
1765
1849
|
createdAt: Date
|
|
1766
1850
|
updatedAt: Date
|
|
1767
1851
|
}, ExtArgs["result"]["dbResource"]>
|
|
@@ -2218,6 +2302,8 @@ export interface DbResourceFieldRefs {
|
|
|
2218
2302
|
readonly accessMaintainerGroupSlugs: Prisma.FieldRef<"DbResource", 'String[]'>
|
|
2219
2303
|
readonly accessComments: Prisma.FieldRef<"DbResource", 'String'>
|
|
2220
2304
|
readonly extra: Prisma.FieldRef<"DbResource", 'Json'>
|
|
2305
|
+
readonly lastCheckedAt: Prisma.FieldRef<"DbResource", 'DateTime'>
|
|
2306
|
+
readonly nextCheckAfter: Prisma.FieldRef<"DbResource", 'DateTime'>
|
|
2221
2307
|
readonly createdAt: Prisma.FieldRef<"DbResource", 'DateTime'>
|
|
2222
2308
|
readonly updatedAt: Prisma.FieldRef<"DbResource", 'DateTime'>
|
|
2223
2309
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Freshness semantic for a catalog resource.
|
|
3
|
+
*
|
|
4
|
+
* The backend owns this calculation so the frontend stays dumb: it just renders
|
|
5
|
+
* `lastCheckedAt` and, when `isStale` is true, a muted "may be out of date" note.
|
|
6
|
+
*
|
|
7
|
+
* Data source: the autoupdate scan records, per app, when its sources were last
|
|
8
|
+
* verified (`lastCheckedAt`) and when the next check is due (`nextCheckAfter`,
|
|
9
|
+
* adaptive backoff). "Stale" means the entry is more than a grace period past
|
|
10
|
+
* its due date — i.e. the automated freshness loop has fallen behind for this
|
|
11
|
+
* app, so a human reader should treat the info with mild caution.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { Freshness } from '../../types/common/appCatalogTypes'
|
|
15
|
+
|
|
16
|
+
export type { Freshness }
|
|
17
|
+
|
|
18
|
+
/** A check is "stale" once it is this far past its due date (ms). Default: 7 days. */
|
|
19
|
+
export const STALE_GRACE_MS = 7 * 24 * 60 * 60 * 1000
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Compute the freshness semantic from the stored dates.
|
|
23
|
+
*
|
|
24
|
+
* @param lastCheckedAt ISO string or null — when sources were last verified.
|
|
25
|
+
* @param nextCheckAfter ISO string or null — when the next check is due.
|
|
26
|
+
* @param now current time (defaults to Date.now()); injectable for tests.
|
|
27
|
+
*/
|
|
28
|
+
export function computeFreshness(
|
|
29
|
+
lastCheckedAt: string | null,
|
|
30
|
+
nextCheckAfter: string | null,
|
|
31
|
+
now: number = Date.now(),
|
|
32
|
+
): Freshness {
|
|
33
|
+
// Never checked → no line is shown at all (frontend hides null lastCheckedAt).
|
|
34
|
+
if (!lastCheckedAt) {
|
|
35
|
+
return { lastCheckedAt: null, isStale: false }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let isStale = false
|
|
39
|
+
if (nextCheckAfter) {
|
|
40
|
+
const due = Date.parse(nextCheckAfter)
|
|
41
|
+
if (!Number.isNaN(due)) {
|
|
42
|
+
isStale = now - due > STALE_GRACE_MS
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return { lastCheckedAt, isStale }
|
|
47
|
+
}
|
|
@@ -14,6 +14,7 @@ import type {
|
|
|
14
14
|
import type { Group, Person } from '../../types/common/personGroupTypes'
|
|
15
15
|
import { omit } from 'radashi'
|
|
16
16
|
import { parseSourceSlug } from '../../utils/parseSourceSlug'
|
|
17
|
+
import { computeFreshness } from './freshness'
|
|
17
18
|
|
|
18
19
|
/** Prisma query result for DbResource with sourceRefs included (used by rowToResource) */
|
|
19
20
|
type ResourceRowWithSourceRefs = Prisma.DbResourceGetPayload<{
|
|
@@ -157,6 +158,10 @@ function rowToResource(row: ResourceRowWithSourceRefs): Resource {
|
|
|
157
158
|
: undefined
|
|
158
159
|
const tiers =
|
|
159
160
|
row.tiers == null ? undefined : (row.tiers as unknown as Resource['tiers'])
|
|
161
|
+
const freshness = computeFreshness(
|
|
162
|
+
row.lastCheckedAt ? row.lastCheckedAt.toISOString() : null,
|
|
163
|
+
row.nextCheckAfter ? row.nextCheckAfter.toISOString() : null,
|
|
164
|
+
)
|
|
160
165
|
|
|
161
166
|
return {
|
|
162
167
|
id: row.id,
|
|
@@ -191,6 +196,8 @@ function rowToResource(row: ResourceRowWithSourceRefs): Resource {
|
|
|
191
196
|
extra: row.extra
|
|
192
197
|
? (row.extra as unknown as Record<string, unknown>)
|
|
193
198
|
: undefined,
|
|
199
|
+
// Only surface freshness once the app has actually been scanned.
|
|
200
|
+
freshness: freshness.lastCheckedAt ? freshness : undefined,
|
|
194
201
|
}
|
|
195
202
|
}
|
|
196
203
|
|
|
@@ -39,6 +39,17 @@ export interface SourceReference {
|
|
|
39
39
|
parseDate: string | null
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Backend-computed freshness of an entry's source data. See
|
|
44
|
+
* `modules/appCatalog/freshness.ts` for how it is derived.
|
|
45
|
+
*/
|
|
46
|
+
export interface Freshness {
|
|
47
|
+
/** ISO-8601 timestamp the app's sources were last verified, or null if never. */
|
|
48
|
+
lastCheckedAt: string | null
|
|
49
|
+
/** True when the entry is overdue for a re-check by more than the grace period. */
|
|
50
|
+
isStale: boolean
|
|
51
|
+
}
|
|
52
|
+
|
|
42
53
|
/**
|
|
43
54
|
* Resource entry in the catalog (application or sub-resource).
|
|
44
55
|
* Unified model: applications have no parentSlug; sub-resources have parentSlug.
|
|
@@ -93,6 +104,20 @@ export interface Resource {
|
|
|
93
104
|
accessComments?: string
|
|
94
105
|
/** Arbitrary extra data */
|
|
95
106
|
extra?: Record<string, unknown>
|
|
107
|
+
/**
|
|
108
|
+
* Backend-computed freshness of this entry's source data (OUTPUT — set by the
|
|
109
|
+
* serializer on the served Resource). The frontend renders it directly (no
|
|
110
|
+
* calculation): show `lastCheckedAt`, and a muted "may be out of date" note
|
|
111
|
+
* when `isStale`. Omitted when the app has never been scanned.
|
|
112
|
+
*/
|
|
113
|
+
freshness?: Freshness
|
|
114
|
+
/**
|
|
115
|
+
* Raw freshness timestamps (INPUT — supplied by the company sync from its scan
|
|
116
|
+
* metadata, persisted to the DB). Not served to the frontend; the serializer
|
|
117
|
+
* derives `freshness` from these. ISO-8601 strings.
|
|
118
|
+
*/
|
|
119
|
+
lastCheckedAt?: string | null
|
|
120
|
+
nextCheckAfter?: string | null
|
|
96
121
|
}
|
|
97
122
|
|
|
98
123
|
// Derived catalog data returned by backend
|