"""SalesFile Model. It is a READ ONLY model for accessing data. The real business logic lives in the ows-royalties repository. """ from abacus_common_logic.connectors.database import db from sqlalchemy import select, text from sqlalchemy.sql import literal_column, table class SalesFile: """SalesFile Model.""" @classmethod def get_sales_file_by_id(cls, sales_file_id: int): """Get a sales_file by sales_file_id. Args: sales_file_id (int): id of the sales_file. Returns: a sales file """ sales_file_query = ( select( [ literal_column('sf.sales_file_id').label('sales_file_id'), literal_column('sf.file_name').label('file_name'), literal_column('sf.accounting_period_id').label( 'accounting_period_id' ), literal_column('sf.row_count').label('row_count'), ] ) .where(text('sf.sales_file_id = :sales_file_id')) .select_from(table('sales_file').alias('sf')) ) return db.session.execute( sales_file_query, {'sales_file_id': sales_file_id} ).fetchone()