""" 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) UserModel = create_pydantic_model(User)