Projekt

Obecné

Profil

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