initial commit
This commit is contained in:
27
server/utils/migrateFeedsToDevices.js
Normal file
27
server/utils/migrateFeedsToDevices.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import { join } from 'node:path'
|
||||
import { readFileSync, existsSync } from 'node:fs'
|
||||
import { getDb } from './db.js'
|
||||
import { sanitizeStreamUrl } from './feedUtils.js'
|
||||
|
||||
/**
|
||||
* One-time migration: insert entries from server/data/feeds.json into devices (device_type = 'feed').
|
||||
* No-op if devices table already has rows or feeds file is missing.
|
||||
*/
|
||||
export async function migrateFeedsToDevices() {
|
||||
const db = await getDb()
|
||||
const row = await db.get('SELECT COUNT(*) as n FROM devices')
|
||||
if (row?.n > 0) return
|
||||
const path = join(process.cwd(), 'server/data/feeds.json')
|
||||
if (!existsSync(path)) return
|
||||
const data = JSON.parse(readFileSync(path, 'utf8'))
|
||||
const list = Array.isArray(data) ? data : []
|
||||
for (const feed of list) {
|
||||
if (!feed?.id || typeof feed.name !== 'string' || typeof feed.lat !== 'number' || typeof feed.lng !== 'number') continue
|
||||
const streamUrl = sanitizeStreamUrl(feed.streamUrl) ?? ''
|
||||
const sourceType = feed.sourceType === 'hls' ? 'hls' : 'mjpeg'
|
||||
await db.run(
|
||||
'INSERT OR IGNORE INTO devices (id, name, device_type, vendor, lat, lng, stream_url, source_type, config) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
||||
[feed.id, feed.name, 'feed', null, feed.lat, feed.lng, streamUrl, sourceType, null],
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user