from peewee import * from pathlib import Path # Garante pasta de dados data_dir = Path('/app/data') data_dir.mkdir(parents=True, exist_ok=True) db = SqliteDatabase(str(data_dir / 'cleiflow.db')) class BaseModel(Model): class Meta: database = db class AppConfig(BaseModel): key = CharField(unique=True) value = TextField() @classmethod def get_val(cls, key, default=''): try: return cls.get(cls.key == key).value except: return default @classmethod def set_val(cls, key, value): cls.replace(key=key, value=value).execute() class Category(BaseModel): name = CharField(unique=True) target_path = CharField() match_keywords = CharField(null=True) content_type = CharField(default='mixed') genre_filters = CharField(null=True) country_filters = CharField(null=True) class FFmpegProfile(BaseModel): name = CharField() video_codec = CharField(default='h264_vaapi') preset = CharField(default='medium') crf = IntegerField(default=23) audio_langs = CharField(default='por,eng,jpn') subtitle_langs = CharField(default='por') is_active = BooleanField(default=False) def init_db(): # --- CORREÇÃO AQUI: Verifica se já está conectado --- if db.is_closed(): db.connect() db.create_tables([AppConfig, Category, FFmpegProfile], safe=True) try: db.execute_sql('ALTER TABLE category ADD COLUMN content_type VARCHAR DEFAULT "mixed"') except: pass try: db.execute_sql('ALTER TABLE category ADD COLUMN genre_filters VARCHAR DEFAULT ""') except: pass try: db.execute_sql('ALTER TABLE category ADD COLUMN country_filters VARCHAR DEFAULT ""') except: pass if FFmpegProfile.select().count() == 0: FFmpegProfile.create(name="Padrão VAAPI (Intel)", video_codec="h264_vaapi", is_active=True) # Não fechamos a conexão aqui para manter o pool ativo no container