aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/assetdb.ts2
-rw-r--r--packages/shared/types/backups.ts14
-rw-r--r--packages/shared/types/users.ts12
3 files changed, 28 insertions, 0 deletions
diff --git a/packages/shared/assetdb.ts b/packages/shared/assetdb.ts
index ff87e847..2e22faf7 100644
--- a/packages/shared/assetdb.ts
+++ b/packages/shared/assetdb.ts
@@ -26,6 +26,7 @@ export const enum ASSET_TYPES {
IMAGE_PNG = "image/png",
IMAGE_WEBP = "image/webp",
APPLICATION_PDF = "application/pdf",
+ APPLICATION_ZIP = "application/zip",
TEXT_HTML = "text/html",
VIDEO_MP4 = "video/mp4",
@@ -65,6 +66,7 @@ export const SUPPORTED_ASSET_TYPES: Set<string> = new Set<string>([
...SUPPORTED_UPLOAD_ASSET_TYPES,
ASSET_TYPES.TEXT_HTML,
ASSET_TYPES.VIDEO_MP4,
+ ASSET_TYPES.APPLICATION_ZIP,
]);
export const zAssetMetadataSchema = z.object({
diff --git a/packages/shared/types/backups.ts b/packages/shared/types/backups.ts
new file mode 100644
index 00000000..f54d4824
--- /dev/null
+++ b/packages/shared/types/backups.ts
@@ -0,0 +1,14 @@
+import { z } from "zod";
+
+export const zBackupSchema = z.object({
+ id: z.string(),
+ userId: z.string(),
+ assetId: z.string().nullable(),
+ createdAt: z.date(),
+ size: z.number(),
+ bookmarkCount: z.number(),
+ status: z.enum(["pending", "success", "failure"]),
+ errorMessage: z.string().nullable().optional(),
+});
+
+export type ZBackup = z.infer<typeof zBackupSchema>;
diff --git a/packages/shared/types/users.ts b/packages/shared/types/users.ts
index 830fe87b..2fad4f83 100644
--- a/packages/shared/types/users.ts
+++ b/packages/shared/types/users.ts
@@ -108,6 +108,9 @@ export const zUserSettingsSchema = z.object({
]),
archiveDisplayBehaviour: z.enum(["show", "hide"]),
timezone: z.string(),
+ backupsEnabled: z.boolean(),
+ backupsFrequency: z.enum(["daily", "weekly"]),
+ backupsRetentionDays: z.number().int().min(1).max(365),
});
export type ZUserSettings = z.infer<typeof zUserSettingsSchema>;
@@ -116,4 +119,13 @@ export const zUpdateUserSettingsSchema = zUserSettingsSchema.partial().pick({
bookmarkClickAction: true,
archiveDisplayBehaviour: true,
timezone: true,
+ backupsEnabled: true,
+ backupsFrequency: true,
+ backupsRetentionDays: true,
+});
+
+export const zUpdateBackupSettingsSchema = zUpdateUserSettingsSchema.pick({
+ backupsEnabled: true,
+ backupsFrequency: true,
+ backupsRetentionDays: true,
});