49 lines
1.3 KiB
Python
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)
|