from delphi_api.v3.data_models.postgres_db import Product, db from delphi_api.v3.data_models.schemas.models import ProductSchema, ProductSimpleSchema from delphi_api.v3.view_models.params import Params from delphi_api.v3.view_models.query_builder import QueryBuilder class ProductsViewModel: @staticmethod def get_one(params: dict): params = Params(**params) result = db.session.query(Product).get_or_404(params.product_id) return ProductSchema().dump(result) @staticmethod def get_many(params: dict): params = Params(**params) q = db.session.query(Product) q = QueryBuilder.or_filters_from_params(q, params, parent=Product) q = QueryBuilder.add_sort_clause(q, params, parent=Product) q = QueryBuilder.add_query_limit_offset(q, params) return ProductSimpleSchema(many=True).dump(q.all())