Projekt

Obecné

Profil

Stáhnout (4.19 KB) Statistiky
| Větev: | Tag: | Revize:
1 9d3eded8 David Friesecký
from sqlite3 import Connection, Cursor, Error
2 d6ccc8ca David Friesecký
from typing import List
3 e9e55282 David Friesecký
4 1d2add74 Jan Pašek
from injector import inject
5
6 181e1196 Jan Pašek
from src.model.private_key import PrivateKey
7 9d3eded8 David Friesecký
from src.constants import *
8 e9e55282 David Friesecký
9 25053504 David Friesecký
10 9d3eded8 David Friesecký
class PrivateKeyRepository:
11 a0602bad David Friesecký
12 1d2add74 Jan Pašek
    @inject
13
    def __init__(self, connection: Connection):
14 9d3eded8 David Friesecký
        """
15
        Constructor of the PrivateKeyRepository object
16 a0602bad David Friesecký
17 9d3eded8 David Friesecký
        :param connection: Instance of the Connection object
18
        :param cursor: Instance of the Cursor object
19 a0602bad David Friesecký
        """
20
21 9d3eded8 David Friesecký
        self.connection = connection
22 1d2add74 Jan Pašek
        self.cursor = connection.cursor()
23 e9e55282 David Friesecký
24 805077f5 David Friesecký
    def create(self, private_key: PrivateKey):
25 a0602bad David Friesecký
        """
26 9d3eded8 David Friesecký
        Creates a private key.
27 a0602bad David Friesecký
28 9d3eded8 David Friesecký
        :param private_key: Instance of the PrivateKey object
29 a0602bad David Friesecký
30 9d3eded8 David Friesecký
        :return: the result of whether the creation was successful
31 a0602bad David Friesecký
        """
32
33 9d3eded8 David Friesecký
        try:
34
            sql = (f"INSERT INTO {TAB_PRIVATE_KEYS} "
35
                   f"({COL_PRIVATE_KEY},"
36
                   f"{COL_PASSWORD}) "
37
                   f"VALUES(?,?)")
38
            values = [private_key.private_key,
39
                      private_key.password]
40
            self.cursor.execute(sql, values)
41 805077f5 David Friesecký
            last_id = self.cursor.lastrowid
42 9d3eded8 David Friesecký
            self.connection.commit()
43
        except Error as e:
44
            print(e)
45 805077f5 David Friesecký
            return None
46 e9e55282 David Friesecký
47 805077f5 David Friesecký
        return last_id
48 e9e55282 David Friesecký
49 9d3eded8 David Friesecký
    def read(self, private_key_id: int):
50
        """
51
        Reads (selects) a private key.
52 e9e55282 David Friesecký
53 9d3eded8 David Friesecký
        :param private_key_id: ID of specific private key
54 e9e55282 David Friesecký
55 9d3eded8 David Friesecký
        :return: instance of the PrivateKey object
56
        """
57 e9e55282 David Friesecký
58 9d3eded8 David Friesecký
        try:
59
            sql = (f"SELECT * FROM {TAB_PRIVATE_KEYS} "
60
                   f"WHERE {COL_ID} = ?")
61
            values = [private_key_id]
62
            self.cursor.execute(sql, values)
63 f9711600 Stanislav Král
            private_key_row = self.cursor.fetchone()
64 e9e55282 David Friesecký
65 9d3eded8 David Friesecký
            private_key: PrivateKey = PrivateKey(private_key_row[0],
66
                                                 private_key_row[1],
67
                                                 private_key_row[2])
68
        except Error as e:
69
            print(e)
70
            return None
71 e9e55282 David Friesecký
72 805077f5 David Friesecký
        if len(private_key_row) > 0:
73
            return private_key
74
        else:
75
            return None
76 9d3eded8 David Friesecký
77 d6ccc8ca David Friesecký
    def read_all(self):
78
        """
79
        Reads (selects) all private keys.
80
81
        :return: list of private keys
82
        """
83
84
        try:
85
            sql = f"SELECT * FROM {TAB_PRIVATE_KEYS}"
86
            self.cursor.execute(sql)
87
            private_key_rows = self.cursor.fetchall()
88
89
            private_keys: List[PrivateKey] = []
90
            for private_key_row in private_key_rows:
91
                private_keys.append(PrivateKey(private_key_row[0],
92
                                               private_key_row[1],
93
                                               private_key_row[2]))
94
        except Error as e:
95
            print(e)
96
            return None
97
98
        if len(private_keys) > 0:
99
            return private_keys
100
        else:
101
            return None
102
103 9d3eded8 David Friesecký
    def update(self, private_key_id: int, private_key: PrivateKey) -> bool:
104 a0602bad David Friesecký
        """
105 9d3eded8 David Friesecký
        Updates a private key.
106 a0602bad David Friesecký
107
        :param private_key_id: ID of specific private key
108 9d3eded8 David Friesecký
        :param private_key: Instance of the PrivateKey object
109 a0602bad David Friesecký
110
        :return: the result of whether the updation was successful
111
        """
112
113 9d3eded8 David Friesecký
        try:
114
            sql = (f"UPDATE {TAB_PRIVATE_KEYS} "
115
                   f"SET {COL_PRIVATE_KEY} = ?, "
116
                   f"{COL_PASSWORD} = ? "
117
                   f"WHERE {COL_ID} = ?")
118
            values = [private_key.private_key,
119 805077f5 David Friesecký
                      private_key.password,
120
                      private_key_id]
121 9d3eded8 David Friesecký
            self.cursor.execute(sql, values)
122
            self.connection.commit()
123
        except Error as e:
124
            print(e)
125
            return False
126
127
        return True
128 e9e55282 David Friesecký
129
    def delete(self, private_key_id: int) -> bool:
130 a0602bad David Friesecký
        """
131
        Deletes a private key
132
133
        :param private_key_id: ID of specific private key
134
135
        :return: the result of whether the deletion was successful
136
        """
137
138 9d3eded8 David Friesecký
        try:
139
            sql = (f"DELETE FROM {TAB_PRIVATE_KEYS} "
140
                   f"WHERE {COL_ID} = ?")
141
            values = [private_key_id]
142
            self.cursor.execute(sql, values)
143
            self.connection.commit()
144
        except Error as e:
145
            print(e)
146
            return False
147
148 45744020 Stanislav Král
        return self.cursor.rowcount > 0