from __future__ import annotations import datetime, hashlib, logging, os, pytz, redis, secrets from typing import Dict, List, Optional, Set, Union from pydantic import BaseModel, EmailStr, Field, PrivateAttr, ValidationError, validator from .common_field_schema import base_fields class Core_Object_Base(BaseModel): app.logger.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL app.logger.debug(locals()) obj_type: str obj_id_random: str # alias this one based on obj_type? obj_id_rand: str # alias this one based on obj_type? obj_id: int # alias this one? obj_name: Optional[str] id_random: str # alias this one? id: int # alias this one? account_id_random: Optional[str] account_id: Optional[str] notes: Optional[str] created_on: Optional[datetime.datetime] = None updated_on: Optional[datetime.datetime] = None _processed_at: datetime.datetime = PrivateAttr(default_factory=datetime.datetime.now) class Example_Object_Base(Core_Object_Base): # Based on Core_Object_Base title: Optional[str] = None description: Optional[str] = None password_set_on: Optional[datetime.datetime] = None archive_on: Optional[datetime.datetime] = None logged_in_on: Optional[datetime.datetime] = None last_activity_on: Optional[datetime.datetime] = None other_random_fields: dict list_of_: Optional[dict] = {} # Create, Read/Get, Update, Delete # CRUD or CGUD # def create_object(object_data): # return False # True, False, or None or object_data # def get_object(object_id): # return object_data # False or None # def update_object(object_id, object_data): # return False # True, False, or None or object_data # def delete_object(object_id): # return False # True, False, or None or object_data