Skip to content

Instantly share code, notes, and snippets.

@codemation
Created November 15, 2021 12:09
Show Gist options
  • Save codemation/b4f99f08b7b3d57172a76691df0bfebc to your computer and use it in GitHub Desktop.
Save codemation/b4f99f08b7b3d57172a76691df0bfebc to your computer and use it in GitHub Desktop.
pydbantic_model_8.py
# models.py
import uuid
from datetime import datetime
from typing import Optional, Union
from pydantic import BaseModel
from pydbantic import DataBaseModel, PrimaryKey, Default
def time_now_str():
return datetime.now().isoformat()
def stringify_uuid():
return str(uuid.uuid4())
class Coordinates(BaseModel):
latitude: float = 52.299387
longitude: float = 4.976949
class Department(DataBaseModel):
name: str = PrimaryKey()
company: str
location: Optional[Coordinates] = Coordinates()
class Positions(DataBaseModel):
name: str = PrimaryKey()
position_department: Department = Department(name='HR', company='FOOBAR')
class Employee(DataBaseModel):
id: str = PrimaryKey(default=stringify_uuid)
salary: float
is_employed: bool
date_employed: str = Default(default=time_now_str)
position: Union[Positions, None] = Positions(name='Manager')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment