-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemployee.py
98 lines (87 loc) · 2.91 KB
/
employee.py
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from dataclasses import dataclass, field
@dataclass
class Employee:
"""
Employee(id, first_name, middle_name, surname, acct_balance)
"""
id: int
first_name: str
middle_name: str
surname: str
acct_bal: int
_email: str = field(repr=False, init=False)
def __post_init__(self):
self.first_name = self.first_name.capitalize()
self.middle_name = self.middle_name.capitalize()
self.surname = self.surname.capitalize()
self._email = f'{self.first_name.lower()}.{self.middle_name.lower()}@email.com'
@property
def email(self):
return self._email
@email.setter
def email(self, other):
self._email = other
@staticmethod
def insert(self: object, cursor: object, *emps: "Employee"):
"""
Inserting the employees instance to the self database using the cursor
:param self:
:param cursor:
:param emps:
:return: None
"""
for emp in emps:
with self:
cursor.execute("""
INSERT INTO employee (
ID, First_name,
Middle_name, Surname,
Email, Balance
)
VALUES (
:id, :first,
:mid, :sur,
:email, :acct
)
""", {'first': emp.first_name,
'mid': emp.middle_name,
'sur': emp.surname,
'email': emp.email,
'acct': emp.acct_bal, 'id': emp.id}
)
@staticmethod
def update(self, cursor, surname: str, firstname: str):
"""
Updating the surname of the firstname rows using the cursor from the self database
:param self:
:param cursor:
:param surname:
:param firstname:
:return: None
"""
with self:
cursor.execute(
"""
UPDATE employee
SET surname = :to_
WHERE first_name = :where_
""",
{'to_': surname, 'where_': firstname}
)
@staticmethod
def delete(self: object, cursor: object, firstname: str):
"""
Deleting from the self database using the cursor to delete the rows with the firstname
:param self:
:param cursor:
:param firstname:
:return: None
"""
with self:
cursor.execute(
"""
DELETE FROM employee
WHERE first_name is :first
""",
{'first': firstname}
)