36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
import uuid
|
|
import os
|
|
|
|
import dateutil.relativedelta
|
|
from datetime import datetime
|
|
from sqlalchemy import Enum, UniqueConstraint
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
|
|
from loguru import logger
|
|
from fediseer.flask import db, SQLITE_MODE
|
|
|
|
uuid_column_type = lambda: UUID(as_uuid=True) if not SQLITE_MODE else db.String(36)
|
|
|
|
|
|
class Claim(db.Model):
|
|
__tablename__ = "claims"
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
|
|
user = db.relationship("User", back_populates="claims")
|
|
instance_id = db.Column(db.Integer, db.ForeignKey("instances.id", ondelete="CASCADE"), nullable=False)
|
|
instance = db.relationship("Instance", back_populates="admins")
|
|
created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
|
|
|
|
|
class User(db.Model):
|
|
__tablename__ = "users"
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
account = db.Column(db.String(255), unique=True, nullable=False, index=True)
|
|
username = db.Column(db.String(255), unique=False, nullable=False)
|
|
api_key = db.Column(db.String(100), unique=True, nullable=False, index=True)
|
|
created = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
|
updated = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
|
|
|
|
claims = db.relationship("Claim", back_populates="user", cascade="all, delete-orphan")
|