feat: ability to add and view blogs for a user
This commit is contained in:
+48
-8
@@ -1,17 +1,56 @@
|
||||
from pydantic import BaseModel, EmailStr
|
||||
from typing import Optional
|
||||
from pydantic import AwareDatetime, BaseModel, EmailStr
|
||||
|
||||
|
||||
# DB Schemas
|
||||
|
||||
|
||||
class ItemBase(BaseModel):
|
||||
name: str
|
||||
description: str | None = None
|
||||
class BlogBase(BaseModel):
|
||||
title: str
|
||||
author_id: int
|
||||
description: Optional[str] = None
|
||||
body: str
|
||||
created_at: AwareDatetime
|
||||
updated_at: AwareDatetime
|
||||
published_at: AwareDatetime
|
||||
|
||||
# Document meta
|
||||
word_count: Optional[int] = None
|
||||
version: Optional[int] = None
|
||||
read_time: Optional[int] = None
|
||||
language: Optional[str] = None
|
||||
tags: Optional[list[str]] = None
|
||||
|
||||
|
||||
class Item(ItemBase):
|
||||
class BlogCreate(BlogBase):
|
||||
"""All fields required to create a new blog post."""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class BlogUpdate(BaseModel):
|
||||
"""All fields are optional for partial updates."""
|
||||
|
||||
title: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
body: Optional[str] = None
|
||||
created_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
published_at: Optional[str] = None
|
||||
|
||||
word_count: Optional[int] = None
|
||||
version: Optional[int] = None
|
||||
read_time: Optional[int] = None
|
||||
language: Optional[str] = None
|
||||
tags: Optional[list[str]] = None
|
||||
|
||||
view_count: Optional[int] = None
|
||||
like_count: Optional[int] = None
|
||||
|
||||
|
||||
class Blog(BlogBase):
|
||||
"""What’s returned in responses."""
|
||||
|
||||
id: int
|
||||
view_count: int
|
||||
like_count: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -41,6 +80,7 @@ class UserOut(UserBase):
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
user_id: int
|
||||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user