diff --git a/ember.py b/ember.py new file mode 100644 index 0000000..2b09c35 --- /dev/null +++ b/ember.py @@ -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() \ No newline at end of file diff --git a/migrations/env.py b/migrations/env.py index f8c13d2..bcb4dd5 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -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 diff --git a/migrations/versions/b4d509e2b27b_.py b/migrations/versions/b4d509e2b27b_.py new file mode 100644 index 0000000..0d9a955 --- /dev/null +++ b/migrations/versions/b4d509e2b27b_.py @@ -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 ### diff --git a/models/ember.py b/models/ember.py new file mode 100644 index 0000000..56c017b --- /dev/null +++ b/models/ember.py @@ -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) \ No newline at end of file