import { DateTime } from 'luxon' import { column } from '@adonisjs/lucid/orm' import BaseModel from '#models/base_model' import { loadedSegments, storedSegments } from '#services/FileStore' import type { Segment } from '#lib/nzb/index' export default class File extends BaseModel { @column({ isPrimary: true }) declare id: number @column({ columnName: 'file_key' }) declare fileKey: string | null @column() declare filename: string @column() declare poster: string @column() declare date: number @column() declare parts: number /** Stored compressed (see FileStore); the model sees the list. */ @column({ prepare: (value: Segment[]) => storedSegments(value), consume: (value: Buffer | null) => loadedSegments(value) }) declare segments: Segment[] @column({ columnName: 'first_message_id' }) declare firstMessageId: string | null @column() declare groups: string[] @column.dateTime({ autoCreate: true }) declare createdAt: DateTime @column.dateTime({ autoCreate: true, autoUpdate: true }) declare updatedAt: DateTime }