1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
from pathlib import Path
from peewee import SqliteDatabase
from cozy.db.storage import Storage as StorageModel
class InvalidPath(Exception):
pass
class Storage:
def __init__(self, db: SqliteDatabase, db_id: int):
self._db: SqliteDatabase = db
self.id: int = db_id
self._get_db_object()
@staticmethod
def new(db: SqliteDatabase, path: str):
db_obj = StorageModel.create(path=path)
return Storage(db, db_obj.id)
def _get_db_object(self):
self._db_object: StorageModel = StorageModel.get(self.id)
@property
def db_object(self):
return self._db_object
@property
def path(self):
return self._db_object.path
@path.setter
def path(self, path: str):
if not Path(path).is_absolute():
raise InvalidPath
self._db_object.path = path
self._db_object.save(
@property
def location_type(self):
return self._db_object.location_type
@location_type.setter
def location_type(self, new_location_type: int):
self._db_object.location_type = new_location_type
self._db_object.save(
@property
def default(self):
return self._db_object.default
@default.setter
def default(self, new_default: bool):
self._db_object.default = new_default
self._db_object.save(
@property
def external(self):
return self._db_object.external
@external.setter
def external(self, new_external: bool):
self._db_object.external = new_external
self._db_object.save(
def delete(self):
self._db_object.delete_instance(recursive=True, delete_nullable=False)
|