Files
FileHost/server/utils/site-sync/protocol.ts
T
2026-10-17 14:41:32 +08:00

60 lines
1.2 KiB
TypeScript

import type { MediaType, TranscodeStatus } from '../storage/types'
export interface SiteSyncTag {
name: string
color: string
}
export interface SiteSyncMediaTransfer {
key: string
ownerUsername: string | null
originalName: string
contentType: string
size: number
uploadedAt: string
mediaType: MediaType
thumbKey: string | null
hlsKey: string | null
transcodeStatus: TranscodeStatus
transcodeProgress: number
transcodePreset: string | null
transcodeError: string | null
sourceDeleted: boolean
tags: SiteSyncTag[]
}
export interface SiteSyncInventory {
users: string[]
mediaKeys: string[]
objects: Array<{ key: string, size: number }>
}
export interface SiteSyncMediaAsset {
key: string
size: number
}
export interface SiteSyncMediaBundle {
media: SiteSyncMediaTransfer
assets: SiteSyncMediaAsset[]
}
export interface SiteSyncMediaPage {
items: SiteSyncMediaBundle[]
totalMedia: number
nextCursor: string | null
}
export interface SiteSyncUsers {
users: string[]
}
export type SiteSyncDirection = 'push' | 'pull'
export interface SiteSyncObjectOptions {
targetBaseUrl: string
token: string
conflictMode: 'skip' | 'overwrite'
direction?: SiteSyncDirection
}