diff --git a/src/sakia/data/entities/__init__.py b/src/sakia/data/entities/__init__.py index 35265ddcc06ccd0f293861bef477d56c8408b113..cc26e0512cac040a8f9ea0d2f2c156218c094504 100644 --- a/src/sakia/data/entities/__init__.py +++ b/src/sakia/data/entities/__init__.py @@ -4,3 +4,4 @@ from .certification import Certification from .transaction import Transaction from .node import Node from .connection import Connection +from .user_parameters import UserParameters diff --git a/src/sakia/data/entities/user_parameters.py b/src/sakia/data/entities/user_parameters.py new file mode 100644 index 0000000000000000000000000000000000000000..54b543b8d97c56df7c099227582178224ee4b3b5 --- /dev/null +++ b/src/sakia/data/entities/user_parameters.py @@ -0,0 +1,20 @@ +import attr + + +@attr.s() +class UserParameters: + """ + The user parameters entity + """ + lang = attr.ib(convert=str, default="en_US") + referential = attr.ib(convert=int, default=0) + expert_mode = attr.ib(convert=bool, default=False) + digits_after_comma = attr.ib(convert=int, default=2) + maximized = attr.ib(convert=bool, default=False) + notifications = attr.ib(convert=bool, default=True) + enable_proxy = attr.ib(convert=bool, default=True) + proxy_type = attr.ib(convert=int, default=0) + proxy_address = attr.ib(convert=str, default="") + proxy_port = attr.ib(convert=int, default=8080) + international_system_of_units = attr.ib(convert=int, default=False) + forgetfulness = attr.ib(convert=bool, default=True) diff --git a/src/sakia/data/files/__init__.py b/src/sakia/data/files/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..39fa10f9997e3520fca3e929607e0a9ed76a5159 --- /dev/null +++ b/src/sakia/data/files/__init__.py @@ -0,0 +1 @@ +from .user_parameters import UserParametersFile \ No newline at end of file diff --git a/src/sakia/data/files/user_parameters.py b/src/sakia/data/files/user_parameters.py new file mode 100644 index 0000000000000000000000000000000000000000..119fee4da3258701cde9abe097048b79928fbc79 --- /dev/null +++ b/src/sakia/data/files/user_parameters.py @@ -0,0 +1,28 @@ +import attr +import json +from ..entities import UserParameters + + +@attr.s(frozen=True) +class UserParametersFile: + """ + The repository for UserParameters + """ + _file = attr.ib() + + def save(self, user_parameters): + """ + Commit a user_parameters to the database + :param sakia.data.entities.UserParameters user_parameters: the user_parameters to commit + """ + with open(self._file, 'w') as outfile: + json.dump(attr.asdict(user_parameters), outfile, indent=4) + + def load(self): + """ + Update an existing user_parameters in the database + :param sakia.data.entities.UserParameters user_parameters: the user_parameters to update + """ + with open(self._file, 'r') as json_data: + user_parameters = UserParameters(**json.load(json_data)) + return user_parameters \ No newline at end of file diff --git a/src/sakia/data/repositories/meta.sql b/src/sakia/data/repositories/meta.sql index 693aeea8424a112f5a7cdae3d78aaf122d6eb7b8..4d1cbb1ee1090a4b5a23fa3f33a08a9ae7ef7656 100644 --- a/src/sakia/data/repositories/meta.sql +++ b/src/sakia/data/repositories/meta.sql @@ -81,7 +81,7 @@ CREATE TABLE IF NOT EXISTS nodes( pubkey VARCHAR(50), endpoints TEXT, peer_buid VARCHAR(100), - uid VARCHAR(50), + uid VARCHAR(50), current_buid VARCHAR(100), previous_buid VARCHAR(100), state INT, @@ -93,10 +93,12 @@ CREATE TABLE IF NOT EXISTS nodes( PRIMARY KEY (currency, pubkey) ); --- Keys TABLE +-- Cnnections TABLE CREATE TABLE IF NOT EXISTS connections( currency VARCHAR(30), pubkey VARCHAR(50), salt VARCHAR(50), PRIMARY KEY (currency, pubkey) ); + + diff --git a/src/sakia/tests/unit/data/test_user_parameters_file.py b/src/sakia/tests/unit/data/test_user_parameters_file.py new file mode 100644 index 0000000000000000000000000000000000000000..c4fe4980b9229335148fafd1208e86d8c97a8aa8 --- /dev/null +++ b/src/sakia/tests/unit/data/test_user_parameters_file.py @@ -0,0 +1,16 @@ +from sakia.data.entities import UserParameters +from sakia.data.files import UserParametersFile +import tempfile +import unittest +import os + + +class TestUserParametersFile(unittest.TestCase): + def test_init_save_load(self): + file = os.path.join(tempfile.mkdtemp(), "params.json") + user_parameters = UserParameters() + user_parameters_file = UserParametersFile(file) + user_parameters.proxy_address = "test.fr" + user_parameters_file.save(user_parameters) + user_parameters_2 = user_parameters_file.load() + self.assertEqual(user_parameters, user_parameters_2)