fediseer/fediseer/classes/user.py

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")