43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import type { ImageIndexRow } from '../image-index'
|
|
import { getUploadSourcesForKeys } from '../db'
|
|
import { getTagsForImageKeys } from '../tags'
|
|
import type {
|
|
SiteSyncMediaTransfer,
|
|
SiteSyncTag
|
|
} from './protocol'
|
|
|
|
export function toSiteSyncMediaTransfer(
|
|
row: ImageIndexRow,
|
|
ownerUsername: string | null,
|
|
tags: SiteSyncTag[]
|
|
): SiteSyncMediaTransfer {
|
|
const source = getUploadSourcesForKeys([row.key]).get(row.key)
|
|
const uploadSource = source === 'web' || source === 'api' ? source : undefined
|
|
return {
|
|
key: row.key,
|
|
ownerUsername,
|
|
originalName: row.original_name,
|
|
contentType: row.content_type,
|
|
size: row.size,
|
|
uploadedAt: row.uploaded_at,
|
|
mediaType: row.media_type,
|
|
...(uploadSource ? { uploadSource } : {}),
|
|
thumbKey: row.thumb_key,
|
|
hlsKey: row.hls_key,
|
|
transcodeStatus: row.transcode_status as SiteSyncMediaTransfer['transcodeStatus'],
|
|
transcodeProgress: Number(row.transcode_progress ?? 0),
|
|
transcodePreset: row.transcode_preset,
|
|
transcodeError: row.transcode_error,
|
|
sourceDeleted: Number(row.source_deleted ?? 0) === 1,
|
|
tags
|
|
}
|
|
}
|
|
|
|
export function toSiteSyncMediaTransferWithTags(
|
|
row: ImageIndexRow,
|
|
ownerUsername: string | null
|
|
): SiteSyncMediaTransfer {
|
|
const tags = getTagsForImageKeys([row.key]).get(row.key) ?? []
|
|
return toSiteSyncMediaTransfer(row, ownerUsername, tags)
|
|
}
|