Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion backend/app/repositories/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,21 @@
# repositories/__init__ — SkillStat
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',
]
7 changes: 6 additions & 1 deletion backend/app/repositories/alert_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# alert_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import Alert

class AlertRepository(BaseRepository):
def __init__(self):
super().__init__(Alert)
7 changes: 6 additions & 1 deletion backend/app/repositories/backup_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# backup_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import Backup

class BackupRepository(BaseRepository):
def __init__(self):
super().__init__(Backup)
47 changes: 46 additions & 1 deletion backend/app/repositories/base_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,46 @@
# base_repository — SkillStat
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)
Comment on lines +10 to +11

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
Comment on lines +20 to +22

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
Comment on lines +32 to +34

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
Comment on lines +44 to +46
7 changes: 6 additions & 1 deletion backend/app/repositories/category_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# category_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import Category

class CategoryRepository(BaseRepository):
def __init__(self):
super().__init__(Category)
7 changes: 6 additions & 1 deletion backend/app/repositories/city_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# city_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import City

class CityRepository(BaseRepository):
def __init__(self):
super().__init__(City)
7 changes: 6 additions & 1 deletion backend/app/repositories/job_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# job_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import Job

class JobRepository(BaseRepository):
def __init__(self):
super().__init__(Job)
6 changes: 6 additions & 0 deletions backend/app/repositories/job_skill_repository.py
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 6 additions & 1 deletion backend/app/repositories/skill_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# skill_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import Skill

class SkillRepository(BaseRepository):
def __init__(self):
super().__init__(Skill)
6 changes: 6 additions & 0 deletions backend/app/repositories/trend_snapshot_repository.py
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 6 additions & 1 deletion backend/app/repositories/user_repository.py
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
# user_repository — SkillStat
from app.repositories.base_repository import BaseRepository
from app.models import User

class UserRepository(BaseRepository):
def __init__(self):
super().__init__(User)