## Beskrivelse Til nå leser klienten bare data. Vi trenger én enkel interaksjon som skriver til databasen, så vi viser samspill begge veier. ### Foreslått løsning Bruk tabellene shopping_lists og list_items, med disse mutasjonene og spørringen: ``` graphql type Mutation { createShoppingList(name: String!): ShoppingList! addItemToList(listId: ID!, ean: String!, quantity: Int = 1): ShoppingList! } type Query { shoppingList(id: ID!): ShoppingList } ``` I frontend legges en knapp «Legg i handleliste» på varene fra issue 3, og en enkel visning av lista. Det holder med én liste foreløpig (for eksempel med liste-ID lagret i localStorage). Innlogging trengs ikke. ### Akseptansekriterier - [ ] Mutasjonen virker fra curl, og raden finnes i databasen etterpå (SELECT * FROM shopping_lists;): ```bash curl -s http://localhost:4000/graphql \ -H 'Content-Type: application/json' \ -d '{"query":"mutation { createShoppingList(name: \"Test\") { id name } }"}' ``` - [ ] addItemToList med en ekte EAN legger til en rad i list_items. Samme vare to ganger øker antallet i stedet for å lage duplikat. - [ ] En EAN eller liste-ID som ikke finnes gir en GraphQL-feil med forståelig melding, ikke en krasj. - [ ] I nettleseren: klikk «Legg i handleliste» på en vare og last siden på nytt. Varen er fortsatt på lista, fordi den kommer fra databasen. - [ ] Lista oppdateres på skjermen rett etter klikket, uten at man må laste siden på nytt. ### Design/mockup Bruk skissene fra innlevering 1. ### Avhengigheter GraphQL-skjemaet (#13) og Apollo-oppsettet i frontend (#14).