46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from typing import List
|
|
from pydantic import BaseModel, Field, TypeAdapter
|
|
from uuid import UUID, uuid4
|
|
import json
|
|
|
|
|
|
class Record(BaseModel):
|
|
id: UUID = Field(default_factory=uuid4)
|
|
name: str | None = ''
|
|
description:str | None = ''
|
|
img_path: str | None = ''
|
|
|
|
|
|
class DB:
|
|
|
|
records: List[Record] = []
|
|
|
|
path = ''
|
|
|
|
def __init__(self, path=''):
|
|
if path != '':
|
|
with open(path, 'r') as file:
|
|
js_data = json.load(file)
|
|
tmp = []
|
|
for item in js_data:
|
|
tmp.append(json.loads(item))
|
|
js_data = tmp
|
|
self.records = [Record(**model_data) for model_data in js_data]
|
|
self.path = path
|
|
|
|
|
|
def add_record(self, name='', description='', img_path=''):
|
|
new_rec = Record(name=name, description=description, img_path=img_path)
|
|
self.records.append(new_rec)
|
|
with open(self.path, 'w') as file:
|
|
model_list_json = [record.model_dump_json() for record in self.records]
|
|
json.dump(model_list_json, file)
|
|
|
|
def edit_record(self, id):
|
|
pass
|
|
|
|
|
|
def delete_record(self, id):
|
|
for i in range(len(self.records)):
|
|
if self.records[i].id == id:
|
|
self.records.pop(i) |