Göm menyn

TDDD80 Projekt: Mobila och sociala applikationer

Laboration S2: Databas


Syfte

I denna laboration ska du utöka din tidigare applikation med extern lagring i en databas, samt skriva enhetstester för din kod. Som vanligt, så gäller att så länge er lösning uppfyller spec:en nedanför, har ni fria händer att bestämma hur ni vill lösa uppgiften.

Genomförande

Första steget i laborationen är att utforska (Googla) och skriftligt förklara viktiga grundbegrepp. Det är viktigt att ni för varje svar lägger med de URL:er (länkar) som ni har bedömt vara trovärdiga och som ni har använt för att sammanställa ert svar. (Svaren lämnas in i README-fil i Gitlab, tillsammans med labb-koden):

  1. Vad erbjuder biblioteket SQLAlchemy för fördelar när man arbetar med databaser?
  2. Vad innebär modulär kod-struktur när det gäller Flask-kod? Hur kan cirkulära importer ställa till det? Har ni hittat någon bra lösning?
  3. Vad finns det för problem (och sätt att lösa det) med att uppdatera _strukturen_ på en databas som redan innehåller data? Vad kommer ni att ha för strategi i denna fråga för er app-utveckling?

Laborationen genomförs i par. Ni ansvarar själva för att installera nödvändig programvara för att utveckla med Python+Flask+SQLAlchemy, samt enhetstestning med code coverage.

Ladda nödvändiga programmoduler

Ladda de programmoduler som används i kursen genom att skriva följande (om ni har gjort initadd tidigare, kan ni hoppa över detta steg):

  • module initadd courses/TDDD80

Aktivera virtuell python miljö

Starta en terminal och ställ dig i er labbmapp. Skriv sedan följande:

  • source my_env/bin/activate

Installera bibliotek för databashantering

  • pip3 install Flask-SQLAlchemy

Starta upp PyCharm

För att starta PyCharm i Linux-PUL kan du skriva följande i en terminal:

  • pycharm.sh

Krav

Den interna lagring som användes i föregående laboration ska ersättas med en databas. SQLAlchemy ska anvädas för att kommunicera med databasen. I denna laboration ska SQLite användas som databas.

Utöver kraven från laboration 1 ska du uppfylla följande:

  • Meddelanden och användare lagras i en SQLite-databas
  • SQLAlchemy används för att kommunicera med databasen
  • Det finns minst två SQLAlchemy-Models (Meddelande och Användare)
  • Det finns en Many-to-Many-relation mellan två modeller
  • Du ska skriva enhetstester till din kod
  • Dina enhetstester ska ha code coverage på minst 60%
  • Kod ska versionshanteras med git via gitlab.liu.se

För att skapa nya användare kan det vara hjälpsamt att lägga till ett nytt HTTP-anrop. Du får själv bestämma hur det ska specifieras.

Redovisa

  1. Muntligt redovisa/demonstrera er laboration för er assistent (körning + tester med coverage)
  2. Ladda upp söknings-svaren inkl. länkar (i README-fil), samt er kod (alla relevanta filer för labben) (gärna kontinuerligt) till ert gitlab-projekt
  3. Lägg till er assistent som Reporter på ert projekt
  4. Meddela er assistent att ni lagt upp koden genom att skicka ett mejl. Märk mejlet med TDDD80: Labb S2, och se till att det finns en länk till repot i mejlet.

Resurser


Sidansvarig: Rita Kovordanyi
Senast uppdaterad: 2023-01-10