Compare commits

...

2 Commits

Author SHA1 Message Date
c93f0ccda6 Standardised Bases across models
Some checks failed
CI / Lint & Format (push) Successful in 4s
CI / Tests (Pytest + Alembic + Postgres) (push) Failing after 4m45s
CI / Docker Build (push) Has been skipped
2025-09-23 19:38:54 +01:00
3eaed88074 Moved models to shared base 2025-09-23 19:27:08 +01:00
9 changed files with 27 additions and 19 deletions

View File

@@ -27,7 +27,7 @@ target_metadata = Base.metadata
# Get DB URL from env (prefer KEYWARDEN_ prefix, fall back to unprefixed, then a sane default for local)
DB_USER = os.getenv("KEYWARDEN_POSTGRES_USER", "postgres")
DB_PASS = os.getenv("KEYWARDEN_POSTGRES_PASSWORD", "postgres")
DB_HOST = os.getenv("KEYWARDEN_POSTGRES_HOST", "localhost")
DB_HOST = os.getenv("KEYWARDEN_POSTGRES_HOST", "keywarden-db")
DB_PORT = os.getenv("KEYWARDEN_POSTGRES_PORT", "5432")
DB_NAME = os.getenv("KEYWARDEN_POSTGRES_DB", "keywarden")

View File

@@ -1,9 +1,6 @@
from sqlalchemy.orm import declarative_base
from app.db.base_class import Base # noqa: F401
from app.models.access_request import AccessRequest # noqa: F401
from app.models.audit import AuditEvent # noqa: F401
from app.models.server import Server # noqa: F401
from app.models.sshkey import SSHKey # noqa: F401
from app.models.user import User # noqa: F401
Base = declarative_base()

13
app/db/base_class.py Normal file
View File

@@ -0,0 +1,13 @@
from sqlalchemy import MetaData
from sqlalchemy.orm import declarative_base
# Optional: naming convention keeps Alembic diffs stable
convention = {
"ix": "ix_%(column_0_label)s",
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s",
}
metadata = MetaData(naming_convention=convention)
Base = declarative_base(metadata=metadata)

View File

@@ -1,9 +1,9 @@
from datetime import datetime, timezone #noqa
from datetime import datetime
from sqlalchemy import DateTime, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column
from app.models.user import Base
from app.db.base_class import Base
class AccessRequest(Base):

View File

@@ -3,7 +3,7 @@ from datetime import datetime, timezone
from sqlalchemy import DateTime, String
from sqlalchemy.orm import Mapped, mapped_column
from app.models.user import Base
from app.db.base_class import Base
class AuditEvent(Base):

View File

@@ -1,7 +1,7 @@
from sqlalchemy import JSON, Boolean, Integer, String
from sqlalchemy.orm import Mapped, mapped_column
from app.models.user import Base
from app.db.base_class import Base
class Server(Base):

View File

@@ -1,9 +1,9 @@
from datetime import datetime, timezone # noqa: F401
from sqlalchemy import Boolean, DateTime, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship # noqa: F401
from sqlalchemy.orm import Mapped, mapped_column
from app.models.user import Base
from app.db.base_class import Base
class SSHKey(Base):

View File

@@ -1,10 +1,8 @@
from sqlalchemy import Boolean, String
from sqlalchemy.orm import Mapped, declarative_base, mapped_column
from sqlalchemy.orm import Mapped, mapped_column
# only for Alembic discovery, not used here
from app.db.session import engine # noqa: F401
from app.db.base_class import Base
Base = declarative_base()
class User(Base):
__tablename__ = "users"

View File

@@ -25,19 +25,19 @@ server {
}
location /docs {
proxy_pass http://api:8000;
proxy_pass http://keywarden-api:8000;
}
location /openapi.json {
proxy_pass http://api:8000;
proxy_pass http://keywarden-api:8000;
}
location /api/v1/ {
proxy_pass http://api:8000;
proxy_pass http://keywarden-api:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
}
location /healthz {
proxy_pass http://api:8000;
proxy_pass http://keywarden-api:8000;
}
}