from datetime import datetime from app import db from app.dao.dao_utils import autocommit from app.models import ServiceDataRetention def fetch_service_data_retention_by_id(service_id, data_retention_id): data_retention = ServiceDataRetention.query.filter_by( service_id=service_id, id=data_retention_id ).first() return data_retention def fetch_service_data_retention(service_id): data_retention_list = ( ServiceDataRetention.query.filter_by(service_id=service_id) .order_by( # in the order that models.notification_types are created (email, sms, letter) ServiceDataRetention.notification_type ) .all() ) return data_retention_list def fetch_service_data_retention_by_notification_type(service_id, notification_type): data_retention_list = ServiceDataRetention.query.filter_by( service_id=service_id, notification_type=notification_type ).first() return data_retention_list @autocommit def insert_service_data_retention(service_id, notification_type, days_of_retention): new_data_retention = ServiceDataRetention( service_id=service_id, notification_type=notification_type, days_of_retention=days_of_retention, ) db.session.add(new_data_retention) return new_data_retention @autocommit def update_service_data_retention( service_data_retention_id, service_id, days_of_retention ): updated_count = ServiceDataRetention.query.filter( ServiceDataRetention.id == service_data_retention_id, ServiceDataRetention.service_id == service_id, ).update({"days_of_retention": days_of_retention, "updated_at": datetime.utcnow()}) return updated_count def fetch_service_data_retention_for_all_services_by_notification_type( notification_type, ): return ServiceDataRetention.query.filter( ServiceDataRetention.notification_type == notification_type ).all()