RSS Git Download  Clone
Raw Blame History 1kB 44 lines
import * as sharedIoRedis from '../../shared.mjs'

const consolePrefix = 'socket.io timeseries alter'

export default async (options) => {
    const {socket, payload} = options;

    try {
        sharedIoRedis.ensureReadonlyConnection({ socket })

        const redis = socket.p3xrs.ioredis
        const key = payload.key
        const args = [key]

        if (payload.retention !== undefined) {
            args.push('RETENTION', parseInt(payload.retention))
        }

        if (payload.duplicatePolicy) {
            args.push('DUPLICATE_POLICY', payload.duplicatePolicy)
        }

        if (payload.labels !== undefined) {
            args.push('LABELS')
            if (payload.labels && payload.labels.trim().length > 0) {
                args.push(...payload.labels.trim().split(/\s+/))
            }
        }

        console.info(consolePrefix, args)
        await redis.call('TS.ALTER', ...args)

        socket.emit(options.responseEvent, {
            status: 'ok',
        })
    } catch (e) {
        console.error(e)
        socket.emit(options.responseEvent, {
            status: 'error',
            error: e.message,
        })
    }
}