Skip to content

Commit 40f8257

Browse files
committed
tested database setup
1 parent b0ef832 commit 40f8257

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

tuttle/app.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ def get_session(self):
2525
return sqlmodel.Session(self.db_engine)
2626

2727
def clear_database(self):
28+
"""
29+
Delete the database and rebuild database model.
30+
"""
2831
self.db_path.unlink()
2932
self.db_engine = sqlmodel.create_engine(f"sqlite:///{self.db_path}", echo=True)
3033
sqlmodel.SQLModel.metadata.create_all(self.db_engine)
@@ -34,5 +37,27 @@ def get_user(self):
3437
user = session.exec(sqlmodel.select(model.User)).one()
3538
return user
3639

40+
def store_all(self, entities):
41+
"""Store a collection of entities in the database."""
42+
with self.get_session() as session:
43+
for entity in entities:
44+
session.add(entity)
45+
session.commit()
46+
47+
def retrieve_all(self, entity_type):
48+
with self.get_session() as session:
49+
entities = session.exec(
50+
sqlmodel.select(entity_type),
51+
).all()
52+
return entities
53+
54+
@property
55+
def contracts(self):
56+
with self.get_session() as session:
57+
contracts = session.exec(
58+
sqlmodel.select(model.Contract),
59+
).all()
60+
return contracts
61+
3762

3863
the_app = App()

tuttle/model.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class User(SQLModel, table=True):
108108
bank_account_id: Optional[int] = Field(default=None, foreign_key="bankaccount.id")
109109
bank_account: Optional["BankAccount"] = Relationship(back_populates="user")
110110
# TODO: path to logo image
111-
logo: str
111+
logo: Optional[str]
112112

113113

114114
class ICloudAccount(SQLModel, table=True):
@@ -135,7 +135,7 @@ class BankAccount(SQLModel, table=True):
135135
name: str
136136
IBAN: str
137137
BIC: str
138-
username: str # online banking user name
138+
# username: str # online banking user name
139139
user: User = Relationship(back_populates="bank_account")
140140

141141

@@ -192,7 +192,7 @@ class Contract(SQLModel, table=True):
192192
)
193193
currency: str # TODO: currency representation
194194
unit: TimeUnit = Field(sa_column=sqlalchemy.Column(sqlalchemy.Enum(TimeUnit)))
195-
volume: int = Field(
195+
volume: Optional[int] = Field(
196196
description="Number of units agreed on",
197197
)
198198
term_of_payment: Optional[int] = Field(

0 commit comments

Comments
 (0)