modelfiles.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ################################################################################
  2. # DEPRECATION NOTICE #
  3. # #
  4. # This file has been deprecated since version 0.2.0. #
  5. # #
  6. ################################################################################
  7. from pydantic import BaseModel
  8. from peewee import *
  9. from playhouse.shortcuts import model_to_dict
  10. from typing import List, Union, Optional
  11. import time
  12. from utils.utils import decode_token
  13. from utils.misc import get_gravatar_url
  14. from apps.web.internal.db import DB
  15. import json
  16. ####################
  17. # Modelfile DB Schema
  18. ####################
  19. class Modelfile(Model):
  20. tag_name = CharField(unique=True)
  21. user_id = CharField()
  22. modelfile = TextField()
  23. timestamp = BigIntegerField()
  24. class Meta:
  25. database = DB
  26. class ModelfileModel(BaseModel):
  27. tag_name: str
  28. user_id: str
  29. modelfile: str
  30. timestamp: int # timestamp in epoch
  31. ####################
  32. # Forms
  33. ####################
  34. class ModelfileForm(BaseModel):
  35. modelfile: dict
  36. class ModelfileTagNameForm(BaseModel):
  37. tag_name: str
  38. class ModelfileUpdateForm(ModelfileForm, ModelfileTagNameForm):
  39. pass
  40. class ModelfileResponse(BaseModel):
  41. tag_name: str
  42. user_id: str
  43. modelfile: dict
  44. timestamp: int # timestamp in epoch
  45. class ModelfilesTable:
  46. def __init__(self, db):
  47. self.db = db
  48. self.db.create_tables([Modelfile])
  49. def insert_new_modelfile(
  50. self, user_id: str, form_data: ModelfileForm
  51. ) -> Optional[ModelfileModel]:
  52. if "tagName" in form_data.modelfile:
  53. modelfile = ModelfileModel(
  54. **{
  55. "user_id": user_id,
  56. "tag_name": form_data.modelfile["tagName"],
  57. "modelfile": json.dumps(form_data.modelfile),
  58. "timestamp": int(time.time()),
  59. }
  60. )
  61. try:
  62. result = Modelfile.create(**modelfile.model_dump())
  63. if result:
  64. return modelfile
  65. else:
  66. return None
  67. except:
  68. return None
  69. else:
  70. return None
  71. def get_modelfile_by_tag_name(self, tag_name: str) -> Optional[ModelfileModel]:
  72. try:
  73. modelfile = Modelfile.get(Modelfile.tag_name == tag_name)
  74. return ModelfileModel(**model_to_dict(modelfile))
  75. except:
  76. return None
  77. def get_modelfiles(self, skip: int = 0, limit: int = 50) -> List[ModelfileResponse]:
  78. return [
  79. ModelfileResponse(
  80. **{
  81. **model_to_dict(modelfile),
  82. "modelfile": json.loads(modelfile.modelfile),
  83. }
  84. )
  85. for modelfile in Modelfile.select()
  86. # .limit(limit).offset(skip)
  87. ]
  88. def update_modelfile_by_tag_name(
  89. self, tag_name: str, modelfile: dict
  90. ) -> Optional[ModelfileModel]:
  91. try:
  92. query = Modelfile.update(
  93. modelfile=json.dumps(modelfile),
  94. timestamp=int(time.time()),
  95. ).where(Modelfile.tag_name == tag_name)
  96. query.execute()
  97. modelfile = Modelfile.get(Modelfile.tag_name == tag_name)
  98. return ModelfileModel(**model_to_dict(modelfile))
  99. except:
  100. return None
  101. def delete_modelfile_by_tag_name(self, tag_name: str) -> bool:
  102. try:
  103. query = Modelfile.delete().where((Modelfile.tag_name == tag_name))
  104. query.execute() # Remove the rows, return number of rows removed.
  105. return True
  106. except:
  107. return False
  108. Modelfiles = ModelfilesTable(DB)