@openora/core 0.4.1-canary.120 → 0.4.1-canary.121

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.
Files changed (35) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/audit/__tests__/map-event.test.js +25 -0
  3. package/dist/audit/__tests__/map-event.test.js.map +1 -1
  4. package/dist/audit/plugin.d.ts.map +1 -1
  5. package/dist/audit/plugin.js +22 -0
  6. package/dist/audit/plugin.js.map +1 -1
  7. package/dist/audit/service/audit.service.d.ts +2 -2
  8. package/dist/cms/__tests__/cms.router.int.test.js +136 -2
  9. package/dist/cms/__tests__/cms.router.int.test.js.map +1 -1
  10. package/dist/cms/__tests__/cms.service.int.test.js +358 -3
  11. package/dist/cms/__tests__/cms.service.int.test.js.map +1 -1
  12. package/dist/cms/contract/index.d.ts +92 -0
  13. package/dist/cms/contract/index.d.ts.map +1 -1
  14. package/dist/cms/contract/index.js +35 -0
  15. package/dist/cms/contract/index.js.map +1 -1
  16. package/dist/cms/drizzle/migrations/0002_naive_kingpin.sql +14 -0
  17. package/dist/cms/drizzle/migrations/meta/0002_snapshot.json +412 -0
  18. package/dist/cms/drizzle/migrations/meta/_journal.json +7 -0
  19. package/dist/cms/router/index.d.ts +46 -0
  20. package/dist/cms/router/index.d.ts.map +1 -1
  21. package/dist/cms/router/index.js +31 -3
  22. package/dist/cms/router/index.js.map +1 -1
  23. package/dist/cms/schema/index.d.ts +127 -0
  24. package/dist/cms/schema/index.d.ts.map +1 -1
  25. package/dist/cms/schema/index.js +24 -1
  26. package/dist/cms/schema/index.js.map +1 -1
  27. package/dist/cms/service/cms.service.d.ts +57 -0
  28. package/dist/cms/service/cms.service.d.ts.map +1 -1
  29. package/dist/cms/service/cms.service.js +259 -40
  30. package/dist/cms/service/cms.service.js.map +1 -1
  31. package/dist/contracts/schemas/events.d.ts +23 -0
  32. package/dist/contracts/schemas/events.d.ts.map +1 -1
  33. package/dist/contracts/schemas/events.js +15 -0
  34. package/dist/contracts/schemas/events.js.map +1 -1
  35. package/package.json +1 -1
@@ -102,6 +102,29 @@ export const GetPublicBannerInputSchema = z.object({
102
102
  placement: z.string(),
103
103
  locale: z.string().optional(),
104
104
  });
105
+ export const BannerScheduleSchema = z.object({
106
+ id: UuidSchema,
107
+ bannerConfigurationId: UuidSchema,
108
+ startsAt: TimestampSchema,
109
+ endsAt: TimestampSchema,
110
+ createdBy: UuidSchema,
111
+ createdAt: TimestampSchema,
112
+ });
113
+ export const BannerScheduleWithConfigurationSchema = BannerScheduleSchema.extend({
114
+ configuration: BannerConfigurationSummarySchema,
115
+ });
116
+ export const CreateBannerScheduleInputSchema = z.object({
117
+ id: UuidSchema,
118
+ startsAt: TimestampSchema,
119
+ endsAt: TimestampSchema,
120
+ });
121
+ export const UpdateBannerScheduleEndInputSchema = z.object({
122
+ id: UuidSchema,
123
+ endsAt: TimestampSchema,
124
+ });
125
+ export const ListBannerSchedulesByPlacementInputSchema = z.object({
126
+ placement: z.string(),
127
+ });
105
128
  export const cmsContract = {
106
129
  listPages: oc
107
130
  .route({ method: 'GET', path: '/cms/pages' })
@@ -172,5 +195,17 @@ export const cmsContract = {
172
195
  .route({ method: 'GET', path: '/cms/banners/{placement}' })
173
196
  .input(GetPublicBannerInputSchema)
174
197
  .output(PublicBannerSchema.nullable()),
198
+ createBannerSchedule: oc
199
+ .route({ method: 'POST', path: '/cms/banner-configurations/{id}/schedule' })
200
+ .input(CreateBannerScheduleInputSchema)
201
+ .output(BannerScheduleSchema),
202
+ updateBannerScheduleEnd: oc
203
+ .route({ method: 'PUT', path: '/cms/banner-configurations/{id}/schedule' })
204
+ .input(UpdateBannerScheduleEndInputSchema)
205
+ .output(BannerScheduleSchema),
206
+ listBannerSchedulesByPlacement: oc
207
+ .route({ method: 'GET', path: '/cms/banner-placements/{placement}/schedules' })
208
+ .input(ListBannerSchedulesByPlacementInputSchema)
209
+ .output(z.array(BannerScheduleWithConfigurationSchema)),
175
210
  };
176
211
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cms/contract/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cms/contract/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ CREATE TABLE "banner_schedule" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "banner_configuration_id" uuid NOT NULL,
4
+ "starts_at" timestamp with time zone NOT NULL,
5
+ "ends_at" timestamp with time zone NOT NULL,
6
+ "created_by" uuid NOT NULL,
7
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
8
+ "updated_at" timestamp with time zone NOT NULL,
9
+ CONSTRAINT "banner_schedule_ends_after_starts_check" CHECK ("banner_schedule"."ends_at" > "banner_schedule"."starts_at")
10
+ );
11
+ --> statement-breakpoint
12
+ ALTER TABLE "banner_schedule" ADD CONSTRAINT "banner_schedule_banner_configuration_id_banner_configuration_id_fk" FOREIGN KEY ("banner_configuration_id") REFERENCES "public"."banner_configuration"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
13
+ CREATE UNIQUE INDEX "banner_schedule_configuration_id_idx" ON "banner_schedule" USING btree ("banner_configuration_id");--> statement-breakpoint
14
+ CREATE INDEX "banner_schedule_starts_ends_idx" ON "banner_schedule" USING btree ("starts_at","ends_at");
@@ -0,0 +1,412 @@
1
+ {
2
+ "id": "b191d5f3-75f2-4ead-95b2-2e4afcf2b761",
3
+ "prevId": "8a3a8f0e-2dec-4b95-823f-c6a5de971a3c",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.banner_configuration": {
8
+ "name": "banner_configuration",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "gen_random_uuid()"
17
+ },
18
+ "placement": {
19
+ "name": "placement",
20
+ "type": "text",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "layout": {
25
+ "name": "layout",
26
+ "type": "banner_layout",
27
+ "typeSchema": "public",
28
+ "primaryKey": false,
29
+ "notNull": true
30
+ },
31
+ "is_default": {
32
+ "name": "is_default",
33
+ "type": "boolean",
34
+ "primaryKey": false,
35
+ "notNull": true,
36
+ "default": false
37
+ },
38
+ "created_by": {
39
+ "name": "created_by",
40
+ "type": "uuid",
41
+ "primaryKey": false,
42
+ "notNull": true
43
+ },
44
+ "created_at": {
45
+ "name": "created_at",
46
+ "type": "timestamp with time zone",
47
+ "primaryKey": false,
48
+ "notNull": true,
49
+ "default": "now()"
50
+ },
51
+ "updated_at": {
52
+ "name": "updated_at",
53
+ "type": "timestamp with time zone",
54
+ "primaryKey": false,
55
+ "notNull": true
56
+ }
57
+ },
58
+ "indexes": {
59
+ "banner_configuration_placement_idx": {
60
+ "name": "banner_configuration_placement_idx",
61
+ "columns": [
62
+ {
63
+ "expression": "placement",
64
+ "isExpression": false,
65
+ "asc": true,
66
+ "nulls": "last"
67
+ }
68
+ ],
69
+ "isUnique": false,
70
+ "concurrently": false,
71
+ "method": "btree",
72
+ "with": {}
73
+ },
74
+ "banner_configuration_default_per_placement_idx": {
75
+ "name": "banner_configuration_default_per_placement_idx",
76
+ "columns": [
77
+ {
78
+ "expression": "placement",
79
+ "isExpression": false,
80
+ "asc": true,
81
+ "nulls": "last"
82
+ }
83
+ ],
84
+ "isUnique": true,
85
+ "where": "\"banner_configuration\".\"is_default\" = true",
86
+ "concurrently": false,
87
+ "method": "btree",
88
+ "with": {}
89
+ }
90
+ },
91
+ "foreignKeys": {},
92
+ "compositePrimaryKeys": {},
93
+ "uniqueConstraints": {},
94
+ "policies": {},
95
+ "checkConstraints": {},
96
+ "isRLSEnabled": false
97
+ },
98
+ "public.banner_image": {
99
+ "name": "banner_image",
100
+ "schema": "",
101
+ "columns": {
102
+ "id": {
103
+ "name": "id",
104
+ "type": "uuid",
105
+ "primaryKey": true,
106
+ "notNull": true,
107
+ "default": "gen_random_uuid()"
108
+ },
109
+ "banner_configuration_id": {
110
+ "name": "banner_configuration_id",
111
+ "type": "uuid",
112
+ "primaryKey": false,
113
+ "notNull": true
114
+ },
115
+ "sort_order": {
116
+ "name": "sort_order",
117
+ "type": "integer",
118
+ "primaryKey": false,
119
+ "notNull": true
120
+ },
121
+ "locale": {
122
+ "name": "locale",
123
+ "type": "text",
124
+ "primaryKey": false,
125
+ "notNull": true,
126
+ "default": "'default'"
127
+ },
128
+ "desktop_image_url": {
129
+ "name": "desktop_image_url",
130
+ "type": "text",
131
+ "primaryKey": false,
132
+ "notNull": true
133
+ },
134
+ "mobile_image_url": {
135
+ "name": "mobile_image_url",
136
+ "type": "text",
137
+ "primaryKey": false,
138
+ "notNull": true
139
+ },
140
+ "link_url": {
141
+ "name": "link_url",
142
+ "type": "text",
143
+ "primaryKey": false,
144
+ "notNull": false
145
+ },
146
+ "created_at": {
147
+ "name": "created_at",
148
+ "type": "timestamp with time zone",
149
+ "primaryKey": false,
150
+ "notNull": true,
151
+ "default": "now()"
152
+ },
153
+ "updated_at": {
154
+ "name": "updated_at",
155
+ "type": "timestamp with time zone",
156
+ "primaryKey": false,
157
+ "notNull": true
158
+ }
159
+ },
160
+ "indexes": {
161
+ "banner_image_configuration_sort_locale_idx": {
162
+ "name": "banner_image_configuration_sort_locale_idx",
163
+ "columns": [
164
+ {
165
+ "expression": "banner_configuration_id",
166
+ "isExpression": false,
167
+ "asc": true,
168
+ "nulls": "last"
169
+ },
170
+ {
171
+ "expression": "sort_order",
172
+ "isExpression": false,
173
+ "asc": true,
174
+ "nulls": "last"
175
+ },
176
+ {
177
+ "expression": "locale",
178
+ "isExpression": false,
179
+ "asc": true,
180
+ "nulls": "last"
181
+ }
182
+ ],
183
+ "isUnique": true,
184
+ "concurrently": false,
185
+ "method": "btree",
186
+ "with": {}
187
+ },
188
+ "banner_image_configuration_id_idx": {
189
+ "name": "banner_image_configuration_id_idx",
190
+ "columns": [
191
+ {
192
+ "expression": "banner_configuration_id",
193
+ "isExpression": false,
194
+ "asc": true,
195
+ "nulls": "last"
196
+ }
197
+ ],
198
+ "isUnique": false,
199
+ "concurrently": false,
200
+ "method": "btree",
201
+ "with": {}
202
+ }
203
+ },
204
+ "foreignKeys": {
205
+ "banner_image_banner_configuration_id_banner_configuration_id_fk": {
206
+ "name": "banner_image_banner_configuration_id_banner_configuration_id_fk",
207
+ "tableFrom": "banner_image",
208
+ "tableTo": "banner_configuration",
209
+ "columnsFrom": ["banner_configuration_id"],
210
+ "columnsTo": ["id"],
211
+ "onDelete": "cascade",
212
+ "onUpdate": "no action"
213
+ }
214
+ },
215
+ "compositePrimaryKeys": {},
216
+ "uniqueConstraints": {},
217
+ "policies": {},
218
+ "checkConstraints": {},
219
+ "isRLSEnabled": false
220
+ },
221
+ "public.banner_schedule": {
222
+ "name": "banner_schedule",
223
+ "schema": "",
224
+ "columns": {
225
+ "id": {
226
+ "name": "id",
227
+ "type": "uuid",
228
+ "primaryKey": true,
229
+ "notNull": true,
230
+ "default": "gen_random_uuid()"
231
+ },
232
+ "banner_configuration_id": {
233
+ "name": "banner_configuration_id",
234
+ "type": "uuid",
235
+ "primaryKey": false,
236
+ "notNull": true
237
+ },
238
+ "starts_at": {
239
+ "name": "starts_at",
240
+ "type": "timestamp with time zone",
241
+ "primaryKey": false,
242
+ "notNull": true
243
+ },
244
+ "ends_at": {
245
+ "name": "ends_at",
246
+ "type": "timestamp with time zone",
247
+ "primaryKey": false,
248
+ "notNull": true
249
+ },
250
+ "created_by": {
251
+ "name": "created_by",
252
+ "type": "uuid",
253
+ "primaryKey": false,
254
+ "notNull": true
255
+ },
256
+ "created_at": {
257
+ "name": "created_at",
258
+ "type": "timestamp with time zone",
259
+ "primaryKey": false,
260
+ "notNull": true,
261
+ "default": "now()"
262
+ },
263
+ "updated_at": {
264
+ "name": "updated_at",
265
+ "type": "timestamp with time zone",
266
+ "primaryKey": false,
267
+ "notNull": true
268
+ }
269
+ },
270
+ "indexes": {
271
+ "banner_schedule_configuration_id_idx": {
272
+ "name": "banner_schedule_configuration_id_idx",
273
+ "columns": [
274
+ {
275
+ "expression": "banner_configuration_id",
276
+ "isExpression": false,
277
+ "asc": true,
278
+ "nulls": "last"
279
+ }
280
+ ],
281
+ "isUnique": true,
282
+ "concurrently": false,
283
+ "method": "btree",
284
+ "with": {}
285
+ },
286
+ "banner_schedule_starts_ends_idx": {
287
+ "name": "banner_schedule_starts_ends_idx",
288
+ "columns": [
289
+ {
290
+ "expression": "starts_at",
291
+ "isExpression": false,
292
+ "asc": true,
293
+ "nulls": "last"
294
+ },
295
+ {
296
+ "expression": "ends_at",
297
+ "isExpression": false,
298
+ "asc": true,
299
+ "nulls": "last"
300
+ }
301
+ ],
302
+ "isUnique": false,
303
+ "concurrently": false,
304
+ "method": "btree",
305
+ "with": {}
306
+ }
307
+ },
308
+ "foreignKeys": {
309
+ "banner_schedule_banner_configuration_id_banner_configuration_id_fk": {
310
+ "name": "banner_schedule_banner_configuration_id_banner_configuration_id_fk",
311
+ "tableFrom": "banner_schedule",
312
+ "tableTo": "banner_configuration",
313
+ "columnsFrom": ["banner_configuration_id"],
314
+ "columnsTo": ["id"],
315
+ "onDelete": "cascade",
316
+ "onUpdate": "no action"
317
+ }
318
+ },
319
+ "compositePrimaryKeys": {},
320
+ "uniqueConstraints": {},
321
+ "policies": {},
322
+ "checkConstraints": {
323
+ "banner_schedule_ends_after_starts_check": {
324
+ "name": "banner_schedule_ends_after_starts_check",
325
+ "value": "\"banner_schedule\".\"ends_at\" > \"banner_schedule\".\"starts_at\""
326
+ }
327
+ },
328
+ "isRLSEnabled": false
329
+ },
330
+ "public.page": {
331
+ "name": "page",
332
+ "schema": "",
333
+ "columns": {
334
+ "id": {
335
+ "name": "id",
336
+ "type": "uuid",
337
+ "primaryKey": true,
338
+ "notNull": true,
339
+ "default": "gen_random_uuid()"
340
+ },
341
+ "slug": {
342
+ "name": "slug",
343
+ "type": "text",
344
+ "primaryKey": false,
345
+ "notNull": true
346
+ },
347
+ "title": {
348
+ "name": "title",
349
+ "type": "text",
350
+ "primaryKey": false,
351
+ "notNull": true
352
+ },
353
+ "content": {
354
+ "name": "content",
355
+ "type": "jsonb",
356
+ "primaryKey": false,
357
+ "notNull": true,
358
+ "default": "'{}'::jsonb"
359
+ },
360
+ "published_at": {
361
+ "name": "published_at",
362
+ "type": "timestamp with time zone",
363
+ "primaryKey": false,
364
+ "notNull": false
365
+ },
366
+ "created_at": {
367
+ "name": "created_at",
368
+ "type": "timestamp with time zone",
369
+ "primaryKey": false,
370
+ "notNull": true,
371
+ "default": "now()"
372
+ },
373
+ "updated_at": {
374
+ "name": "updated_at",
375
+ "type": "timestamp with time zone",
376
+ "primaryKey": false,
377
+ "notNull": true
378
+ }
379
+ },
380
+ "indexes": {},
381
+ "foreignKeys": {},
382
+ "compositePrimaryKeys": {},
383
+ "uniqueConstraints": {
384
+ "page_slug_unique": {
385
+ "name": "page_slug_unique",
386
+ "nullsNotDistinct": false,
387
+ "columns": ["slug"]
388
+ }
389
+ },
390
+ "policies": {},
391
+ "checkConstraints": {},
392
+ "isRLSEnabled": false
393
+ }
394
+ },
395
+ "enums": {
396
+ "public.banner_layout": {
397
+ "name": "banner_layout",
398
+ "schema": "public",
399
+ "values": ["carousel", "grid", "single"]
400
+ }
401
+ },
402
+ "schemas": {},
403
+ "sequences": {},
404
+ "roles": {},
405
+ "policies": {},
406
+ "views": {},
407
+ "_meta": {
408
+ "columns": {},
409
+ "schemas": {},
410
+ "tables": {}
411
+ }
412
+ }
@@ -15,6 +15,13 @@
15
15
  "when": 1788220027498,
16
16
  "tag": "0001_steep_starjammers",
17
17
  "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1788302574622,
23
+ "tag": "0002_naive_kingpin",
24
+ "breakpoints": true
18
25
  }
19
26
  ]
20
27
  }
@@ -247,5 +247,51 @@ export declare function createCmsRouter(cms: CmsService, adminGuard: AdminGuard)
247
247
  linkUrl: import("zod").ZodNullable<import("zod").ZodString>;
248
248
  }, import("zod/v4/core").$strip>>;
249
249
  }, import("zod/v4/core").$strip>>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
250
+ createBannerSchedule: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
251
+ id: import("zod").ZodUUID;
252
+ startsAt: import("zod").ZodISODateTime;
253
+ endsAt: import("zod").ZodISODateTime;
254
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
255
+ id: import("zod").ZodUUID;
256
+ bannerConfigurationId: import("zod").ZodUUID;
257
+ startsAt: import("zod").ZodISODateTime;
258
+ endsAt: import("zod").ZodISODateTime;
259
+ createdBy: import("zod").ZodUUID;
260
+ createdAt: import("zod").ZodISODateTime;
261
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
262
+ updateBannerScheduleEnd: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
263
+ id: import("zod").ZodUUID;
264
+ endsAt: import("zod").ZodISODateTime;
265
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
266
+ id: import("zod").ZodUUID;
267
+ bannerConfigurationId: import("zod").ZodUUID;
268
+ startsAt: import("zod").ZodISODateTime;
269
+ endsAt: import("zod").ZodISODateTime;
270
+ createdBy: import("zod").ZodUUID;
271
+ createdAt: import("zod").ZodISODateTime;
272
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
273
+ listBannerSchedulesByPlacement: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<OssContext & Record<never, never>, OssContext & Record<never, never>, OssContext>, OssContext, import("zod").ZodObject<{
274
+ placement: import("zod").ZodString;
275
+ }, import("zod/v4/core").$strip>, import("zod").ZodArray<import("zod").ZodObject<{
276
+ id: import("zod").ZodUUID;
277
+ bannerConfigurationId: import("zod").ZodUUID;
278
+ startsAt: import("zod").ZodISODateTime;
279
+ endsAt: import("zod").ZodISODateTime;
280
+ createdBy: import("zod").ZodUUID;
281
+ createdAt: import("zod").ZodISODateTime;
282
+ configuration: import("zod").ZodObject<{
283
+ id: import("zod").ZodUUID;
284
+ createdAt: import("zod").ZodISODateTime;
285
+ placement: import("zod").ZodString;
286
+ createdBy: import("zod").ZodUUID;
287
+ layout: import("zod").ZodEnum<{
288
+ single: "single";
289
+ carousel: "carousel";
290
+ grid: "grid";
291
+ }>;
292
+ isDefault: import("zod").ZodBoolean;
293
+ imageCount: import("zod").ZodNumber;
294
+ }, import("zod/v4/core").$strip>;
295
+ }, import("zod/v4/core").$strip>>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
250
296
  };
251
297
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cms/router/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,UAAU,EAOX,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cms/router/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,UAAU,EAWX,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0JtE"}
@@ -1,7 +1,7 @@
1
1
  import { implement } from '@orpc/server';
2
2
  import { mapErrors } from '@openora/core/server';
3
3
  import { cmsContract } from '../contract/index.js';
4
- import { PageNotFoundError, BannerConfigurationNotFoundError, BannerConfigurationIsDefaultError, BannerConfigurationImageCountError, BannerImageNotFoundError, BannerImageHostNotAllowedError, } from '../service/cms.service.js';
4
+ import { PageNotFoundError, BannerConfigurationNotFoundError, BannerConfigurationIsDefaultError, BannerConfigurationImageCountError, BannerImageNotFoundError, BannerImageHostNotAllowedError, BannerScheduleNotFoundError, BannerConfigurationHasScheduleError, BannerScheduleInvalidRangeError, BannerScheduleOverlapError, } from '../service/cms.service.js';
5
5
  export function createCmsRouter(cms, adminGuard) {
6
6
  const os = implement(cmsContract).$context();
7
7
  return os.router({
@@ -43,7 +43,7 @@ export function createCmsRouter(cms, adminGuard) {
43
43
  const { userId, ip, userAgent } = await adminGuard.assert(context, 'content', 'delete');
44
44
  await mapErrors({
45
45
  NOT_FOUND: BannerConfigurationNotFoundError,
46
- CONFLICT: BannerConfigurationIsDefaultError,
46
+ CONFLICT: [BannerConfigurationIsDefaultError, BannerConfigurationHasScheduleError],
47
47
  }, () => cms.deleteConfiguration(input.id, userId, { ip, userAgent }));
48
48
  return { success: true };
49
49
  }),
@@ -51,7 +51,7 @@ export function createCmsRouter(cms, adminGuard) {
51
51
  const { userId, ip, userAgent } = await adminGuard.assert(context, 'content', 'publish');
52
52
  return mapErrors({
53
53
  NOT_FOUND: BannerConfigurationNotFoundError,
54
- CONFLICT: BannerConfigurationImageCountError,
54
+ CONFLICT: [BannerConfigurationImageCountError, BannerConfigurationHasScheduleError],
55
55
  }, () => cms.setDefaultConfiguration(input.id, userId, { ip, userAgent }));
56
56
  }),
57
57
  setBannerImage: os.setBannerImage.handler(async ({ input, context }) => {
@@ -67,6 +67,34 @@ export function createCmsRouter(cms, adminGuard) {
67
67
  return { success: true };
68
68
  }),
69
69
  getPublicBanner: os.getPublicBanner.handler(({ input }) => cms.getPublicBanner(input.placement, input.locale)),
70
+ createBannerSchedule: os.createBannerSchedule.handler(async ({ input, context }) => {
71
+ const { userId, ip, userAgent } = await adminGuard.assert(context, 'content', 'publish');
72
+ return mapErrors({
73
+ NOT_FOUND: BannerConfigurationNotFoundError,
74
+ CONFLICT: [
75
+ BannerConfigurationIsDefaultError,
76
+ BannerConfigurationHasScheduleError,
77
+ BannerScheduleOverlapError,
78
+ BannerConfigurationImageCountError,
79
+ ],
80
+ BAD_REQUEST: BannerScheduleInvalidRangeError,
81
+ }, () => cms.createBannerSchedule(input.id, { startsAt: input.startsAt, endsAt: input.endsAt }, userId, { ip, userAgent }));
82
+ }),
83
+ updateBannerScheduleEnd: os.updateBannerScheduleEnd.handler(async ({ input, context }) => {
84
+ const { userId, ip, userAgent } = await adminGuard.assert(context, 'content', 'publish');
85
+ return mapErrors({
86
+ NOT_FOUND: [BannerConfigurationNotFoundError, BannerScheduleNotFoundError],
87
+ CONFLICT: BannerScheduleOverlapError,
88
+ BAD_REQUEST: BannerScheduleInvalidRangeError,
89
+ }, () => cms.updateBannerScheduleEnd(input.id, { endsAt: input.endsAt }, userId, {
90
+ ip,
91
+ userAgent,
92
+ }));
93
+ }),
94
+ listBannerSchedulesByPlacement: os.listBannerSchedulesByPlacement.handler(async ({ input, context }) => {
95
+ await adminGuard.assert(context, 'content', 'update');
96
+ return cms.listBannerSchedulesByPlacement(input.placement);
97
+ }),
70
98
  });
71
99
  }
72
100
  //# sourceMappingURL=index.js.map