Add Ember model and migration for ember table; implement main function for file processing

This commit is contained in:
Vasileios Millios 2026-06-18 19:14:34 +00:00
parent 5692f1bed0
commit c5f4182e6b
4 changed files with 85 additions and 0 deletions

30
ember.py Normal file
View file

@ -0,0 +1,30 @@
from peconvert import convert, ImageTypes
from tqdm import tqdm
from sqlalchemy.orm import Session
import os
import sys
from db.session import SessionLocal
from models.entry import Entry
from models.ember import Ember
def main(folder_path: str, export: str, session: Session):
files = os.listdir(folder_path)
for file in tqdm(files):
entry = session.query(Entry).filter(Entry.sha256 == file).first()
ember = Ember(
entry_id = entry.id,
filename = file
)
file_path = f"{folder_path}/{file}"
export_path = f"{export}/{file}.json"
convert(file_path, export_path, ImageTypes.EMBER)
session.add(ember)
session.commit()
if __name__ == "__main__":
session = SessionLocal()
if len(sys.argv) == 3:
main(sys.argv[1], sys.argv[2], session)
else:
raise ValueError()

View file

@ -27,6 +27,7 @@ if config.config_file_name is not None:
from db.base import Base
from models.entry import Entry # IMPORTANT: force model loading
from models.images import Image
from models.ember import Ember
target_metadata = Base.metadata

View file

@ -0,0 +1,41 @@
"""
Revision ID: b4d509e2b27b
Revises: f988852b4ab6
Create Date: 2026-06-18 18:37:09.768262
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = 'b4d509e2b27b'
down_revision: Union[str, Sequence[str], None] = 'f988852b4ab6'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('embers',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('entry_id', sa.Integer(), nullable=False),
sa.Column('filename', sa.String(length=255), nullable=False),
sa.ForeignKeyConstraint(['entry_id'], ['entries.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('entry_id')
)
op.create_index(op.f('ix_embers_id'), 'embers', ['id'], unique=False)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f('ix_embers_id'), table_name='embers')
op.drop_table('embers')
# ### end Alembic commands ###

13
models/ember.py Normal file
View file

@ -0,0 +1,13 @@
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from db.base import Base
class Ember(Base):
__tablename__ = "embers"
id = Column(Integer, primary_key=True, index=True)
entry_id = Column(Integer, ForeignKey("entries.id"), unique=True, nullable=False)
# example fields for image
filename = Column(String(255), nullable=False)