====== LU06.A03 - ToDo-Liste mit SQLite und DAO-Klassen ====== In dieser Übung wirst du eine einfache ToDo-Liste implementieren, die SQLite als Datenbank verwendet. Du wirst eine DAO-Klasse erstellen, die die CRUD-Operationen (Create, Read, Update, Delete) für die ToDo-Elemente handhabt. ===== Detaillierte Aufgabenstellung ===== * Erstelle eine ''TodoItem''-Klasse mit den Attributen ''item_id'', ''title'' und ''is_completed''. * Verwende den ''@dataclass''-Dekorator für die ''TodoItem''-Klasse. * Erstelle eine ''TodoDao''-Klasse, die die CRUD-Operationen für die ''TodoItem''-Elemente handhabt. * Implementiere die folgenden Funktionen in der ''TodoDao''-Klasse: - ''create_table()'': Erstellt die Tabelle, falls sie nicht existiert. - ''add_item()'': Fügt ein neues ToDo-Element zur Datenbank hinzu. - ''get_item()'': Ruft ein ToDo-Element anhand seiner ID ab. - ''get_all_items()'': Ruft alle ToDo-Elemente aus der Datenbank ab. - ''update_item()'': Aktualisiert ein bestehendes ToDo-Element. - ''delete_item()'': Löscht ein ToDo-Element anhand seiner ID. - ''close()'': Schließt die Datenbankverbindung. ===== Code-Vorlage ===== === Main === {{gh>https://github.com/templates-python/m323-lu06-a03-dao/blob/main/main.py}} === todoDao === {{gh>https://github.com/templates-python/m323-lu06-a03-dao/blob/main/todoDao.py}} === todoItem === {{gh>https://github.com/templates-python/m323-lu06-a03-dao/blob/main/todoItem.py}} ===== Vorgehen ===== - Akzeptiere das GitHub Classroom Assignment - Klone dein persönliches Repository in die Entwicklungsumgebung - Beginne mit der Implementierung der ''TodoItem''-Klasse. Verwende den ''@dataclass''-Dekorator. - Erstelle die ''TodoDao''-Klasse und implementiere die Methode ''create_table()''. - Füge die Methoden ''add_item()'', ''get_item()'', ''get_all_items()'', ''update_item()'' und ''delete_item()'' zur ''TodoDao''-Klasse hinzu. - Teste alle Methoden, um sicherzustellen, dass sie wie erwartet funktionieren. ===== Abgabe ===== Die Abgabe der Lösung erfolgt als Push in das persönliche GitHub-Repository. ----
//=> GitHub Repo für externe Besucher// GitHub Repository https://github.com/templates-python/m323-lu06-a03-dao //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden//
[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi