Database dataclass is now working

This commit is contained in:
2025-09-25 20:05:51 +07:00
parent 3a88bdad3a
commit 124065d2ac
4 changed files with 273 additions and 104 deletions

View File

@@ -1,10 +1,11 @@
from dataclasses import dataclass
from typing import Optional
from .datamodel_base import ForwardingBase
from modules.shared.DataClassDatabase import DataClassDatabase
@dataclass
class Creator(ForwardingBase):
class Creator(DataClassDatabase):
username: Optional[str] = None
modelCount: Optional[int] = None
link: Optional[str] = None
@@ -14,9 +15,11 @@ class Creator(ForwardingBase):
super().__post_init__()
self._forwarding = {}
self._key_field = 'username'
self._table_name = 'creators'
self._standalone_entity = True
@dataclass
class Tag(ForwardingBase):
class Tag(DataClassDatabase):
name: Optional[str] = None
link: Optional[str] = None
@@ -24,99 +27,102 @@ class Tag(ForwardingBase):
super().__post_init__()
self._forwarding = {}
self._key_field = 'name'
@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 = {}
self._table_name = 'tags'
self._standalone_entity = True
@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'
# @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'
#