Files
SuperMega/app/storage.py
T
2024-03-23 12:16:20 +00:00

50 lines
1.4 KiB
Python

import pickle
import os
import yaml
from typing import List, Tuple
from model.settings import Settings
class Project():
def __init__(self, name: str, settings: Settings):
self.name = name
self.settings: Settings = settings
class Storage():
def __init__(self):
self.data: List[Project] = self.get_data()
def get_project(self, name: str) -> Project:
for project in self.data:
if project.name == name:
return project
return None
def add_project(self, project: Project):
# data
self.data.append(project)
self.save_data()
# directories and contents
os.makedirs("app/projects/{}".format(project.name), exist_ok=True)
with open("app/projects/{}/settings.yaml".format(project.name), "w") as f:
f.write(yaml.dump(project.settings))
def get_data(self) -> List[Project]:
# if file does not exist, create an empty one
if not os.path.exists("app/data.pickle"):
with open("app/data.pickle", "wb") as f:
f.write(pickle.dumps([]))
with open("app/data.pickle", "rb") as f:
data_raw = f.read()
data: List[Project] = pickle.loads(data_raw)
return data
def save_data(self):
with open("app/data.pickle", "wb") as f:
f.write(pickle.dumps(self.data))
storage = Storage()