fix(ci): fix alembic DB import and golangci-lint version
- Move Base to app/models/base.py so alembic env.py can import it without triggering engine creation (which connects to hardcoded DB) - Update all 13 models to import Base from app.models.base - Pin golangci-lint to latest (supports Go 1.25) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
@@ -47,6 +47,7 @@ jobs:
|
||||
- name: golangci-lint
|
||||
uses: golangci/golangci-lint-action@v6
|
||||
with:
|
||||
version: latest
|
||||
working-directory: poller
|
||||
|
||||
frontend-lint:
|
||||
|
||||
@@ -9,8 +9,9 @@ from sqlalchemy import pool
|
||||
from sqlalchemy.engine import Connection
|
||||
from sqlalchemy.ext.asyncio import async_engine_from_config
|
||||
|
||||
# Import all models to register them with Base.metadata
|
||||
from app.database import Base
|
||||
# Import Base without triggering engine creation (app.database creates engines
|
||||
# at module level, which would fail if DATABASE_URL points to a non-existent DB).
|
||||
from app.models.base import Base
|
||||
import app.models.tenant # noqa: F401
|
||||
import app.models.user # noqa: F401
|
||||
import app.models.device # noqa: F401
|
||||
|
||||
@@ -10,15 +10,8 @@ from sqlalchemy.ext.asyncio import (
|
||||
async_sessionmaker,
|
||||
create_async_engine,
|
||||
)
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
from app.config import settings
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
"""Base class for all SQLAlchemy ORM models."""
|
||||
|
||||
pass
|
||||
from app.models.base import Base # noqa: F401 — re-exported for backwards compat
|
||||
|
||||
|
||||
# Primary engine using postgres superuser (for migrations/admin)
|
||||
|
||||
@@ -16,7 +16,7 @@ from sqlalchemy import (
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class AlertRule(Base):
|
||||
|
||||
@@ -8,7 +8,7 @@ from sqlalchemy import DateTime, ForeignKey, Text, func
|
||||
from sqlalchemy.dialects.postgresql import JSONB, UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class ApiKey(Base):
|
||||
|
||||
@@ -8,7 +8,7 @@ from sqlalchemy import DateTime, ForeignKey, String, Text, func
|
||||
from sqlalchemy.dialects.postgresql import JSONB, UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class AuditLog(Base):
|
||||
|
||||
9
backend/app/models/base.py
Normal file
9
backend/app/models/base.py
Normal file
@@ -0,0 +1,9 @@
|
||||
"""SQLAlchemy declarative base — importable without triggering engine creation."""
|
||||
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
"""Base class for all SQLAlchemy ORM models."""
|
||||
|
||||
pass
|
||||
@@ -12,7 +12,7 @@ from sqlalchemy import DateTime, ForeignKey, LargeBinary, String, Text, func
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class CertificateAuthority(Base):
|
||||
|
||||
@@ -18,7 +18,7 @@ from sqlalchemy import (
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class ConfigBackupRun(Base):
|
||||
|
||||
@@ -14,7 +14,7 @@ from sqlalchemy import (
|
||||
from sqlalchemy.dialects.postgresql import JSON, UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class ConfigTemplate(Base):
|
||||
|
||||
@@ -18,7 +18,7 @@ from sqlalchemy import (
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class DeviceStatus(str, Enum):
|
||||
|
||||
@@ -15,7 +15,7 @@ from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
from sqlalchemy import ForeignKey
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class FirmwareVersion(Base):
|
||||
|
||||
@@ -7,7 +7,7 @@ from sqlalchemy import DateTime, ForeignKey, Integer, LargeBinary, Text, func
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class UserKeySet(Base):
|
||||
|
||||
@@ -11,7 +11,7 @@ from sqlalchemy import Boolean, DateTime, ForeignKey, Text, VARCHAR, func
|
||||
from sqlalchemy.dialects.postgresql import JSONB, UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class MaintenanceWindow(Base):
|
||||
|
||||
@@ -7,7 +7,7 @@ from sqlalchemy import DateTime, LargeBinary, Integer, String, Text, func
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class Tenant(Base):
|
||||
|
||||
@@ -8,7 +8,7 @@ from sqlalchemy import Boolean, DateTime, ForeignKey, LargeBinary, SmallInteger,
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class UserRole(str, Enum):
|
||||
|
||||
@@ -8,7 +8,7 @@ from sqlalchemy import Boolean, DateTime, ForeignKey, Integer, LargeBinary, Stri
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
from app.models.base import Base
|
||||
|
||||
|
||||
class VpnConfig(Base):
|
||||
|
||||
Reference in New Issue
Block a user