You've already forked Promocode-API
mirror of
https://github.com/devitq/Promocode-API.git
synced 2026-05-23 20:17:12 +00:00
feat: added patch promocode, promocode stat, user signup/signin, user profile get/patch, user feed
also bug fixes and improvements
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import uuid
|
||||
from typing import ClassVar
|
||||
|
||||
from ninja import ModelSchema, Schema
|
||||
from pydantic import Field
|
||||
|
||||
from apps.user.models import User
|
||||
|
||||
|
||||
class UserTarget(ModelSchema):
|
||||
class Meta:
|
||||
model = User
|
||||
fields: ClassVar[list[str]] = [
|
||||
User.age.field.name,
|
||||
User.country.field.name,
|
||||
]
|
||||
|
||||
|
||||
class UserSignUpIn(ModelSchema):
|
||||
other: UserTarget
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields: ClassVar[list[str]] = [
|
||||
User.name.field.name,
|
||||
User.surname.field.name,
|
||||
User.email.field.name,
|
||||
User.avatar_url.field.name,
|
||||
User.password.field.name,
|
||||
]
|
||||
|
||||
|
||||
class UserSignUpOut(Schema):
|
||||
token: str
|
||||
|
||||
|
||||
class UserSignInIn(ModelSchema):
|
||||
class Meta:
|
||||
model = User
|
||||
fields: ClassVar[list[str]] = [
|
||||
User.email.field.name,
|
||||
User.password.field.name,
|
||||
]
|
||||
|
||||
|
||||
class UserSignInOut(Schema):
|
||||
token: str
|
||||
|
||||
|
||||
class ViewUserOut(ModelSchema):
|
||||
other: UserTarget
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields: ClassVar[list[str]] = [
|
||||
User.name.field.name,
|
||||
User.surname.field.name,
|
||||
User.email.field.name,
|
||||
User.avatar_url.field.name,
|
||||
]
|
||||
|
||||
|
||||
class PatchUserIn(Schema):
|
||||
name: str | None = None
|
||||
surname: str | None = None
|
||||
avatar_url: str | None = None
|
||||
password: str | None = None
|
||||
|
||||
|
||||
class PromocodeFeedFilters(Schema):
|
||||
limit: int = Field(10, gt=0, description="Limit must be greater than 0")
|
||||
offset: int = Field(
|
||||
0, ge=0, description="Offset must be greater than or equal to 0"
|
||||
)
|
||||
category: str | None = None
|
||||
active: bool | None = None
|
||||
|
||||
|
||||
class PromocodeViewOut(Schema):
|
||||
promo_id: uuid.UUID
|
||||
company_id: uuid.UUID
|
||||
company_name: str
|
||||
description: str
|
||||
image_url: str | None
|
||||
active: bool
|
||||
is_activated_by_user: bool
|
||||
is_liked_by_user: bool
|
||||
like_count: int
|
||||
comment_count: int
|
||||
Reference in New Issue
Block a user