|
| 1 | +from sqlalchemy import Integer, String, Null, BigInteger, Index |
| 2 | +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column |
| 3 | + |
| 4 | + |
| 5 | +class Base(DeclarativeBase): |
| 6 | + pass |
| 7 | + |
| 8 | + |
| 9 | +class Services(Base): |
| 10 | + __tablename__ = "services" |
| 11 | + |
| 12 | + id: Mapped[int] = mapped_column(Integer, primary_key=True) |
| 13 | + service: Mapped[str] = mapped_column(String(30), default=Null) |
| 14 | + pattern: Mapped[str] = mapped_column(String(128), default=Null) |
| 15 | + |
| 16 | + def __repr__(self) -> str: |
| 17 | + return f"Services(id={self.id!r}, service={self.service!r}, pattern={self.pattern!r})" |
| 18 | + |
| 19 | + def _asdict(self): |
| 20 | + return { |
| 21 | + "id": self.id, |
| 22 | + "service": self.service, |
| 23 | + "pattern": self.pattern, |
| 24 | + } |
| 25 | + |
| 26 | + |
| 27 | +class Nodes(Base): |
| 28 | + __tablename__ = "nodes" |
| 29 | + |
| 30 | + id: Mapped[int] = mapped_column(Integer, primary_key=True) |
| 31 | + service: Mapped[int] = mapped_column(Integer, nullable=False) |
| 32 | + node: Mapped[str] = mapped_column(String(64), nullable=False) |
| 33 | + available: Mapped[int] = mapped_column(Integer, nullable=False) |
| 34 | + current_load: Mapped[int] = mapped_column(Integer, nullable=False) |
| 35 | + capacity: Mapped[int] = mapped_column(Integer, nullable=False) |
| 36 | + downed: Mapped[int] = mapped_column(Integer, nullable=False) |
| 37 | + backoff: Mapped[int] = mapped_column(Integer, nullable=False) |
| 38 | + |
| 39 | + unique_idx = Index(service, node) |
| 40 | + |
| 41 | + def __repr__(self) -> str: |
| 42 | + return f"Nodes(id={self.id!r}, service={self.service!r}, node={self.node!r}, available={self.available!r}, current_load={self.current_load!r}, capacity={self.capacity!r}, downed={self.downed!r}, backoff={self.backoff!r})" |
| 43 | + |
| 44 | + def _asdict(self): |
| 45 | + return { |
| 46 | + "id": self.id, |
| 47 | + "service": self.service, |
| 48 | + "node": self.node, |
| 49 | + "available": self.available, |
| 50 | + "current_load": self.current_load, |
| 51 | + "capacity": self.capacity, |
| 52 | + "downed": self.downed, |
| 53 | + "backoff": self.backoff, |
| 54 | + } |
| 55 | + |
| 56 | + |
| 57 | +class Users(Base): |
| 58 | + __tablename__ = "users" |
| 59 | + |
| 60 | + uid: Mapped[int] = mapped_column(Integer, primary_key=True) |
| 61 | + service: Mapped[int] = mapped_column(Integer, nullable=False) |
| 62 | + email: Mapped[str] = mapped_column(String(255), nullable=False) |
| 63 | + generation: Mapped[int] = mapped_column(BigInteger, nullable=False) |
| 64 | + client_state: Mapped[str] = mapped_column(String(32), nullable=False) |
| 65 | + created_at: Mapped[int] = mapped_column(BigInteger, nullable=False) |
| 66 | + replaced_at: Mapped[int] = mapped_column(BigInteger, default=Null) |
| 67 | + nodeid: Mapped[int] = mapped_column(BigInteger, nullable=False) |
| 68 | + keys_changed_at: Mapped[int] = mapped_column(BigInteger, default=Null) |
| 69 | + |
| 70 | + lookup_idx = Index(email, service, created_at) |
| 71 | + replaced_at_idx = Index(service, replaced_at) |
| 72 | + node_idx = Index(nodeid) |
| 73 | + |
| 74 | + def __repr__(self) -> str: |
| 75 | + return f"Users(uid={self.uid!r}, service={self.service!r}, email={self.email!r}, generation={self.generation!r}, client_state={self.client_state!r}, created_at={self.created_at!r}, replaced_at={self.replaced_at!r}, nodeid={self.nodeid!r}, keys_changed_at={self.keys_changed_at!r})" |
| 76 | + |
| 77 | + def _asdict(self): |
| 78 | + return { |
| 79 | + "uid": self.uid, |
| 80 | + "service": self.service, |
| 81 | + "email": self.email, |
| 82 | + "generation": self.generation, |
| 83 | + "client_state": self.client_state, |
| 84 | + "created_at": self.created_at, |
| 85 | + "replaced_at": self.replaced_at, |
| 86 | + "nodeid": self.nodeid, |
| 87 | + "keys_changed_at": self.keys_changed_at, |
| 88 | + } |
0 commit comments