Files
vaiola/modules/civit/datamodel.py

129 lines
3.5 KiB
Python

from dataclasses import dataclass
from typing import Optional
from modules.shared.DataClassDatabase import DataClassDatabase
@dataclass
class Creator(DataClassDatabase):
username: Optional[str] = None
modelCount: Optional[int] = None
link: Optional[str] = None
image: Optional[str] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
self._key_field = 'username'
self._table_name = 'creators'
self._standalone_entity = True
@dataclass
class Tag(DataClassDatabase):
name: Optional[str] = None
link: Optional[str] = None
def __post_init__(self):
super().__post_init__()
self._forwarding = {}
self._key_field = 'name'
self._table_name = 'tags'
self._standalone_entity = True
# @dataclass
# class ModelVersionStats(ForwardingBase):
# downloadCount: Optional[int] = None
# ratingCount: Optional[int] = None
# rating: Optional[int] = None
# thumbsUpCount: Optional[int] = None
# thumbsDownCount: Optional[int] = None
#
# def __post_init__(self):
# super().__post_init__()
# self._forwarding = {}
#
#
#
# @dataclass
# class ModelVersion(ForwardingBase):
# id: Optional[int] = None
# index: Optional[int] = None
# name: Optional[str] = None
# baseModel: Optional[str] = None
# baseModelType: Optional[str] = None
# publishedAt: Optional[str] = None
# availability: Optional[str] = None
# nsfwLevel: Optional[int] = None
# description: Optional[str] = None
# trainedWords: Optional[list[str]] = None
# stats: Optional[ModelVersionStats] = None
# supportsGeneration: Optional[bool] = None
# downloadUrl: Optional[str] = None
# # FILES
# # IMAGES
#
#
# def __post_init__(self):
# super().__post_init__()
# self._forwarding = {
# 'stats': ModelVersionStats,
# }
# self._key_field = 'id'
#
#
#
#
# @dataclass
# class ModelStats(ForwardingBase):
# downloadCount: Optional[int] = None
# favoriteCount: Optional[int] = None
# thumbsUpCount: Optional[int] = None
# thumbsDownCount: Optional[int] = None
# commentCount: Optional[int] = None
# ratingCount: Optional[int] = None
# rating: Optional[int] = None
#
# def __post_init__(self):
# super().__post_init__()
# self._forwarding = {}
#
#
#
#
# @dataclass
# class Model(ForwardingBase):
# id: Optional[int] = None
# name: Optional[str] = None
# description: Optional[str] = None
# allowNoCredit: Optional[bool] = None
# allowCommercialUse: Optional[list] = None
# allowDerivatives: Optional[bool] = None
# allowDifferentLicense: Optional[bool] = None
# type: Optional[str] = None
# minor: Optional[bool] = None
# sfwOnly: Optional[bool] = None
# poi: Optional[bool] = None
# nsfw: Optional[bool] = None
# nsfwLevel: Optional[int] = None
# availability: Optional[str] = None
# cosmetic: Optional[str] = None
# supportsGeneration: Optional[bool] = None
# stats: Optional[ModelStats] = None
# creator: Optional[Creator] = None
# tags: Optional[list[Tag]] = None
# modelVersions: Optional[list[ModelVersion]] = None
#
#
# def __post_init__(self):
# super().__post_init__()
# self._forwarding = {
# 'stats': ModelStats,
# 'creator': Creator,
# 'tags': Tag,
# 'modelVersions': ModelVersion,
# }
# self._key_field = 'id'
#