diff --git a/backend/app/repositories/__init__.py b/backend/app/repositories/__init__.py index 47c32eb..ee78759 100644 --- a/backend/app/repositories/__init__.py +++ b/backend/app/repositories/__init__.py @@ -1 +1,21 @@ -# repositories/__init__ — SkillStat \ No newline at end of file +from .category_repository import CategoryRepository +from .city_repository import CityRepository +from .skill_repository import SkillRepository +from .job_repository import JobRepository +from .job_skill_repository import JobSkillRepository +from .user_repository import UserRepository +from .alert_repository import AlertRepository +from .trend_snapshot_repository import TrendSnapshotRepository +from .backup_repository import BackupRepository + +__all__ = [ + 'CategoryRepository', + 'CityRepository', + 'SkillRepository', + 'JobRepository', + 'JobSkillRepository', + 'UserRepository', + 'AlertRepository', + 'TrendSnapshotRepository', + 'BackupRepository', +] \ No newline at end of file diff --git a/backend/app/repositories/alert_repository.py b/backend/app/repositories/alert_repository.py index 64b9c74..bd0e190 100644 --- a/backend/app/repositories/alert_repository.py +++ b/backend/app/repositories/alert_repository.py @@ -1 +1,6 @@ -# alert_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import Alert + +class AlertRepository(BaseRepository): + def __init__(self): + super().__init__(Alert) \ No newline at end of file diff --git a/backend/app/repositories/backup_repository.py b/backend/app/repositories/backup_repository.py index ec06807..cff6149 100644 --- a/backend/app/repositories/backup_repository.py +++ b/backend/app/repositories/backup_repository.py @@ -1 +1,6 @@ -# backup_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import Backup + +class BackupRepository(BaseRepository): + def __init__(self): + super().__init__(Backup) \ No newline at end of file diff --git a/backend/app/repositories/base_repository.py b/backend/app/repositories/base_repository.py index 1df0dae..4f8feca 100644 --- a/backend/app/repositories/base_repository.py +++ b/backend/app/repositories/base_repository.py @@ -1 +1,46 @@ -# base_repository — SkillStat \ No newline at end of file +from app.extensions import db + +class BaseRepository: + def __init__(self, model): + self.model = model + + def get_all(self): + return db.session.query(self.model).all() + + def get_by_id(self, id): + return db.session.get(self.model, id) + + def create(self, data): + # Protegemos la transacción con un bloque de manejo de errores para garantizar que una falla en la escritura no deje bloqueada la sesión de la base de datos + try: + instance = self.model(**data) + db.session.add(instance) + db.session.commit() + return instance + except Exception as e: + db.session.rollback() + raise e + + def update(self, id, data): + try: + instance = self.get_by_id(id) + if instance: + for key, value in data.items(): + setattr(instance, key, value) + db.session.commit() + return instance + except Exception as e: + db.session.rollback() + raise e + + def delete(self, id): + try: + instance = self.get_by_id(id) + if instance: + db.session.delete(instance) + db.session.commit() + return True + return False + except Exception as e: + db.session.rollback() + raise e \ No newline at end of file diff --git a/backend/app/repositories/category_repository.py b/backend/app/repositories/category_repository.py index 2dc73ad..7fc292e 100644 --- a/backend/app/repositories/category_repository.py +++ b/backend/app/repositories/category_repository.py @@ -1 +1,6 @@ -# category_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import Category + +class CategoryRepository(BaseRepository): + def __init__(self): + super().__init__(Category) \ No newline at end of file diff --git a/backend/app/repositories/city_repository.py b/backend/app/repositories/city_repository.py index 057e9f7..9d9d569 100644 --- a/backend/app/repositories/city_repository.py +++ b/backend/app/repositories/city_repository.py @@ -1 +1,6 @@ -# city_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import City + +class CityRepository(BaseRepository): + def __init__(self): + super().__init__(City) \ No newline at end of file diff --git a/backend/app/repositories/job_repository.py b/backend/app/repositories/job_repository.py index 16dc31b..551109e 100644 --- a/backend/app/repositories/job_repository.py +++ b/backend/app/repositories/job_repository.py @@ -1 +1,6 @@ -# job_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import Job + +class JobRepository(BaseRepository): + def __init__(self): + super().__init__(Job) \ No newline at end of file diff --git a/backend/app/repositories/job_skill_repository.py b/backend/app/repositories/job_skill_repository.py new file mode 100644 index 0000000..2f0dbb9 --- /dev/null +++ b/backend/app/repositories/job_skill_repository.py @@ -0,0 +1,6 @@ +from app.repositories.base_repository import BaseRepository +from app.models import JobSkill + +class JobSkillRepository(BaseRepository): + def __init__(self): + super().__init__(JobSkill) diff --git a/backend/app/repositories/skill_repository.py b/backend/app/repositories/skill_repository.py index 327bf51..6ba7033 100644 --- a/backend/app/repositories/skill_repository.py +++ b/backend/app/repositories/skill_repository.py @@ -1 +1,6 @@ -# skill_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import Skill + +class SkillRepository(BaseRepository): + def __init__(self): + super().__init__(Skill) \ No newline at end of file diff --git a/backend/app/repositories/trend_snapshot_repository.py b/backend/app/repositories/trend_snapshot_repository.py new file mode 100644 index 0000000..983be7f --- /dev/null +++ b/backend/app/repositories/trend_snapshot_repository.py @@ -0,0 +1,6 @@ +from app.repositories.base_repository import BaseRepository +from app.models import TrendSnapshot + +class TrendSnapshotRepository(BaseRepository): + def __init__(self): + super().__init__(TrendSnapshot) diff --git a/backend/app/repositories/user_repository.py b/backend/app/repositories/user_repository.py index a8a8204..33cb248 100644 --- a/backend/app/repositories/user_repository.py +++ b/backend/app/repositories/user_repository.py @@ -1 +1,6 @@ -# user_repository — SkillStat \ No newline at end of file +from app.repositories.base_repository import BaseRepository +from app.models import User + +class UserRepository(BaseRepository): + def __init__(self): + super().__init__(User) \ No newline at end of file