PySimpleSocial/orm/users.py

49 lines
1.3 KiB
Python

"""
User relation
"""
from piccolo.utils.pydantic import create_pydantic_model
from piccolo.table import Table
from piccolo.columns import (
ForeignKey,
Varchar,
BigSerial,
UUID,
Date,
OnDelete,
OnUpdate,
Boolean,
Email,
Bytea,
)
from piccolo.columns.defaults.date import DateNow
from .media import Media
class User(Table, tablename="users"):
internal_id = BigSerial(null=False, secret=True)
public_id = UUID(primary_key=True)
first_name = Varchar(length=64, null=False)
last_name = Varchar(length=64, null=True)
email_address = Email(secret=True)
username = Varchar(length=32, null=False, unique=True)
password_hash = Bytea(null=False, secret=True)
profile_picture = ForeignKey(
references=Media,
on_delete=OnDelete.set_null,
on_update=OnUpdate.cascade,
null=True,
default=None,
)
creation_date = Date(secret=True, default=DateNow())
bio = Varchar(length=4096, null=True, default=None)
restricted = Boolean(default=False, null=False)
email_verified = Boolean(default=False, null=False, secret=True)
verified_account = Boolean(default=False, null=False)
deleted = Boolean(default=False, null=False)
locale = Varchar(length=12, default="en_US", null=False, secret=True)
UserModel = create_pydantic_model(User)