62 lines
1.8 KiB
Bash
62 lines
1.8 KiB
Bash
# scripts/patch_profiles_repo_service.sh
|
|
cat > scripts/patch_profiles_repo_service.sh <<'BASH'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO="services/profiles/src/app/repositories/profile_repository.py"
|
|
SRV="services/profiles/src/app/services/profile_service.py"
|
|
mkdir -p "$(dirname "$REPO")" "$(dirname "$SRV")"
|
|
|
|
cat > "$REPO" <<'PY'
|
|
from typing import Optional
|
|
from uuid import UUID
|
|
from sqlalchemy.orm import Session
|
|
from sqlalchemy import select
|
|
from app.models.profile import Profile
|
|
from app.schemas.profile import ProfileCreate
|
|
|
|
class ProfileRepository:
|
|
def __init__(self, db: Session):
|
|
self.db = db
|
|
|
|
def get_by_user(self, user_id: UUID) -> Optional[Profile]:
|
|
return self.db.execute(select(Profile).where(Profile.user_id == user_id)).scalar_one_or_none()
|
|
|
|
def create(self, user_id: UUID, data: ProfileCreate) -> Profile:
|
|
p = Profile(
|
|
user_id=user_id,
|
|
gender=data.gender,
|
|
city=data.city,
|
|
languages=list(data.languages or []),
|
|
interests=list(data.interests or []),
|
|
)
|
|
self.db.add(p)
|
|
self.db.commit()
|
|
self.db.refresh(p)
|
|
return p
|
|
PY
|
|
|
|
cat > "$SRV" <<'PY'
|
|
from uuid import UUID
|
|
from app.schemas.profile import ProfileCreate
|
|
from app.repositories.profile_repository import ProfileRepository
|
|
|
|
class ProfileService:
|
|
def __init__(self, repo: ProfileRepository):
|
|
self.repo = repo
|
|
|
|
def get_by_user(self, user_id: UUID):
|
|
return self.repo.get_by_user(user_id)
|
|
|
|
def create(self, user_id: UUID, data: ProfileCreate):
|
|
return self.repo.create(user_id, data)
|
|
PY
|
|
|
|
echo "[profiles] rebuilding..."
|
|
docker compose build profiles
|
|
docker compose restart profiles
|
|
BASH
|
|
|
|
chmod +x scripts/patch_profiles_repo_service.sh
|
|
./scripts/patch_profiles_repo_service.sh
|