def insert(self, lerngruppe: Lerngruppe):
        """Einfügen eines Lerngruppe-Objekts in die Datenbank

        Der Primärschlüssel wird dabei überprüft und ggf. berechtigt.

        :param lerngruppe: Das zu speichernde Lerngruppen-Objekt
        :return: Das bereits übergebene Lerngruppen-Objekt, jedoch mit ggf, korrigierter ID.
        """
        cursor = self._cnx.cursor()
        cursor.execute("SELECT MAX(id) AS maxid FROM lerngruppen")
        tuples = cursor.fetchall()

        for maxid in tuples:
            if maxid[0] is not None:
                lerngruppe.set_id(maxid[0] + 1)
            else:
                lerngruppe.set_id(1)

        command = (
            "INSERT INTO lerngruppen (id, erstellungszeitpunkt, gruppenname, profil_id, konversation_id) "
            "VALUES (%s,%s,%s,%s,%s)"
        )
        data = (
            lerngruppe.get_id(),
            lerngruppe.get_erstellungszeitpunkt(),
            lerngruppe.get_gruppenname(),
            lerngruppe.get_profil_id(),
            lerngruppe.get_konversation_id(),
        )
        cursor.execute(command, data)

        self._cnx.commit()
        cursor.close()

        return lerngruppe  # Rückgabe des bereits übergebenen Objektes, ggf. mit korrigierter ID
    def update(self, lerngruppe: Lerngruppe):
        """
        Aktualisieren eines Lerngruppen-Objekts in der Datenbank anhand seiner ID

        :param lerngruppe: Lerngruppen-Objekt, das in der Datenbank übergeschrieben werden soll
        """
        cursor = self._cnx.cursor()

        command = "UPDATE lerngruppen SET gruppenname=%s, profil_id=%s, konversation_id=%s WHERE id=%s "
        data = (
            lerngruppe.get_gruppenname(),
            lerngruppe.get_profil_id(),
            lerngruppe.get_konversation_id(),
            lerngruppe.get_id(),
        )
        cursor.execute(command, data)

        self._cnx.commit()
        cursor.close()
    def delete(self, lerngruppe: Lerngruppe):
        """
        Löschen der Daten eines Lerngruppen-Objekts
        :param lerngruppe: Das aus der Datenbank zu löschende Lerngruppen-Objekt
        """
        cursor = self._cnx.cursor()

        command = "DELETE FROM lerngruppen WHERE id={}".format(lerngruppe.get_id())
        cursor.execute(command)

        self._cnx.commit()
        cursor.close()
예제 #4
0
    def put(self, id):
        """Update eines bestimmten Lerngruppe-Objekts.

        Die über die URI übermittelte ID überschreibt das ID-Attribut des im Payload der Anfrage übermittelten
        Objekts.
        """
        admin = Admin()
        lg = Lerngruppe.from_dict(api.payload)

        if lg is not None:
            lg.set_id(id)
            admin.save_lerngruppe(lg)
            return "", 200
        else:
            return "", 500
예제 #5
0
 def post(self):
     """
     Anlegen eines neuen Lerngruppe-Objekts.
     Die vom Client gesendeten Daten werden über die in jeder BO-Klasse verfügbaren Methode from_dict in das
     jeweilige BO überführt und anschließend in die Datenbank geschrieben.
     """
     admin = Admin()
     proposal = Lerngruppe.from_dict(api.payload)
     if proposal is not None:
         lg = admin.create_lerngruppe(
             proposal.get_gruppenname(),
             proposal.get_profil_id(),
             proposal.get_konversation_id(),
         )
         allePersonen = admin.get_all_personen()
         for person in allePersonen:
             admin.create_gruppenvorschlag(person.get_id(), lg.get_id())
         return lg, 200
     else:
         return "", 500
    def find_by_person_id(self, person_key: int):
        """Auslesen aller Lerngruppen-Objekte der gegebenen Person ID

        :param person_key: Person ID
        :return: Sammlung aller Lerngruppen-Objekte, der gegebenen Person ID
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute(
            "SELECT L.id, L.erstellungszeitpunkt, L.gruppenname, L.profil_id, L.konversation_id "
            "FROM lerngruppen AS L LEFT OUTER JOIN gruppen_teilnahmen AS R "
            "ON R.gruppen_id=L.id "
            "WHERE R.person_id={}".format(person_key)
        )
        tuples = cursor.fetchall()

        for (
            id,
            erstellungszeitpunkt,
            gruppenname,
            profil_id,
            konversation_id,
        ) in tuples:
            lerngruppe = Lerngruppe()
            lerngruppe.set_id(id)
            lerngruppe.set_erstellungszeitpunkt(erstellungszeitpunkt)
            lerngruppe.set_gruppenname(gruppenname)
            lerngruppe.set_profil_id(profil_id)
            lerngruppe.set_konversation_id(konversation_id)
            result.append(lerngruppe)

        self._cnx.commit()
        cursor.close()

        return result  # Rückgabe der Sammlung aller Lerngruppe-Objekte
    def find_by_key(self, key: int):
        """Auslesen einer Lerngruppe mit vorgegebener Lerngruppen ID

        :param key: Lerngruppen ID
        :return: Sammlung aller Lerngruppen-Objekte
        """

        result = None
        cursor = self._cnx.cursor()
        command = (
            "SELECT id, erstellungszeitpunkt, gruppenname, profil_id, konversation_id FROM "
            "lerngruppen WHERE id={}".format(key)
        )
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, erstellungszeitpunkt, gruppename, profil_id, konversation_id) = tuples[
                0
            ]
            lerngruppe = Lerngruppe()
            lerngruppe.set_id(id)
            lerngruppe.set_erstellungszeitpunkt(erstellungszeitpunkt)
            lerngruppe.set_gruppenname(gruppename)
            lerngruppe.set_profil_id(profil_id)
            lerngruppe.set_konversation_id(konversation_id)
            result = lerngruppe

        except IndexError:  # Wenn eine leere Sequenz zurückgegeben wird (tuples).
            result = None

        self._cnx.commit()
        cursor.close()

        return result  # Der Rückgabe der ID entsprechendes Lerngruppe-Objekt (None bei fehlender DB-Tupel)
    def find_all(self):
        """Auslesen aller Lerngruppe-Objekte

        :return: Sammlung aller Lerngruppen-Objekte
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute("SELECT * from lerngruppen")  # SQL Statement
        tuples = cursor.fetchall()

        for (
            id,
            erstellungszeitpunkt,
            gruppenname,
            profil_id,
            konversation_id,
        ) in tuples:
            lerngruppe = Lerngruppe()
            lerngruppe.set_id(id)
            lerngruppe.set_erstellungszeitpunkt(erstellungszeitpunkt)
            lerngruppe.set_gruppenname(gruppenname)
            lerngruppe.set_profil_id(profil_id)
            lerngruppe.set_konversation_id(konversation_id)
            result.append(lerngruppe)

        self._cnx.commit()
        cursor.close()

        return result  # Rückgabe der Sammlung aller Lerngruppe-Objekte
    def find_by_konversation_id(self, konversation_key: int):
        """Auslesen aller Lerngruppen-Objekte der gegebenen Konversation ID

        :param konversation_key: Konversation ID
        :return: Sammlung aller Lerngruppen-Objekte, der gegebenen Konversation ID
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute(
            "SELECT id, erstellungszeitpunkt, gruppenname, profil_id, konversation_id FROM "
            "lerngruppen WHERE konversation_id={}".format(konversation_key)
        )
        tuples = cursor.fetchall()

        for (
            id,
            erstellungszeitpunkt,
            gruppenname,
            profil_id,
            konversation_id,
        ) in tuples:
            lerngruppe = Lerngruppe()
            lerngruppe.set_id(id)
            lerngruppe.set_erstellungszeitpunkt(erstellungszeitpunkt)
            lerngruppe.set_gruppenname(gruppenname)
            lerngruppe.set_profil_id(profil_id)
            lerngruppe.set_konversation_id(konversation_id)
            result.append(lerngruppe)

        self._cnx.commit()
        cursor.close()

        return result  # Rückgabe der Sammlung aller Lerngruppe-Objekte
        :param lerngruppe: Das aus der Datenbank zu löschende Lerngruppen-Objekt
        """
        cursor = self._cnx.cursor()

        command = "DELETE FROM lerngruppen WHERE id={}".format(lerngruppe.get_id())
        cursor.execute(command)

        self._cnx.commit()
        cursor.close()


"""Testing für Klasse"""
if __name__ == "__main__":
    with LerngruppeMapper() as mapper:

        test = Lerngruppe()
        test.set_gruppenname("Funky Java Kurs")
        test.set_profil_id(7)
        test.set_konversation_id(7)

        #   Methode insert
        print("Test der Methode: .insert")
        mapper.insert(test)

        #   Methode find_all
        print("Test der Methode: find_all")
        result = mapper.find_all()
        for r in result:
            print(r.__dict__)

        #   Methode find_by_key