站点同步
This commit is contained in:
1 parent
a64be50b73
commit
9cb8552a99
28 files changed
+1683
-18
No files matched your search
@@ -0,0 +1,38 @@
|
||||
import { requireSiteSyncAuth } from '../../utils/access'
|
||||
import { listAllImageIndexRows } from '../../utils/image-index'
|
||||
import { listUserIdUsernameMap } from '../../utils/db'
|
||||
import { collectMediaAssetKeys } from '../../utils/media-assets'
|
||||
import { getBackendForKey } from '../../utils/storage/resolver'
|
||||
import type { SiteSyncInventory } from '../../utils/site-sync/protocol'
|
||||
|
||||
export default defineEventHandler(async (event): Promise<SiteSyncInventory> => {
|
||||
await requireSiteSyncAuth(event)
|
||||
|
||||
const rows = listAllImageIndexRows()
|
||||
const objects = new Map<string, number>()
|
||||
|
||||
for (const row of rows) {
|
||||
const backend = await getBackendForKey(row.key)
|
||||
let keys: string[]
|
||||
try {
|
||||
keys = await collectMediaAssetKeys(row, backend)
|
||||
} catch {
|
||||
keys = [
|
||||
...(Number(row.source_deleted ?? 0) !== 1 ? [row.key] : []),
|
||||
...(row.thumb_key ? [row.thumb_key] : []),
|
||||
...(row.hls_key ? [row.hls_key] : [])
|
||||
]
|
||||
}
|
||||
|
||||
for (const key of new Set(keys)) {
|
||||
const stored = await backend.head(key)
|
||||
if (stored) objects.set(key, stored.size)
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
users: [...listUserIdUsernameMap().values()].sort(),
|
||||
mediaKeys: rows.map(row => row.key),
|
||||
objects: [...objects].map(([key, size]) => ({ key, size }))
|
||||
}
|
||||
})
|
||||
Reference in new issue
Block a user