From fa9efa6318776a13a47cca13abcf9532a93410c9 Mon Sep 17 00:00:00 2001 From: Kaholaz <vkbugge@hotmail.com> Date: Tue, 18 Apr 2023 16:42:11 +0200 Subject: [PATCH 1/6] docs: unfinished swagger documentation --- docs/swagger.yaml | 482 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 482 insertions(+) create mode 100644 docs/swagger.yaml diff --git a/docs/swagger.yaml b/docs/swagger.yaml new file mode 100644 index 0000000..d4582d5 --- /dev/null +++ b/docs/swagger.yaml @@ -0,0 +1,482 @@ +openapi: 3.0.3 +info: + title: let API - OpenAPI 3.0 + description: |- + A simple API for listing items for sale. + Some useful links: + - [The GitHub repository](https://github.com/BeatsuDev/let) + termsOfService: http://swagger.io/terms/ + contact: + email: vkbugge@hotmail.com + license: + name: MIT License + url: 'https://opensource.org/licenses/MIT' + version: 1.0.0 +servers: + - url: https://localhost:8080/ + - url: https://api.let.no/ +tags: + - name: account + description: Operations about account + - name: household + description: Operations about household + - name: inventory + description: Operations about inventory + - name: shopping list + description: Operations about shopping list +paths: + /user: + post: + tags: + - account + summary: Create a user + description: Creates a user + operationId: createUser + requestBody: + description: The user to be created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateUser' + responses: + '201': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/UserFull' + '409': + description: User already exists + put: + tags: + - account + summary: Update user + description: Updates a user + operationId: updateUser + requestBody: + description: The user to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUser' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/UserFull' + '404': + description: User not found + /user/{id}: + get: + tags: + - account + summary: Get user by id + description: Returns a single user + operationId: getUserById + parameters: + - name: id + in: path + description: ID of user to return + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/UserFull' + '404': + description: User not found + delete: + tags: + - account + summary: Delete user + description: Deletes a user + operationId: deleteUser + parameters: + - name: id + in: path + description: ID of user to delete + required: true + schema: + type: integer + format: int64 + responses: + '204': + description: successful operation + '401': + description: Access denied + '404': + description: User not found + /user/login: + post: + tags: + - account + summary: Login user + description: Logs in a user + operationId: loginUser + requestBody: + description: The user to be logged in + content: + application/json: + schema: + $ref: '#/components/schemas/LoginUser' + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/UserFull' + '401': + description: User could not be logged in + /user/logout: + post: + tags: + - account + summary: Logout user + description: Logs out a user + operationId: logoutUser + responses: + '200': + description: successful operation + '401': + description: User could not be logged out + /household/{id}/users: + put: + tags: + - household + summary: Update user type + description: Updates the type of a user in the household. Can only be done by a superuser + operationId: updateUserType + requestBody: + description: Updated the type of user in the household + content: + application/json: + schema: + type: object + properties: + userId: + type: integer + format: int64 + userType: + type: string + enum: + - SUPERUSER + - USER + responses: + '200': + description: successful operation + '401': + description: Access denied + post: + tags: + - household + summary: Add user + description: Adds a user to the household. Can only be done by a superuser + operationId: addUser + parameters: + - name: id + in: path + description: ID of household to add a user to + required: true + schema: + type: integer + format: int64 + requestBody: + description: Added user to household + content: + application/json: + schema: + type: object + properties: + userId: + type: integer + format: int64 + responses: + '201': + description: successful operation + '409': + description: User already exists in the household + '401': + description: Access denied + delete: + tags: + - household + summary: Delete user + description: Deletes a user from the household. Can only be done by a superuser + operationId: deleteUser + parameters: + - name: id + in: path + description: ID of household to delete a user from + required: true + schema: + type: integer + format: int64 + requestBody: + description: Deleted user from household + content: + application/json: + schema: + type: integer + format: int64 + responses: + '204': + description: successful operation + '404': + description: User not found in the household + '401': + description: Access denied + /household/{id}: + put: + tags: + - household + summary: Update household name + description: Updates the name of a household. Can only be done by a superuser + operationId: updateName + parameters: + - name: id + in: path + description: ID of household to update + required: true + schema: + type: integer + format: int64 + requestBody: + description: Updated the household name + content: + application/json: + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + '401': + description: Access denied + + /household/{id}/shoppinglist: + get: + tags: + - shopping list + summary: Get the shopping list of a household + description: Gets a shopping list with item id from shopping list + operationId: getShoppingList + parameters: + - name: id + in: path + description: ID of household's shopping list to get items from + required: true + schema: + type: integer + format: int64 + responses: + '201': + description: item found + '401': + description: Unauthorized + post: + tags: + - shopping list + summary: Add item to shopping list + description: Adds a selected item to shopping list, user has to be validated + parameters: + - name: id + in: path + description: ID of household's shopping list to add items to + required: true + schema: + type: integer + format: int64 + operationId: addItem + requestBody: + description: Item to be added to shopping list + content: + application/json: + schema: + type: object + properties: + itemTypeId: + type: integer + format: int64 + responses: + '201': + description: Successful operation + '401': + description: Unauthorized response + delete: + tags: + - shopping list + summary: Delete item from shopping list + description: Deletes a list of items passed in the request body + operationId: deleteItem + parameters: + - name: id + in: path + description: ID of item to delete + required: true + schema: + type: integer + format: int64 + responses: + '201': + description: item deleted successfully + '401': + description: Unauthorized response, user is not validated or does not have access + + /inventory: + post: + tags: + - inventory + summary: Add item to inventory + description: Adds a selected item to inventory + operationId: addInventoryItem + requestBody: + description: Item to be added to inventory + content: + application/json: + schema: + type: object + properties: + itemId: + type: integer + format: int64 + responses: + + /item: + put: + tags: + - item + - inventory + - shopping list + summary: Update item state + requestBody: + content: + application/json: + schema: + type: object + required: + - itemId + - state + properties: + itemId: + type: integer + format: int64 + state: + $ref: '#/components/schemas/ItemState' + remaining: + type: number + format: int64 + responses: + 200: + description: Item updated successfully + 400: + description: Bad request + 404: + description: Item not found + /item/{id}: + +components: + schemas: + CreateUser: + type: object + properties: + email: + type: string + format: email + example: jens@gmail.com + password: + type: string + format: password + example: password123 + firstName: + type: string + example: John + LoginUser: + type: object + properties: + email: + type: string + format: email + example: lennon@gmail.com + password: + type: string + format: password + example: hunter2 + UpdateUser: + type: object + properties: + id: + type: integer + format: int64 + example: 10 + email: + type: string + format: email + example: jens@gmail.com + password: + type: string + format: password + example: password123 + firstName: + type: string + example: John + UserFull: + type: object + properties: + id: + type: integer + format: int64 + example: 10 + email: + type: string + format: email + example: example@example.org + firstName: + type: string + example: John + lastName: + type: string + example: James + ItemState: + type: string + enum: + - WASTED + - CONSUMED + - SHOPPINGLIST + - INVENTORY + ItemType: + type: object + properties: + id: + type: integer + example: 123 + name: + type: string + example: "Milk" + ShoppingItem: + type: object + properties: + id: + type: integer + example: 123 + type: + $ref: '#/components/schemas/ItemType' + InventoryItem: + type: object + properties: + id: + type: integer + example: 123 + bought: + type: string + format: date + example: "2021-04-18" + type: + $ref: '#/components/schemas/ItemType' \ No newline at end of file -- GitLab From df24dd0be7018660909278e9144bcaaf65a208da Mon Sep 17 00:00:00 2001 From: Kaholaz <vkbugge@hotmail.com> Date: Wed, 19 Apr 2023 09:09:22 +0200 Subject: [PATCH 2/6] docs: add docker run scripts --- docs/run_swagger.bat | 3 +++ docs/run_swagger.sh | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 docs/run_swagger.bat create mode 100755 docs/run_swagger.sh diff --git a/docs/run_swagger.bat b/docs/run_swagger.bat new file mode 100644 index 0000000..e8466f8 --- /dev/null +++ b/docs/run_swagger.bat @@ -0,0 +1,3 @@ +echo 'Starting swagger on http://localhost:3000' +docker pull swaggerapi/swagger-ui +docker run -p 3000:8080 -e SWAGGER_JSON=/api.yaml -v %cd%/swagger.yaml:/api.yaml swaggerapi/swagger-ui diff --git a/docs/run_swagger.sh b/docs/run_swagger.sh new file mode 100755 index 0000000..f47b287 --- /dev/null +++ b/docs/run_swagger.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo 'Starting swagger on http://localhost:3000' +docker pull swaggerapi/swagger-ui +docker run -p 3000:8080 -e SWAGGER_JSON=/api.yaml -v $(pwd)/swagger.yaml:/api.yaml swaggerapi/swagger-ui -- GitLab From 991796c2dd8a3eba77ef4c09c7a7c90ff4eb4a86 Mon Sep 17 00:00:00 2001 From: Mats Lading <mjlading@stud.ntnu.no> Date: Fri, 28 Apr 2023 11:41:21 +0200 Subject: [PATCH 3/6] chore: merge dev into docs/swagger local --- api/.idea/.gitignore | 8 + api/.idea/compiler.xml | 30 + api/.idea/encodings.xml | 6 + api/.idea/jarRepositories.xml | 20 + api/.idea/jpa-buddy.xml | 7 + api/.idea/misc.xml | 15 + api/.idea/uiDesigner.xml | 124 +++ api/.idea/vcs.xml | 6 + api/api.iml | 144 +++ api/database/localdb.mv.db | Bin 0 -> 65536 bytes api/database/localdb.trace.db | 163 +++ api/target/classes/application-dev.properties | 12 + api/target/classes/application.properties | 1 + api/target/classes/insert_item_types.sql | 998 ++++++++++++++++++ .../freshify/api/FreshifyApiApplication.class | Bin 0 -> 752 bytes .../freshify/api/GlobalExceptionHandler.class | Bin 0 -> 8260 bytes .../api/controller/HouseholdController.class | Bin 0 -> 6830 bytes .../HouseholdMemberController.class | Bin 0 -> 7440 bytes .../api/controller/InventoryController.class | Bin 0 -> 10349 bytes .../api/controller/ItemTypeController.class | Bin 0 -> 2490 bytes .../controller/ShoppingListController.class | Bin 0 -> 9272 bytes .../api/controller/UserController.class | Bin 0 -> 11683 bytes ...ouseholdMemberAlreadyExistsException.class | Bin 0 -> 623 bytes .../HouseholdNotFoundException.class | Bin 0 -> 579 bytes .../IllegalItemParameterException.class | Bin 0 -> 629 bytes .../IllegalItemStatusException.class | Bin 0 -> 581 bytes .../InvalidHouseholdMemberRoleException.class | Bin 0 -> 618 bytes .../exception/InvalidItemCountException.class | Bin 0 -> 615 bytes ...temDoesNotBelongToHouseholdException.class | Bin 0 -> 628 bytes .../api/exception/ItemNotFoundException.class | Bin 0 -> 559 bytes .../exception/ItemTypeNotFoundException.class | Bin 0 -> 576 bytes .../ItemTypesNotFoundException.class | Bin 0 -> 591 bytes ...ppingListEntryAlreadyExistsException.class | Bin 0 -> 649 bytes .../ShoppingListEntryNotFoundException.class | Bin 0 -> 654 bytes ...serDoesNotBelongToHouseholdException.class | Bin 0 -> 628 bytes .../api/exception/UserNotFoundException.class | Bin 0 -> 559 bytes .../no/freshify/api/model/Household.class | Bin 0 -> 3140 bytes .../freshify/api/model/HouseholdMember.class | Bin 0 -> 2326 bytes .../api/model/HouseholdMemberKey.class | Bin 0 -> 1153 bytes .../api/model/HouseholdMemberRole.class | Bin 0 -> 1209 bytes .../classes/no/freshify/api/model/Item.class | Bin 0 -> 4081 bytes .../no/freshify/api/model/ItemStatus.class | Bin 0 -> 1146 bytes .../no/freshify/api/model/ItemType.class | Bin 0 -> 1078 bytes .../api/model/ShoppingListEntry.class | Bin 0 -> 2654 bytes .../classes/no/freshify/api/model/User.class | Bin 0 -> 3154 bytes .../api/model/dto/CreateHousehold.class | Bin 0 -> 598 bytes .../freshify/api/model/dto/CreateUser.class | Bin 0 -> 991 bytes .../freshify/api/model/dto/HouseholdDTO.class | Bin 0 -> 834 bytes .../api/model/dto/HouseholdMemberDTO.class | Bin 0 -> 1328 bytes .../api/model/dto/InventoryItem.class | Bin 0 -> 2672 bytes .../freshify/api/model/dto/ItemTypeDTO.class | Bin 0 -> 831 bytes .../no/freshify/api/model/dto/LoginUser.class | Bin 0 -> 784 bytes .../dto/ShoppingListEntryEditRequest.class | Bin 0 -> 1290 bytes .../model/dto/ShoppingListEntryRequest.class | Bin 0 -> 1104 bytes .../model/dto/ShoppingListEntryResponse.class | Bin 0 -> 2229 bytes .../api/model/dto/UpdateInventoryItem.class | Bin 0 -> 1094 bytes .../freshify/api/model/dto/UpdateUser.class | Bin 0 -> 1457 bytes .../no/freshify/api/model/dto/UserFull.class | Bin 0 -> 1212 bytes .../no/freshify/api/model/dto/UserId.class | Bin 0 -> 331 bytes .../api/model/dto/UserTypeRequest.class | Bin 0 -> 855 bytes .../api/model/mapper/HouseholdMapper.class | Bin 0 -> 730 bytes .../model/mapper/HouseholdMapperImpl.class | Bin 0 -> 1860 bytes .../model/mapper/HouseholdMemberMapper.class | Bin 0 -> 954 bytes .../mapper/HouseholdMemberMapperImpl.class | Bin 0 -> 2850 bytes .../api/model/mapper/ItemMapper.class | Bin 0 -> 1421 bytes .../api/model/mapper/ItemMapperImpl.class | Bin 0 -> 4510 bytes .../mapper/ShoppingListEntryMapper.class | Bin 0 -> 1394 bytes .../mapper/ShoppingListEntryMapperImpl.class | Bin 0 -> 4093 bytes .../api/model/mapper/UserMapper.class | Bin 0 -> 1565 bytes .../api/model/mapper/UserMapperImpl.class | Bin 0 -> 2184 bytes .../HouseholdMemberRepository.class | Bin 0 -> 1354 bytes .../api/repository/HouseholdRepository.class | Bin 0 -> 480 bytes .../api/repository/ItemRepository.class | Bin 0 -> 1036 bytes .../api/repository/ItemTypeRepository.class | Bin 0 -> 788 bytes .../ShoppingListEntryRepository.class | Bin 0 -> 545 bytes .../api/repository/UserRepository.class | Bin 0 -> 523 bytes .../api/security/AuthenticationService.class | Bin 0 -> 8766 bytes .../freshify/api/security/CookieFactory.class | Bin 0 -> 1318 bytes .../api/security/JwtTokenFilter.class | Bin 0 -> 4177 bytes .../api/security/JwtUserDetailsService.class | Bin 0 -> 1791 bytes .../security/PermissionEvaluatorImpl.class | Bin 0 -> 3374 bytes .../api/security/UserAuthentication.class | Bin 0 -> 1523 bytes .../api/security/UserDetailsImpl.class | Bin 0 -> 4233 bytes .../security/WebSecurityConfiguration$1.class | Bin 0 -> 1960 bytes .../security/WebSecurityConfiguration.class | Bin 0 -> 7885 bytes .../api/service/HouseholdMemberService.class | Bin 0 -> 4455 bytes .../api/service/HouseholdService.class | Bin 0 -> 5145 bytes .../no/freshify/api/service/ItemService.class | Bin 0 -> 3031 bytes .../api/service/ItemTypeService.class | Bin 0 -> 2297 bytes .../service/ShoppingListEntryService.class | Bin 0 -> 9166 bytes .../no/freshify/api/service/UserService.class | Bin 0 -> 2196 bytes .../api/model/mapper/HouseholdMapperImpl.java | 43 + .../mapper/HouseholdMemberMapperImpl.java | 60 ++ .../api/model/mapper/ItemMapperImpl.java | 99 ++ .../mapper/ShoppingListEntryMapperImpl.java | 96 ++ .../api/model/mapper/UserMapperImpl.java | 75 ++ .../compile/default-compile/inputFiles.lst | 67 ++ .../test-classes/application-test.properties | 8 + .../api/FreshifyAPIApplicationTests.class | Bin 0 -> 629 bytes .../controller/HouseholdControllerTest.class | Bin 0 -> 9866 bytes .../HouseholdMemberControllerTest.class | Bin 0 -> 10804 bytes .../controller/InventoryControllerTest.class | Bin 0 -> 10791 bytes .../controller/ItemTypeControllerTest.class | Bin 0 -> 5016 bytes .../ShoppingListControllerTest.class | Bin 0 -> 12848 bytes .../api/controller/UserControllerTest.class | Bin 0 -> 12545 bytes .../security/TestAuthenticationService.class | Bin 0 -> 7437 bytes .../api/security/TestCookieFactory.class | Bin 0 -> 1183 bytes .../security/TestPermissionEvaluator.class | Bin 0 -> 3121 bytes .../service/HouseholdMemberServiceTest.class | Bin 0 -> 6011 bytes .../api/service/HouseholdServiceTest.class | Bin 0 -> 9526 bytes .../api/service/ItemServiceTest.class | Bin 0 -> 5687 bytes .../api/service/ItemTypeServiceTest.class | Bin 0 -> 4215 bytes .../ShoppingListEntryServiceTest.class | Bin 0 -> 9544 bytes .../api/service/UserServiceTest.class | Bin 0 -> 4596 bytes docs/swagger.yaml | 42 + 115 files changed, 2024 insertions(+) create mode 100644 api/.idea/.gitignore create mode 100644 api/.idea/compiler.xml create mode 100644 api/.idea/encodings.xml create mode 100644 api/.idea/jarRepositories.xml create mode 100644 api/.idea/jpa-buddy.xml create mode 100644 api/.idea/misc.xml create mode 100644 api/.idea/uiDesigner.xml create mode 100644 api/.idea/vcs.xml create mode 100644 api/api.iml create mode 100644 api/database/localdb.mv.db create mode 100644 api/database/localdb.trace.db create mode 100644 api/target/classes/application-dev.properties create mode 100644 api/target/classes/application.properties create mode 100644 api/target/classes/insert_item_types.sql create mode 100644 api/target/classes/no/freshify/api/FreshifyApiApplication.class create mode 100644 api/target/classes/no/freshify/api/GlobalExceptionHandler.class create mode 100644 api/target/classes/no/freshify/api/controller/HouseholdController.class create mode 100644 api/target/classes/no/freshify/api/controller/HouseholdMemberController.class create mode 100644 api/target/classes/no/freshify/api/controller/InventoryController.class create mode 100644 api/target/classes/no/freshify/api/controller/ItemTypeController.class create mode 100644 api/target/classes/no/freshify/api/controller/ShoppingListController.class create mode 100644 api/target/classes/no/freshify/api/controller/UserController.class create mode 100644 api/target/classes/no/freshify/api/exception/HouseholdMemberAlreadyExistsException.class create mode 100644 api/target/classes/no/freshify/api/exception/HouseholdNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/exception/IllegalItemParameterException.class create mode 100644 api/target/classes/no/freshify/api/exception/IllegalItemStatusException.class create mode 100644 api/target/classes/no/freshify/api/exception/InvalidHouseholdMemberRoleException.class create mode 100644 api/target/classes/no/freshify/api/exception/InvalidItemCountException.class create mode 100644 api/target/classes/no/freshify/api/exception/ItemDoesNotBelongToHouseholdException.class create mode 100644 api/target/classes/no/freshify/api/exception/ItemNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/exception/ItemTypeNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/exception/ItemTypesNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/exception/ShoppingListEntryAlreadyExistsException.class create mode 100644 api/target/classes/no/freshify/api/exception/ShoppingListEntryNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/exception/UserDoesNotBelongToHouseholdException.class create mode 100644 api/target/classes/no/freshify/api/exception/UserNotFoundException.class create mode 100644 api/target/classes/no/freshify/api/model/Household.class create mode 100644 api/target/classes/no/freshify/api/model/HouseholdMember.class create mode 100644 api/target/classes/no/freshify/api/model/HouseholdMemberKey.class create mode 100644 api/target/classes/no/freshify/api/model/HouseholdMemberRole.class create mode 100644 api/target/classes/no/freshify/api/model/Item.class create mode 100644 api/target/classes/no/freshify/api/model/ItemStatus.class create mode 100644 api/target/classes/no/freshify/api/model/ItemType.class create mode 100644 api/target/classes/no/freshify/api/model/ShoppingListEntry.class create mode 100644 api/target/classes/no/freshify/api/model/User.class create mode 100644 api/target/classes/no/freshify/api/model/dto/CreateHousehold.class create mode 100644 api/target/classes/no/freshify/api/model/dto/CreateUser.class create mode 100644 api/target/classes/no/freshify/api/model/dto/HouseholdDTO.class create mode 100644 api/target/classes/no/freshify/api/model/dto/HouseholdMemberDTO.class create mode 100644 api/target/classes/no/freshify/api/model/dto/InventoryItem.class create mode 100644 api/target/classes/no/freshify/api/model/dto/ItemTypeDTO.class create mode 100644 api/target/classes/no/freshify/api/model/dto/LoginUser.class create mode 100644 api/target/classes/no/freshify/api/model/dto/ShoppingListEntryEditRequest.class create mode 100644 api/target/classes/no/freshify/api/model/dto/ShoppingListEntryRequest.class create mode 100644 api/target/classes/no/freshify/api/model/dto/ShoppingListEntryResponse.class create mode 100644 api/target/classes/no/freshify/api/model/dto/UpdateInventoryItem.class create mode 100644 api/target/classes/no/freshify/api/model/dto/UpdateUser.class create mode 100644 api/target/classes/no/freshify/api/model/dto/UserFull.class create mode 100644 api/target/classes/no/freshify/api/model/dto/UserId.class create mode 100644 api/target/classes/no/freshify/api/model/dto/UserTypeRequest.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/HouseholdMapper.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/HouseholdMapperImpl.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapper.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/ItemMapper.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/ItemMapperImpl.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapper.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/UserMapper.class create mode 100644 api/target/classes/no/freshify/api/model/mapper/UserMapperImpl.class create mode 100644 api/target/classes/no/freshify/api/repository/HouseholdMemberRepository.class create mode 100644 api/target/classes/no/freshify/api/repository/HouseholdRepository.class create mode 100644 api/target/classes/no/freshify/api/repository/ItemRepository.class create mode 100644 api/target/classes/no/freshify/api/repository/ItemTypeRepository.class create mode 100644 api/target/classes/no/freshify/api/repository/ShoppingListEntryRepository.class create mode 100644 api/target/classes/no/freshify/api/repository/UserRepository.class create mode 100644 api/target/classes/no/freshify/api/security/AuthenticationService.class create mode 100644 api/target/classes/no/freshify/api/security/CookieFactory.class create mode 100644 api/target/classes/no/freshify/api/security/JwtTokenFilter.class create mode 100644 api/target/classes/no/freshify/api/security/JwtUserDetailsService.class create mode 100644 api/target/classes/no/freshify/api/security/PermissionEvaluatorImpl.class create mode 100644 api/target/classes/no/freshify/api/security/UserAuthentication.class create mode 100644 api/target/classes/no/freshify/api/security/UserDetailsImpl.class create mode 100644 api/target/classes/no/freshify/api/security/WebSecurityConfiguration$1.class create mode 100644 api/target/classes/no/freshify/api/security/WebSecurityConfiguration.class create mode 100644 api/target/classes/no/freshify/api/service/HouseholdMemberService.class create mode 100644 api/target/classes/no/freshify/api/service/HouseholdService.class create mode 100644 api/target/classes/no/freshify/api/service/ItemService.class create mode 100644 api/target/classes/no/freshify/api/service/ItemTypeService.class create mode 100644 api/target/classes/no/freshify/api/service/ShoppingListEntryService.class create mode 100644 api/target/classes/no/freshify/api/service/UserService.class create mode 100644 api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMapperImpl.java create mode 100644 api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.java create mode 100644 api/target/generated-sources/annotations/no/freshify/api/model/mapper/ItemMapperImpl.java create mode 100644 api/target/generated-sources/annotations/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.java create mode 100644 api/target/generated-sources/annotations/no/freshify/api/model/mapper/UserMapperImpl.java create mode 100644 api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 api/target/test-classes/application-test.properties create mode 100644 api/target/test-classes/no/freshify/api/FreshifyAPIApplicationTests.class create mode 100644 api/target/test-classes/no/freshify/api/controller/HouseholdControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/controller/HouseholdMemberControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/controller/InventoryControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/controller/ItemTypeControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/controller/ShoppingListControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/controller/UserControllerTest.class create mode 100644 api/target/test-classes/no/freshify/api/security/TestAuthenticationService.class create mode 100644 api/target/test-classes/no/freshify/api/security/TestCookieFactory.class create mode 100644 api/target/test-classes/no/freshify/api/security/TestPermissionEvaluator.class create mode 100644 api/target/test-classes/no/freshify/api/service/HouseholdMemberServiceTest.class create mode 100644 api/target/test-classes/no/freshify/api/service/HouseholdServiceTest.class create mode 100644 api/target/test-classes/no/freshify/api/service/ItemServiceTest.class create mode 100644 api/target/test-classes/no/freshify/api/service/ItemTypeServiceTest.class create mode 100644 api/target/test-classes/no/freshify/api/service/ShoppingListEntryServiceTest.class create mode 100644 api/target/test-classes/no/freshify/api/service/UserServiceTest.class diff --git a/api/.idea/.gitignore b/api/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/api/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/api/.idea/compiler.xml b/api/.idea/compiler.xml new file mode 100644 index 0000000..89a4163 --- /dev/null +++ b/api/.idea/compiler.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <annotationProcessing> + <profile default="true" name="Default" enabled="true" /> + <profile name="Maven default annotation processors profile" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + </profile> + <profile name="Annotation profile for Freshify API" enabled="true"> + <sourceOutputDir name="target/generated-sources/annotations" /> + <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> + <outputRelativeToContentRoot value="true" /> + <processorPath useClasspath="false"> + <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.4.2.Final/mapstruct-processor-1.4.2.Final.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.4.2.Final/mapstruct-1.4.2.Final.jar" /> + </processorPath> + <module name="api" /> + </profile> + </annotationProcessing> + </component> + <component name="JavacSettings"> + <option name="ADDITIONAL_OPTIONS_OVERRIDE"> + <module name="api" options="-parameters" /> + </option> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/encodings.xml b/api/.idea/encodings.xml new file mode 100644 index 0000000..63e9001 --- /dev/null +++ b/api/.idea/encodings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/jarRepositories.xml b/api/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/api/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RemoteRepositoriesConfiguration"> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Central Repository" /> + <option name="url" value="https://repo.maven.apache.org/maven2" /> + </remote-repository> + <remote-repository> + <option name="id" value="central" /> + <option name="name" value="Maven Central repository" /> + <option name="url" value="https://repo1.maven.org/maven2" /> + </remote-repository> + <remote-repository> + <option name="id" value="jboss.community" /> + <option name="name" value="JBoss Community repository" /> + <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> + </remote-repository> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/jpa-buddy.xml b/api/.idea/jpa-buddy.xml new file mode 100644 index 0000000..898e07a --- /dev/null +++ b/api/.idea/jpa-buddy.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="JpaBuddyIdeaProjectConfig"> + <option name="defaultUnitInitialized" value="true" /> + <option name="renamerInitialized" value="true" /> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/misc.xml b/api/.idea/misc.xml new file mode 100644 index 0000000..82ab2cc --- /dev/null +++ b/api/.idea/misc.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ExternalStorageConfigurationManager" enabled="true" /> + <component name="MavenProjectsManager"> + <option name="originalFiles"> + <list> + <option value="$PROJECT_DIR$/pom.xml" /> + </list> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK" /> + <component name="ProjectType"> + <option name="id" value="jpab" /> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/uiDesigner.xml b/api/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/api/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Palette2"> + <group name="Swing"> + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> + </item> + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true"> + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> + <initial-values> + <property name="text" value="Button" /> + </initial-values> + </item> + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="RadioButton" /> + </initial-values> + </item> + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="CheckBox" /> + </initial-values> + </item> + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="Label" /> + </initial-values> + </item> + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> + <preferred-size width="-1" height="20" /> + </default-constraints> + </item> + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> + </item> + </group> + </component> +</project> \ No newline at end of file diff --git a/api/.idea/vcs.xml b/api/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/api/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/api/api.iml b/api/api.iml new file mode 100644 index 0000000..aa3916f --- /dev/null +++ b/api/api.iml @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="web" name="Web"> + <configuration> + <webroots /> + <sourceRoots> + <root url="file://$MODULE_DIR$/src/main/java" /> + <root url="file://$MODULE_DIR$/src/main/resources" /> + </sourceRoots> + </configuration> + </facet> + <facet type="jpa" name="JPA"> + <configuration> + <setting name="validation-enabled" value="true" /> + <setting name="provider-name" value="Hibernate" /> + <datasource-mapping /> + <naming-strategy-map /> + </configuration> + </facet> + <facet type="Spring" name="Spring"> + <configuration /> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_17"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.19" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:5.0.1" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.hibernate.orm:hibernate-core:6.1.7.Final" level="project" /> + <orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:3.1.0" level="project" /> + <orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:2.0.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.logging:jboss-logging:3.5.0.Final" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.hibernate.common:hibernate-commons-annotations:6.0.6.Final" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss:jandex:2.4.2.Final" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml:classmate:1.5.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: net.bytebuddy:byte-buddy:1.12.23" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.glassfish.jaxb:jaxb-runtime:4.0.2" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.glassfish.jaxb:jaxb-core:4.0.2" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.eclipse.angus:angus-activation:2.0.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.glassfish.jaxb:txw2:4.0.2" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.istack:istack-commons-runtime:4.1.1" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: jakarta.inject:jakarta.inject-api:2.0.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:antlr4-runtime:4.10.1" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:3.0.4" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:3.0.4" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-orm:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-context:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-tx:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-beans:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.1" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-aspects:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-oauth2-client:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.4.6" level="project" /> + <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.4.6" level="project" /> + <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.19.0" level="project" /> + <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.19.0" level="project" /> + <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:2.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.33" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-config:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-expression:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: io.micrometer:micrometer-observation:1.10.5" level="project" /> + <orderEntry type="library" name="Maven: io.micrometer:micrometer-commons:1.10.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-oauth2-client:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-oauth2-core:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: com.nimbusds:oauth2-oidc-sdk:9.43.1" level="project" /> + <orderEntry type="library" name="Maven: com.github.stephenc.jcip:jcip-annotations:1.0-1" level="project" /> + <orderEntry type="library" name="Maven: com.nimbusds:content-type:2.2" level="project" /> + <orderEntry type="library" name="Maven: com.nimbusds:lang-tag:1.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-oauth2-jose:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: com.nimbusds:nimbus-jose-jwt:9.24.4" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-oauth2-resource-server:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-oauth2-resource-server:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-security:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-aop:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.security:spring-security-web:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.14.2" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:3.0.5" level="project" /> + <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:10.1.7" level="project" /> + <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.7" level="project" /> + <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:10.1.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-web:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:6.0.7" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.h2database:h2:2.1.214" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: com.mysql:mysql-connector-j:8.0.32" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:3.0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:3.0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:3.0.5" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.7.0" level="project" /> + <orderEntry type="library" name="Maven: net.minidev:json-smart:2.4.10" level="project" /> + <orderEntry type="library" name="Maven: net.minidev:accessors-smart:2.4.9" level="project" /> + <orderEntry type="library" name="Maven: org.ow2.asm:asm:9.3" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" level="project" /> + <orderEntry type="library" scope="RUNTIME" name="Maven: jakarta.activation:jakarta.activation-api:2.1.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.23.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.9.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:4.8.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.12.23" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.2" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:4.8.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-core:6.0.7" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-jcl:6.0.7" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:6.0.7" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.9.1" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework.security:spring-security-test:6.0.2" level="project" /> + <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.26" level="project" /> + </component> +</module> \ No newline at end of file diff --git a/api/database/localdb.mv.db b/api/database/localdb.mv.db new file mode 100644 index 0000000000000000000000000000000000000000..72d9f048bac533ab2f04d7b0ed090c910dc68ec0 GIT binary patch literal 65536 zcmeHQYiu0HeP15$$R%Y;wrts!9mkjRONuFacV>2Hmq-BJlRWWwr0$NQ2n4z8V^*R} zkt#{amXQ{2fEGv#Bwqp){ZJHbz9cQ$!YJ~gK!6%85EKpCq$t`CZi}EnfucZ>q90lW z?U(*%AGdptrIr$@hr0)YJF`1G^WWe8cjiAc|HtAynl-m}tas;`cWiHdz~*I1l4h;z zx3}M&x3pPniy7PV@~pMXjD2R$%No_0iXD|Wv(C=$O=BM_xx;q%Hg~ppd1s65Ti4m{ zyh;#}kV>b8^p_%#B9J1GB9J1GB9J1GB9J1GB9J1GB9J1GBJc<iSWM^tj}ZN|=@fw! zffRuhffRuhffRuhffRuhffRuhffRv<gMh!uPkbc+G`q#N=at!;#;tiB!{PmTVmZ?6 zHhX`6UdFSxjB9L<Cw6ys_UAFz6ObgwR%9}}zj+fB2M8smgRM{<050rU^8`_vKawBU zB~XQnLMAgN2r^{mUviI`ufOOXvn!v>zIayDOwF_n*_<?WTaq<X5T?E`_4HU~RuE;0 z*%GFPC}XNIW*|{kY{igdCdw2cT|=^nkgZ#WiYGyVftZRRB1JM4rkEl!O_LBC&e%{0 zn^4x#B+H~aBy5T>Mj|HIv29xyv5A;sNj4;?1*KF-FwCfGiA048CEF1Rbxg`ET_l>U zGKPq#Xc9KDBa4b|sD?x#VGxa23=*cKsusqOz`B8%Dk{vd3|TiIVIob_98qx;q*I1P z6){88u`H^pV-lcVR88Vo$c8hPL=9UtMJmgxiisvtWH`FSAc0jG8&H@MU5Co4NOi-u zDLfaoY{ju0B5Ja1Ng9zv%}{mO&}@#kt^s^rLgAO-jHBz0`zln~VO~NpEiVBizP7V_ zZSFdnyLo4Ce`lA?+2&mH_SV)FW9v4n82d)&?yW>+W(Vroe}C?Zr;fsGw=!PQ>ovoI zR_?wrP#79*?YtK>7nGV5d*9ztQJL2B;BWeI!|)h5FPrl?Z;(&-frsZxclTLwch|TZ z@aw|_<QN`yJnKH}G1QzH=QTe}c+$2G{=SdlB~L{)3lCL)l9x631&$sm#xt3WFqXXR zSi-Vds5fcZNhq65ST8S|J4D$Dkh3OVp84NQ=0(9Bxw%;7B|ye;6HM0KGZtYWR>8n; zDG0m6yrn1(KciD!vp^<b5<*PVAc1WLVwb2n6k9S#Et+E>1xZBIktI3UprVekWZNKM z={B-KMlnP~Hb9%y&_#nF8$=~lG*rbfsb-1>)ro9t>ZCzIKtYaZ=!{V=7a5igg%nFP zu_aj=lr^a>OGI%*Q^yvPBqiC)6Au9#FFTPCWL|bMVcDre(7?+krGb}CO2atxtmDGi z*pYv4kAH>v0ol<VlN&qR*Mi~r@qdJr!np&d2T2BoBggQOG<xJu@&B+wK@eX!`|snK zvqG@YAexL4;+T$TAz7Cd0tv-dH6|0$QVCYEWkJHgsznvirqr}xY!hKnWnfhS3DeYN z;!x3MhN@XG54Rmc`RFDxK59uOon#u);U_Y~gaMTjk@2xqRxu<9m25+U1Pq3TghWSz zQ50ik(m{$tG(&U<6d}4MIusTgptR^{vaT>#if{~A+fZc+31-0(fF(K%RxNasqzpQ8 zapKW(d_u8h%9~H}|Bsg5l!+b=6D7eJ4M;LDw`uH{ZCD_K72ajz*6XFM9kaz8w#&9H z_BvlcOPS}vC5I%h=0cKJv&{C5^sRWy#*d#o2VLzeXTO=vjd^<%6JPqo-J6)Y`lU0^ zpB01?KRdmV%bgL%GUM6Y#H2Vied4K^Q>UMO?#%NqyeNDw|K`<pwUaNms>M#VTUx6( zDtRQ6LcTEbt7G2T{93!(%GYc8=1M1Dy;^T~+WA7K+U^wc?P8;oe@jLZjN!;MU<9`< z#d#~gSZpum-(os48SGfthJ=}-@}b|B9WJR5Nw+j=!FB+Fy#mTqW-!?SSweRh%=je) z@`9|ql`mG7>&@5l`I$e-__UOZ<;7|x-zk<F)qG)ft<<QO3v-1or?GHuns56Q>Xkyi zR9~n!JNbobv)Y0utK>@?`AW4`TmyoO?R>pbZFcINjeNU$d9B(kN9$^Dv^&-1Zg8br zR#8dTHPXe^veqS3(YqQd)w)$pE@DMfOC?e*xZpI`8jV?xhU#*$-YDeDi^W#4+yVTq z6k8kh=E6CoDCY+Y*Xpfyr`s$pLp{mvSS_~O>nkmI(0i1hKL2|DwV7Y^(F>j_g53Q* zZM#!!b@J==&SGB9w}2PIteh`Z8!OF)cDJ+Ab>Gt)`OnQ%eF|1v^<_XJzf|3b5aFNg z!r87;$geab*Zfz@-|G1{^KZ=T1J41Tqd5RLrjjqOG~1n4k-z_tL&B51g$Nnv+?w<C zW~F*HQof(0w}1!#Cios=cyMtAm~e5WQ8^|))cJm2Nuyn`iI%#gR<3sSS`BwAic~9B zN~(s7`Vb!;#8lJg&mE38l2H(4h5_EdL%eYwc%z<}H{ko|<BbU9?pypk@W=b3`6Dcv zh)1BM!|_P9@HX(sZzScB?s9dx6n0rX>bjB6i}$yYE`@h-2V8EgG-A7t>GQLIGfRv! z@X=_Tdt?{-D4xw10_x6RfOqh%v3tCPpq@nU0;uVG7qLwr_z~-ccYxb(ChrNW6|GXM zV!c}|(^{8Qic(jTOU15K(`1F#XiXy;41tlZZ-~3IrxWxWbw1j3Hdd?0)Nd3^NGi&@ z+O1()>5`IE>XwjR?2@Wdk}+)G7ptX1_8Zw}57%)dBcTt<dkret=YXRxCFW=Zud0uw zBdEJwNA?Wx?FXaTHY}TnUwK=749kbE19=nf$UYCO^3!{WIqk)j)m4xpx($%Rx*)=| zHjasDG^#47LQ%IwWzr>Ttq3WsbTvt@(UL+z6sip|4Txstr7D-cR-iK~HV5UL^2%Bh zq()yh8|dEJYYPh?NE~oGjP2D*x3m%I1bu0%uSf9f_b>4eD{{m1`Roh8yI)P-4J1P% zo_Eo3uka$UZaXpSsso%mk_lWM7KD>Oe0zH$_q=fSrI$bR%4c7F^R08|KmYdZg}HYm z8DS!1&jOQwEv9oGRc|7G2Lcbr?rI_X5<sx!L$KDYgAhLSfvhccmt=VZuU0zk)}@6F zZCx*^mr3c;dh2S}71v^AMPK^ngJ(PMO4sMJFT<n%X3V2|GG_e49z;qZ@6ms*;I%sZ zr5|*6??JMk0YvWjhzts&wWTUuSeNisv?6s%?Z$Ggv`&`vHBvA86&!ZNb_I(bHm?9S z{}_W!_-*+jOFT>mkXgvrR$A5iLX%7W=lZ3GVZ;uoD16>lwN`EMxf@JJdlSJPwFO_U zZ?3q#Quea|?=Qr{Te^hEYNr9S;3c_!`3f$TJ1w-fL~+<$-{{e6CJ<!K^#q`PWM2hj z|Mn=5jiqn^*`6FW^gY#<V(SQ>awMqHDH!zW9-wampzp^5s$8we%Vhm3u1Qj*-d<d< zE-aQS%MHzMDp{x2*W>qn&2Is&pTyvLxQ?v06ie#>v{7nC@oa28;WH<P_Z+}`Hx}M% z=SqEPSzo@|xl+7(d84K3on>hamU6<T`uKGeBm-YzKi{4Qe1CF8_{I`DfN%IwjTD%m zQ@Hn2j|8|^@nEO$c>sAo7UcF~xlUJFl*qVKl`d-wol1o$Exdjxkb441AOF66g!~&z z=K#I|C8KyZwvO;wM?xEl#smHBEQqrojr-WfteEhdk4b(_HhCKmK^sMos$oH`xxl5+ zPJNj#Y%Q;zQ-@aUT70Z;f+P+QH&%+Ba|#|R1NU~;+Hos%zIgg@q+Y)<uLG;VdT7kk zfpmNUK8cF|+9Fb2WQg_8x{GyqKsNQ>s5haS0~X(lpHLOz<%q~y9XhORi3{0x;1M=s zzv{)+OGw=yt8z;tRjRHoVSR0(y3`7~&X`AvcK-ccr3BCU!<eqp#UuVfYfG`z41BxM z=0|<MvGw@hFFe)A?|0<TE(3r!VgaPBD>}N|TwSV2ON}c_>uU|Y+*ofckg%z~vB&3$ zUMK9%#`-!#1PK24ei4i%X8^&z_D4Y&TT%F2BO&ZnJUF^wfH7Ee8<yx7^v1?=bz!+t zx^lU5skOd(WvN_QQ5Im0k1s`cWB4%W#QS-WJO~fQQZj&G(DW$qV(SQ>W+Zr=IsC;h zx7P^7OF<aBp?q!f!gOTgN|0MOcCK$<ymr&r+?um?ZZ2Me?8+@;Z|}XGT^nY&sLgI} zZr#0j*SNm3!%NhwJl`uq6cx8^<IbiXR#LC<e6I-Abh38S*xfWPUf<adTB<MeGrdC4 zlydp{juF<fu(%UmhGx{u@3GC0j)ir$*}EH>pqF=z8<D$P#*N-(s5~dG?J-dG>m#Af z&-6+`8@Z|0%}pp2;;{_bUI}O>H{CWiZMGc}QZMp+uMD&W`-k6F{!^UmN4m|S-P_sD z*9?x}U37WD*tIqdKaZOY#{4u{ZQtD7zwYOh%gt-I@3P=Vb!FYyzUE(}t8E}KD47$R zOPe?SOS!3)^7Y<bx#`u??#_EbB|ze?`pv0#`bm@*`CLav?g8QD_S$N-#ZMvPp2A9a z3ajoZLc>!eC%Wg9+*Ei{$xXW_x&De;o|d3RS<c949N{b?Ijl@zb&^mKZk~c0r=dI) z6~3bGok0E6)!WxMclS|!)!5$O!}ZE8+uI|TE*aLlY+qSeH1<^}vBUOgy$v35_j2M= z`#tXRb~iV52`=pJ@8zcJ?RTLLsQ)8cdWuX7LvM3@keM@sA3(03O~(elpzJWK4>Hwc zKdX-5%!z(p=YYIQ@r=U3%gEy>i*k4ZPZE(#DbotST+sgcr0QNq<2Xxl%7i*eMZgpw z^$;y+KRPw$Z)u-A{rB#c_Nf~`K6^F?=7MvMAmqOC#s7GE?5yDC(F8w>Z12FlgX3Pp zZU#%<!7GUUlf*lzcn8%x7~aA34whSq;{I3N|J41jxtBGsMUA=VboZR@HKog5&TCP} z6Wa#ZEOx1T*f-2AHivyL$G-j8JW^)gWq0QT?ey6@#@2jbpBKH4Cb`eI(9<IA$$?wt z0~_>h{LZ*H?%ZPAon2#l5A4~%<MN(Y-R8E<-k+0E3?04(zDs|gG~Y)DxOsNnJ0DDk zXJQz=5yiFW>+`!U1_qW<Qjr?dqHi}if>iGrQ5>nh31aMx7<^ifd`5mFm@LNM7~i7F zEgNHRggWC|G*z&KjK47sRWNH+!E&<i#y2DUB*nAq8*VXB>jL$z;ZlKG=y|U)cJmhK zgN-a1Sf#!m)CX!}Zhe6|s!N=2IQyzw==Qd~)7ZH-H^}T3>c2kt)E4rd4T$C%_QO;M zv_v_QkO9ywJbYtd!5ZaAGWZb(H-bS6w`}o1_YF<@Zq#F1^etgxZ&Zc=@k!-3g5^x# zjUaw~_X|IG2KraG-<s>raBSy-4?mhiYF|!^=CIV4>$^t!t`QV1NoZeAkLDElDVG-i zJ)H<Lz(2h-aEaT0%?<Wn-mPBu>$mS^WZ7%O&-s*kIfSCO;b=iZqL=6?mzez?L!Wf> zJ&x?pqA`@gQU;R@Rx()4U?YRg47M`5oY7H6$7A}KI;M@`F(reX42IG;gY1khWe^*q z8O_dU49sI*`@$ce7ETGGYhFJGmQQ{H1qnQP6EyhdHth*+Nk1oh2Q=yCknJCte{{Sf zmi(h%4ii7G_(#>NM*00Q->zTs?fP}!u77Lu4rq72KQGPl)T(REFS*wKn&n&jTT)=< zFZovfu93gwD5}!4@<(7Lj^x?f+qd_4K!CvN-^&;GgFys7pgTca0LgO%AW?mG$FgqU zGPbR|^A7y}Fd#OFMBuo@$}Wiq601U#0?#u+kLG}6%_SOv?N{KKz$KaXk!(xM&qqj( zgfc)b$qKR}6if0)0lnA<R|Yh}YXUxqVCJHW3^kxQ@TEWliY-ntwP{E(xKaoyOa?M` zDMmz>BP3I2On%Du)xac!;2<L*OH+c3EtwMQWmH8odKrxot(P$j3-vOlVyV51Wn1Ar zjv-0G6(-5yJ*uK;+;78&AkP1acjPV{An&?xfFrnYfWGdcFtPT_-jS<MLLSs7L3i?^ zFmvK096uCh*ssCyV`1hSi-Pc!Ak6&UpTQB%fA0s7fxo}{OZazDnE4;5e&$2r<QQBB z*AXYD%ifX8u#g8C7LI~&>hGR&kLkY@ffRuhffRuhffRuhffRuhffRuhf#X16$p2n% zzD&Y6dM5a!121wKx1>7S-?ZPp;!kC%JCjB3ih%F`PX<qQ-YlE>3j@KF6->t9N06fT z)&-~vCgpZG=~vwOs0{Axj*4!+xATf{L-1_tE(!vM$sx=qL)*F&|1y@^)}^*}piy&l zmW1)D<Yd@>Dz&XU5*yECmTd#-Vvm(=9Z`nt3{u-VJ`nWln#UNQ1X|NEms8uiVV$3- z8enQ$_vG5vjTlr?+q%@YuGvX#>wE)C-?nb-#?0wVs*o7!L>`+$;#l$2x5ww6i>Q9i zoILgPGp^GTL4K@M6LT}Ieoe{T$$m}A+^LAFWbWxcUCG=t{mPQL(@|~7+_U}alFvoe zCC~J!OFloOE_v!F*@vqx`TbMh&Y|cl12;4NOB3XyQ-;i)@aoDv<!M&tW<1r(+(}=z zGIxqASLUAfv@3JZ`0ACXd+L?X2I`g11?rXKuRPnF7^Ojh0}Tq2YET3k6i=W=!gm5C ziowVefrbj!&8U(J*G_rBkQ778DI{E{3Zqm+^d?LRR3gYdbSK<3FpM0+btk-xrdweK z94!s$PI$!}HKJm1Pu&Uk9<HzfYh9oVA<TNZ5$^IA=tPXa({yzr#=rj8u1>`GClJ5@ zbRow78+0V#mwn?~@IQ6o_TVnu9)ApzIGIcR|0O}`$lrC6MpOTP_Xr7d<ZtE3D}=5# z_5bIaF{b|i20aX>{{MUrkrA8X)c>F7hBEd47w;qT)9C+iX#c&p|F1;${|!^JWSbq; z9(q_$u>Y_2*$K$e$(Dos?SI4H{_h3<b9L-t>Z5?3ydV6J>K1asX%#5nL-0RGCSi*Y zn)3GlH~szp4@d3)|7*JcpZeD2zLOuu{y$26>mHN4m?wY#9}Vk<r2GGT07&=$5Aubb z`qq6Q-|)#C+a5}9=wbWT9Wkh+`~T_wf4cwQbFl31|7X@u&Sr#@Jwt1Vv333S_PcYI za;&?9PtNYu?*#j7gBsq!J{tia6`?ISiO&4)NAr7VlT8U{gP}5bWRs2H$7F*ouoxe; z!3OKO<L|V<=hBhy|NHa*aQ@w!|ErPtziGj|n#m73cOJe!nEz9M{%^SY|2`Kezzpxt z69o3{u9bbD{|`=PxSN7`3_;-GXJfr*0H6@nu)$40?<uIe0)RCM4L5#YXZZYI70Lnx z#|6Frj|G7nkHgV59)}|skI%mNvKOBg!qx;~`M^Nn3scXIWo89YmY6MJ2vjR$sxf9D zF>p^KLI8UNwidF8kgZ#WiYI+HCL)5sdkRxb5t$GpkJyHYY$${wJS{}ikt~zykgzF_ z2O?sE9f*yqi`YaEMGr#kVUt==N`(Z&jH;FhRu!fqLC`%y9g{Lk7l|gT5Y(24fqx+} z@NOb12GNMcWKl6CRkbjN1lA4AR8jGL13|)b&Lb+YAOkL9u&5#i(R;8gs;Xl`Odmy5 zP2yO{hBKB#4O=xuDnq~@Of-=q!_g%M39QN(g8zw>=sHwRMXDRNP2styWh)MZ*A)Zr zDWYbmx@>4}7+_rk_&D&cGaWbK=sHC9<vwe`OOBTSuQy%-NKCRDmZZ#~_HU9!&6|Yn zbN`owg0#%RvA;j9_#6Z0Wpf_i4f3fQYq)fGpA~m^jk`g>;fD$AF+A*e)_vGxs5vvv zYkrvUq-`DC2OPsop5oF#@H<rfNnY0A7YH#jTRZOsU*79A@V~dSdv_c{rwa+gxAU@N z3Cm^=QFao_W)s%S%jOPIb^_$A$(Lt-p2@r@xFa`&DmJ|Y$T)6-$+~;S^^(TVSPH`K zFz<RXgEKnSHSmI^LAYYXGz}8i<}r&!&7s(mHINc~e}SS7rmhY)sHkIzTx^4YrQ65` z8O0C{*+42abkQKl22n{B16PKk;k#v<G$;rt$Po>lF)HhD6Zn8q42WfHVoS0#%@j>) z^GM2$XzJKPlB6Vi(c&S1<7Fojg3QZKCM-L32pV|Vq%`odNog2|o^@Op8$0sv?eVWL zKM<PL9g`d20yyXt9{)#3DSQl7K$DC{>5F>|Uz{L_zjc<4XI>V9g$B`Nln}>sM2kn& zRfscbA($D<mS`!qsxcYXC{==0Y{41Tz^X+R(Wcb2V2l%OU51H0%%fqHWmIQy#xx-~ zuR}$f8LDQ%#N2iW<-?uG_%J4!bdqUEho2aDU=<l3TxAtQf=~&9_(H<gR6|0dBf+qW zu`=l(#UYv@2A*F<2=EKu8(_79M+H_GtW7uuEOw|eg#@!;O~4W%oUml+Ci!%5?5E=? z4%IUxly#;8sX8?p*kzAl$8)H6{z%w7Nu#M1LK2jY{9Pw$G_^wbbXXxwWIazwANrb- z9}5$|^rbV;pXG5$U-++F8kaPUOWF&T6b8-=Px092eSx9UxTI-ZQV4|wN@^p6M~w_# zmc}K8=wXp?eFwxh^<#5EEY{@krg2G!L%F4KNt^8<CDYncY)sKZ#FdM!;~u;l7gsKu z#wAVTlBRJ<)3~H_g)}ZHSS<|?W(gvBjtcJ@1PARG;6IgdNzZRiq;9|-iW{)EzcZP- z0ecWPU~hjSK3q3ovu{sNC5@W;{n<OyPpHc<;iK6<J@I5kWWDgaPaPDI^}<(Y?h%po z!k15a5m`SLPP});RfK-(N2}3@tmi&B^#~)fCWyfbe!b>&FY2qVq!C#mAZ-xua3HAU z$WXK+LdvEQS<{HD2Sj8|BdX2^%7XpDXNO|3s{Pl8g43$tiSN6p%_Cl?5n1OR(}=7( z$><Q@eEc)?i_b*-iH3%PfyJPDtQLdc3+(XX{9Q(^@Vtnue*6_;IfF4n<(>-`Zhs{? zwjzfSScvIhs~6_fGsp_Uo<_o)s-cb6NavS4GOI-YC?Gq|d@z>m`!^n(2c;=)MRqXJ zBaI2E^V<Qzp+y~!%^C)i1(UUiz2k#=x*0NejKJD+eiN~FloZ$6(Y2d1Rc7%}tZpU< z#p-4Z2-eCyh<X{&rw%i=X>oU=-W5k9JQS;&F(uHD?qx8FWE9ZZ>RnOQ@E(;?DPbtq z_dp9A+>XNDF}N4KC``*<2-fLe|Ay;sbow9u!VSSX{qvIRcJ##fB?!3+mk>W*6i$2@ z_MagH>j?+0L&((=+kfsIxzGxE5L)2~MRe|_H2tLrqzI%4qzI%4e995<?f*mj`-tVd zv&HtU>uh)4w3%fQ$+$0r`2%kX?Ef|2{+~tT|9STRvJ^M~1U~?`jB9KUBHerT|6n@> zKkflA5I?!(=4d#SEj2Fyprjua@!aC?72%ra{|`aNjsF*FwVn9ciGNG||E2!_QvZK} z{zo_Ut^0_4>!$wyLOs&u>T;>t3S32o=ed4qslHHecJc!*+0yub8~LT`#<_lHiL?1a z08ASHuU;<971|r^PIbB4u3lcNHp|s+>i@60(M4JzKco`U<q9E%bFS~S?3w%<GanQi zooXxJDV7@5h<a+MsFyERD*4b&d!$Tw(rwF+Jn1nkeA5T>CQz4sKA)fYX{OwA2kLUM zya-Mo2MK8}uB@)sn+x4Wz1?&Db}Rt}G^#47LQ%IwWzr>Ttq3WsbTvt@(UL-|WvvE^ z@GH<utu-2c7(Sr6yj0~K*vd+yT5JwoUs-E*;<~r?+QLE=I5+-wz`k1PmNvR!ADPDg z>yQ68{!gdAlM$XC;s39<tREz3y1q{%E74Er`u-o>Ykfbuy5F~tavy%|z14khKZ4I{ zhgSP(IME%s+E06qBEtzj-;N;e7Q`}m*TZ1L9o>)cHzXdw_1-~5hTixhoZwF4(c`f% z;jJjdggJxB{`fnc-M!77ZDwCFwr;b|-CHd1!;{3Q@yIPHQ~Uord*B3#&4F*E=IyO5 z_pLlR&QKl+&m1`u9;(9B{(r!S&y&fyhkECagw2yQn%e&-LFvffb&^I?`~TGb|Baci zjg4L*7&S3Zv{nFit%qAGPz%|Y@}Ha8@)ru$nsr#_88VSsTk0;!@&;b5blR;;3me+H zUQ#cU(xvs*Ro^NRR>AugL;^$Q)c!wQj13lP`<ER1&4*I^|J43Jwg1O8NvhP_i|f^e z#d2l20n4qml~%RB(Dar-qic7=YoVe2zrX(<?!Wi;|Fww!e@DiaA~^?c<=@xE>Hh;u Cd-v7= literal 0 HcmV?d00001 diff --git a/api/database/localdb.trace.db b/api/database/localdb.trace.db new file mode 100644 index 0000000..2dc86ca --- /dev/null +++ b/api/database/localdb.trace.db @@ -0,0 +1,163 @@ +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (1, 1, 'OWNER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (1, 2, 'MEMBER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (2, 3, 'OWNER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (2, 4, 'MEMBER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (3, 5, 'OWNER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (3, 6, 'MEMBER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (4, 7, 'OWNER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (4, 8, 'MEMBER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (5, 9, 'OWNER') [42102-214] +2023-04-20 13:36:10 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (5, 10, 'MEMBER') [42102-214] +2023-04-20 13:37:12 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "[*]HOUSEHOLD_MEMBER ITEM HOUSEHOLD_MEMBER HOUSEHOLD"; expected "HELP"; SQL statement: +HOUSEHOLD_MEMBER ITEM HOUSEHOLD_MEMBER HOUSEHOLD [42001-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (1, 1, 'SUPERUSER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (1, 2, 'USER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (2, 3, 'SUPERUSER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (2, 4, 'USER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (3, 5, 'SUPERUSER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (3, 6, 'USER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (4, 7, 'SUPERUSER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (4, 8, 'USER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (5, 9, 'SUPERUSER') [42102-214] +2023-04-20 13:46:14 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "HOUSEHOLDMEMBER" not found; SQL statement: +INSERT INTO HouseholdMember (household_id, user_id, role) VALUES (5, 10, 'USER') [42102-214] +2023-04-21 14:24:07 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "type test" not found; SQL statement: +INSERT INTO ITEM_TYPE VALUES(1, "type test") [42122-214] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) + at org.h2.message.DbException.get(DbException.java:223) + at org.h2.message.DbException.get(DbException.java:199) + at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:244) + at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:226) + at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213) + at org.h2.command.dml.Insert.doPrepare(Insert.java:300) + at org.h2.command.dml.DataChangeStatement.prepare(DataChangeStatement.java:37) + at org.h2.command.Parser.prepareCommand(Parser.java:575) + at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) + at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) + at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) + at org.h2.server.web.WebApp.getResult(WebApp.java:1339) + at org.h2.server.web.WebApp.query(WebApp.java:1137) + at org.h2.server.web.WebApp.query(WebApp.java:1113) + at org.h2.server.web.WebApp.process(WebApp.java:244) + at org.h2.server.web.WebApp.processRequest(WebApp.java:176) + at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129) + at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:563) + at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at no.freshify.api.security.JwtTokenFilter.doFilterInternal(JwtTokenFilter.java:66) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:219) + at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191) + at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352) + at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) + at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) + at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) + at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) + at java.base/java.lang.Thread.run(Thread.java:833) +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Shirt') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Pants') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Dress') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Jacket') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Hat') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Shoes') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Socks') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Sweater') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Shorts') [42102-214] +2023-04-21 14:25:36 jdbc[13]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEMTYPE" not found; SQL statement: +INSERT INTO ItemType (name) VALUES ('Skirt') [42102-214] diff --git a/api/target/classes/application-dev.properties b/api/target/classes/application-dev.properties new file mode 100644 index 0000000..7fa9ec4 --- /dev/null +++ b/api/target/classes/application-dev.properties @@ -0,0 +1,12 @@ +spring.h2.console.enabled=true +spring.h2.console.path=/h2-ui + +spring.datasource.url=jdbc:mysql://127.0.0.1:56000/freshify_dev +spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver +spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect +spring.jpa.hibernate.ddl-auto=update +spring.datasource.username=root +spring.datasource.password=freshify +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect + +jwt.secret=abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz \ No newline at end of file diff --git a/api/target/classes/application.properties b/api/target/classes/application.properties new file mode 100644 index 0000000..cbb42d2 --- /dev/null +++ b/api/target/classes/application.properties @@ -0,0 +1 @@ +spring.profiles.active=dev diff --git a/api/target/classes/insert_item_types.sql b/api/target/classes/insert_item_types.sql new file mode 100644 index 0000000..3b5baf1 --- /dev/null +++ b/api/target/classes/insert_item_types.sql @@ -0,0 +1,998 @@ +USE freshify_dev; +START TRANSACTION; +INSERT INTO item_type (name) VALUES ('Åbor'); +INSERT INTO item_type (name) VALUES ('Adzukibønner'); +INSERT INTO item_type (name) VALUES ('Agurk'); +INSERT INTO item_type (name) VALUES ('Agurker'); +INSERT INTO item_type (name) VALUES ('Agurksalat'); +INSERT INTO item_type (name) VALUES ('Aioli'); +INSERT INTO item_type (name) VALUES ('Ajvar'); +INSERT INTO item_type (name) VALUES ('Akkar'); +INSERT INTO item_type (name) VALUES ('Ål'); +INSERT INTO item_type (name) VALUES ('Alaska pollock'); +INSERT INTO item_type (name) VALUES ('Alfalfaspirer'); +INSERT INTO item_type (name) VALUES ('Alkoholholdige drikkevarer'); +INSERT INTO item_type (name) VALUES ('Amaranth'); +INSERT INTO item_type (name) VALUES ('Ananas'); +INSERT INTO item_type (name) VALUES ('Ananasjuice'); +INSERT INTO item_type (name) VALUES ('And'); +INSERT INTO item_type (name) VALUES ('Andre kaker o.l.'); +INSERT INTO item_type (name) VALUES ('Anisfrø'); +INSERT INTO item_type (name) VALUES ('Ansjos'); +INSERT INTO item_type (name) VALUES ('Appelsin'); +INSERT INTO item_type (name) VALUES ('Appelsinjuice'); +INSERT INTO item_type (name) VALUES ('Appelsinmarmelade'); +INSERT INTO item_type (name) VALUES ('Appelsinsaft'); +INSERT INTO item_type (name) VALUES ('Appelsinskall'); +INSERT INTO item_type (name) VALUES ('Aprikos'); +INSERT INTO item_type (name) VALUES ('Aprikossyltetøy'); +INSERT INTO item_type (name) VALUES ('Aronia'); +INSERT INTO item_type (name) VALUES ('Artiskokk'); +INSERT INTO item_type (name) VALUES ('Asparges'); +INSERT INTO item_type (name) VALUES ('Aspargesbønner'); +INSERT INTO item_type (name) VALUES ('Aspargessuppe'); +INSERT INTO item_type (name) VALUES ('Aubergine'); +INSERT INTO item_type (name) VALUES ('Avokado'); +INSERT INTO item_type (name) VALUES ('Avokado- og kikertpålegg'); +INSERT INTO item_type (name) VALUES ('Babygulrot'); +INSERT INTO item_type (name) VALUES ('Babymais'); +INSERT INTO item_type (name) VALUES ('Babyspinat'); +INSERT INTO item_type (name) VALUES ('Baconcrisp'); +INSERT INTO item_type (name) VALUES ('Baconost'); +INSERT INTO item_type (name) VALUES ('Baconpostei '); +INSERT INTO item_type (name) VALUES ('Bagels'); +INSERT INTO item_type (name) VALUES ('Baguett'); +INSERT INTO item_type (name) VALUES ('Baguette'); +INSERT INTO item_type (name) VALUES ('Bakepulver'); +INSERT INTO item_type (name) VALUES ('Balsamicoeddik'); +INSERT INTO item_type (name) VALUES ('Bambusskudd'); +INSERT INTO item_type (name) VALUES ('Banan'); +INSERT INTO item_type (name) VALUES ('Bananchips'); +INSERT INTO item_type (name) VALUES ('Banankake'); +INSERT INTO item_type (name) VALUES ('Bankekjøtt'); +INSERT INTO item_type (name) VALUES ('Barnemat'); +INSERT INTO item_type (name) VALUES ('Basilikum'); +INSERT INTO item_type (name) VALUES ('Bayonneskinke'); +INSERT INTO item_type (name) VALUES ('Belgfrukter'); +INSERT INTO item_type (name) VALUES ('Berlinerbolle'); +INSERT INTO item_type (name) VALUES ('Berlinerkrans'); +INSERT INTO item_type (name) VALUES ('Bernaisesaus'); +INSERT INTO item_type (name) VALUES ('Betasuppe'); +INSERT INTO item_type (name) VALUES ('Bidos'); +INSERT INTO item_type (name) VALUES ('Biff stroganoff'); +INSERT INTO item_type (name) VALUES ('Biscotti'); +INSERT INTO item_type (name) VALUES ('Bjørnebær'); +INSERT INTO item_type (name) VALUES ('Bjørnebærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Blåbær'); +INSERT INTO item_type (name) VALUES ('Blåbærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Bladsalat'); +INSERT INTO item_type (name) VALUES ('Blåkveite'); +INSERT INTO item_type (name) VALUES ('Blålange'); +INSERT INTO item_type (name) VALUES ('Blåskjell'); +INSERT INTO item_type (name) VALUES ('Blod'); +INSERT INTO item_type (name) VALUES ('Blodpudding'); +INSERT INTO item_type (name) VALUES ('Blokkebær'); +INSERT INTO item_type (name) VALUES ('Blomkål'); +INSERT INTO item_type (name) VALUES ('Blomkål/brokkolisuppe'); +INSERT INTO item_type (name) VALUES ('Blomkålsuppe'); +INSERT INTO item_type (name) VALUES ('Bløtkake'); +INSERT INTO item_type (name) VALUES ('Bogskinke'); +INSERT INTO item_type (name) VALUES ('Bokhvete'); +INSERT INTO item_type (name) VALUES ('Bokhvetemel'); +INSERT INTO item_type (name) VALUES ('Bolle'); +INSERT INTO item_type (name) VALUES ('Bondebønner'); +INSERT INTO item_type (name) VALUES ('Bønnegryte'); +INSERT INTO item_type (name) VALUES ('Bønnekarbonader'); +INSERT INTO item_type (name) VALUES ('Bønne- og olivensalat'); +INSERT INTO item_type (name) VALUES ('Bønner'); +INSERT INTO item_type (name) VALUES ('Bønnespirer'); +INSERT INTO item_type (name) VALUES ('Borlottibønner'); +INSERT INTO item_type (name) VALUES ('Bouillabaisse'); +INSERT INTO item_type (name) VALUES ('Breiflabb'); +INSERT INTO item_type (name) VALUES ('Brelett'); +INSERT INTO item_type (name) VALUES ('Bremykt'); +INSERT INTO item_type (name) VALUES ('Brennesle'); +INSERT INTO item_type (name) VALUES ('Brennevin'); +INSERT INTO item_type (name) VALUES ('Brie'); +INSERT INTO item_type (name) VALUES ('Bringebær'); +INSERT INTO item_type (name) VALUES ('Bringebærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Brioche'); +INSERT INTO item_type (name) VALUES ('Brisling'); +INSERT INTO item_type (name) VALUES ('Brød'); +INSERT INTO item_type (name) VALUES ('Brødvarer'); +INSERT INTO item_type (name) VALUES ('Brokkoli'); +INSERT INTO item_type (name) VALUES ('Brokkolisuppe'); +INSERT INTO item_type (name) VALUES ('Brønnkarse'); +INSERT INTO item_type (name) VALUES ('Brosme'); +INSERT INTO item_type (name) VALUES ('Brownies'); +INSERT INTO item_type (name) VALUES ('Brune bønner'); +INSERT INTO item_type (name) VALUES ('Brune pinner'); +INSERT INTO item_type (name) VALUES ('Brunost'); +INSERT INTO item_type (name) VALUES ('Brun saus'); +INSERT INTO item_type (name) VALUES ('Brus'); +INSERT INTO item_type (name) VALUES ('Bulgurgryn'); +INSERT INTO item_type (name) VALUES ('Buljongpulver'); +INSERT INTO item_type (name) VALUES ('Butterdeig'); +INSERT INTO item_type (name) VALUES ('Byggmel'); +INSERT INTO item_type (name) VALUES ('Byggryn'); +INSERT INTO item_type (name) VALUES ('Byggrynsgrøt'); +INSERT INTO item_type (name) VALUES ('Cæsardressing'); +INSERT INTO item_type (name) VALUES ('Cæsarsalat'); +INSERT INTO item_type (name) VALUES ('Café au lait'); +INSERT INTO item_type (name) VALUES ('Caffe latte'); +INSERT INTO item_type (name) VALUES ('Caffe mocca'); +INSERT INTO item_type (name) VALUES ('Camembert'); +INSERT INTO item_type (name) VALUES ('Cappucino'); +INSERT INTO item_type (name) VALUES ('Carambola'); +INSERT INTO item_type (name) VALUES ('Cashewnøtter'); +INSERT INTO item_type (name) VALUES ('Cashewnøttpålegg'); +INSERT INTO item_type (name) VALUES ('Chapatti'); +INSERT INTO item_type (name) VALUES ('Chayote'); +INSERT INTO item_type (name) VALUES ('Cheddar'); +INSERT INTO item_type (name) VALUES ('Cheddarsaus'); +INSERT INTO item_type (name) VALUES ('Cheeseburger'); +INSERT INTO item_type (name) VALUES ('Cherimoya'); +INSERT INTO item_type (name) VALUES ('Cherrytomat'); +INSERT INTO item_type (name) VALUES ('Chevre'); +INSERT INTO item_type (name) VALUES ('Chiafrø'); +INSERT INTO item_type (name) VALUES ('Chiapudding'); +INSERT INTO item_type (name) VALUES ('Chili'); +INSERT INTO item_type (name) VALUES ('Chili con carne'); +INSERT INTO item_type (name) VALUES ('Chilinøtter'); +INSERT INTO item_type (name) VALUES ('Chilipulver'); +INSERT INTO item_type (name) VALUES ('Chilisaus'); +INSERT INTO item_type (name) VALUES ('Chorizo'); +INSERT INTO item_type (name) VALUES ('Ciabatta'); +INSERT INTO item_type (name) VALUES ('Cider'); +INSERT INTO item_type (name) VALUES ('Coleslaw'); +INSERT INTO item_type (name) VALUES ('Corn flakes'); +INSERT INTO item_type (name) VALUES ('Cortado'); +INSERT INTO item_type (name) VALUES ('Cottage Cheese'); +INSERT INTO item_type (name) VALUES ('Couscous'); +INSERT INTO item_type (name) VALUES ('Crabsticksalat'); +INSERT INTO item_type (name) VALUES ('Crème Chérie'); +INSERT INTO item_type (name) VALUES ('Crème Fraîche'); +INSERT INTO item_type (name) VALUES ('Croissant'); +INSERT INTO item_type (name) VALUES ('Cupcakes'); +INSERT INTO item_type (name) VALUES ('Daddel'); +INSERT INTO item_type (name) VALUES ('Daimkake'); +INSERT INTO item_type (name) VALUES ('Delfiakake'); +INSERT INTO item_type (name) VALUES ('Dessert'); +INSERT INTO item_type (name) VALUES ('Dessert-topping på boks'); +INSERT INTO item_type (name) VALUES ('Dessertvin'); +INSERT INTO item_type (name) VALUES ('Dill'); +INSERT INTO item_type (name) VALUES ('Dipsaus'); +INSERT INTO item_type (name) VALUES ('Donuts'); +INSERT INTO item_type (name) VALUES ('Dressing'); +INSERT INTO item_type (name) VALUES ('Drikke'); +INSERT INTO item_type (name) VALUES ('Drue'); +INSERT INTO item_type (name) VALUES ('Druejuice'); +INSERT INTO item_type (name) VALUES ('Edamamebønner'); +INSERT INTO item_type (name) VALUES ('Edamer'); +INSERT INTO item_type (name) VALUES ('Eddik'); +INSERT INTO item_type (name) VALUES ('Egg'); +INSERT INTO item_type (name) VALUES ('Eggedosis'); +INSERT INTO item_type (name) VALUES ('Eggehvite'); +INSERT INTO item_type (name) VALUES ('Eggekrem'); +INSERT INTO item_type (name) VALUES ('Eggeplomme'); +INSERT INTO item_type (name) VALUES ('Eggerøre'); +INSERT INTO item_type (name) VALUES ('Eggesalat'); +INSERT INTO item_type (name) VALUES ('Elg'); +INSERT INTO item_type (name) VALUES ('Endivesalat'); +INSERT INTO item_type (name) VALUES ('Energidrikk'); +INSERT INTO item_type (name) VALUES ('Eple'); +INSERT INTO item_type (name) VALUES ('Eplecidereddik'); +INSERT INTO item_type (name) VALUES ('Eplejuice'); +INSERT INTO item_type (name) VALUES ('Eplekake'); +INSERT INTO item_type (name) VALUES ('Eplemos'); +INSERT INTO item_type (name) VALUES ('Eplenektar'); +INSERT INTO item_type (name) VALUES ('Eplepai'); +INSERT INTO item_type (name) VALUES ('Erter'); +INSERT INTO item_type (name) VALUES ('Ertestuing'); +INSERT INTO item_type (name) VALUES ('Espresso'); +INSERT INTO item_type (name) VALUES ('Estragon'); +INSERT INTO item_type (name) VALUES ('Falafel'); +INSERT INTO item_type (name) VALUES ('Falukorv'); +INSERT INTO item_type (name) VALUES ('Fårepølse'); +INSERT INTO item_type (name) VALUES ('Fårikål av lammekjøtt'); +INSERT INTO item_type (name) VALUES ('Feltsalat'); +INSERT INTO item_type (name) VALUES ('Fenalår'); +INSERT INTO item_type (name) VALUES ('Fennikel'); +INSERT INTO item_type (name) VALUES ('Fennikelfrø'); +INSERT INTO item_type (name) VALUES ('Fersken'); +INSERT INTO item_type (name) VALUES ('Feta'); +INSERT INTO item_type (name) VALUES ('Fet fisk'); +INSERT INTO item_type (name) VALUES ('Fiken'); +INSERT INTO item_type (name) VALUES ('Filodeig'); +INSERT INTO item_type (name) VALUES ('Fiskeboller'); +INSERT INTO item_type (name) VALUES ('Fiskeburger'); +INSERT INTO item_type (name) VALUES ('Fiskefarse'); +INSERT INTO item_type (name) VALUES ('Fiskegrateng'); +INSERT INTO item_type (name) VALUES ('Fiskegryte'); +INSERT INTO item_type (name) VALUES ('Fiskekaker'); +INSERT INTO item_type (name) VALUES ('Fiskekarbonader'); +INSERT INTO item_type (name) VALUES ('Fiskepaté'); +INSERT INTO item_type (name) VALUES ('Fiskepinner'); +INSERT INTO item_type (name) VALUES ('Fiskeprodukter og fiskepålegg'); +INSERT INTO item_type (name) VALUES ('Fiskepudding'); +INSERT INTO item_type (name) VALUES ('Fiskesuppe'); +INSERT INTO item_type (name) VALUES ('Fisk og fiskeprodukter'); +INSERT INTO item_type (name) VALUES ('Fisk og skalldyr'); +INSERT INTO item_type (name) VALUES ('Fjørfe'); +INSERT INTO item_type (name) VALUES ('Fjørfe '); +INSERT INTO item_type (name) VALUES ('Fjørfe og kjøtt'); +INSERT INTO item_type (name) VALUES ('Flatbrød'); +INSERT INTO item_type (name) VALUES ('Fleskepølse'); +INSERT INTO item_type (name) VALUES ('Floradix'); +INSERT INTO item_type (name) VALUES ('Fløte'); +INSERT INTO item_type (name) VALUES ('Fløtegratinerte poteter'); +INSERT INTO item_type (name) VALUES ('Fløtemysost'); +INSERT INTO item_type (name) VALUES ('Fløyelsgrøt'); +INSERT INTO item_type (name) VALUES ('Focaccia'); +INSERT INTO item_type (name) VALUES ('Formkake'); +INSERT INTO item_type (name) VALUES ('Frityrolje'); +INSERT INTO item_type (name) VALUES ('Frokostkorn'); +INSERT INTO item_type (name) VALUES ('Frokostsalat'); +INSERT INTO item_type (name) VALUES ('Fromasj'); +INSERT INTO item_type (name) VALUES ('Fruktcocktail'); +INSERT INTO item_type (name) VALUES ('Fruktmüsli'); +INSERT INTO item_type (name) VALUES ('Frukt og bær'); +INSERT INTO item_type (name) VALUES ('Fruktpuré'); +INSERT INTO item_type (name) VALUES ('Fruktsaus'); +INSERT INTO item_type (name) VALUES ('Fruktsmoothie'); +INSERT INTO item_type (name) VALUES ('Fruktstang'); +INSERT INTO item_type (name) VALUES ('Fruktsuppe'); +INSERT INTO item_type (name) VALUES ('Fyrstekake'); +INSERT INTO item_type (name) VALUES ('Gaffelbiter'); +INSERT INTO item_type (name) VALUES ('Galiamelon'); +INSERT INTO item_type (name) VALUES ('Gamalost'); +INSERT INTO item_type (name) VALUES ('Gås'); +INSERT INTO item_type (name) VALUES ('Geitmelk'); +INSERT INTO item_type (name) VALUES ('Geitost'); +INSERT INTO item_type (name) VALUES ('Gelatin'); +INSERT INTO item_type (name) VALUES ('Gelé'); +INSERT INTO item_type (name) VALUES ('Geléfrukt'); +INSERT INTO item_type (name) VALUES ('Ghee'); +INSERT INTO item_type (name) VALUES ('Gjær'); +INSERT INTO item_type (name) VALUES ('Gjedde'); +INSERT INTO item_type (name) VALUES ('Gomme'); +INSERT INTO item_type (name) VALUES ('Gorgonzola'); +INSERT INTO item_type (name) VALUES ('Goro'); +INSERT INTO item_type (name) VALUES ('Goudaost'); +INSERT INTO item_type (name) VALUES ('Gräddost'); +INSERT INTO item_type (name) VALUES ('Granateple'); +INSERT INTO item_type (name) VALUES ('Granola'); +INSERT INTO item_type (name) VALUES ('Grapefrukt'); +INSERT INTO item_type (name) VALUES ('Grapefruktjuice'); +INSERT INTO item_type (name) VALUES ('Gresskar'); +INSERT INTO item_type (name) VALUES ('Gresskarsuppe'); +INSERT INTO item_type (name) VALUES ('Gressløk'); +INSERT INTO item_type (name) VALUES ('Grillpølse'); +INSERT INTO item_type (name) VALUES ('Grønnkål'); +INSERT INTO item_type (name) VALUES ('Grønnsaker'); +INSERT INTO item_type (name) VALUES ('Grønnsaksblanding'); +INSERT INTO item_type (name) VALUES ('Grønnsaksgryte'); +INSERT INTO item_type (name) VALUES ('Grønnsakspostei'); +INSERT INTO item_type (name) VALUES ('Grønnsaksprodukter'); +INSERT INTO item_type (name) VALUES ('Grønnsaksrøre'); +INSERT INTO item_type (name) VALUES ('Grøt '); +INSERT INTO item_type (name) VALUES ('Grovbakstmel'); +INSERT INTO item_type (name) VALUES ('Gruyere'); +INSERT INTO item_type (name) VALUES ('Gryn'); +INSERT INTO item_type (name) VALUES ('Grytebasis'); +INSERT INTO item_type (name) VALUES ('Guacamole'); +INSERT INTO item_type (name) VALUES ('Guava'); +INSERT INTO item_type (name) VALUES ('Gudbrandsdalsost'); +INSERT INTO item_type (name) VALUES ('Gulasj'); +INSERT INTO item_type (name) VALUES ('Gulløl'); +INSERT INTO item_type (name) VALUES ('Gulost'); +INSERT INTO item_type (name) VALUES ('Gulrot'); +INSERT INTO item_type (name) VALUES ('Gulrotkake'); +INSERT INTO item_type (name) VALUES ('Gulrotsuppe'); +INSERT INTO item_type (name) VALUES ('Gurkemeie'); +INSERT INTO item_type (name) VALUES ('Håbrann'); +INSERT INTO item_type (name) VALUES ('Halloumi'); +INSERT INTO item_type (name) VALUES ('Hamburger'); +INSERT INTO item_type (name) VALUES ('Hamburgerbrød'); +INSERT INTO item_type (name) VALUES ('Hare'); +INSERT INTO item_type (name) VALUES ('Hasselnøtter'); +INSERT INTO item_type (name) VALUES ('Havål'); +INSERT INTO item_type (name) VALUES ('Havre'); +INSERT INTO item_type (name) VALUES ('Havrebasert drikke'); +INSERT INTO item_type (name) VALUES ('Havreflak'); +INSERT INTO item_type (name) VALUES ('Havregrøt'); +INSERT INTO item_type (name) VALUES ('Havregryn'); +INSERT INTO item_type (name) VALUES ('Havrekli'); +INSERT INTO item_type (name) VALUES ('Havremakroner'); +INSERT INTO item_type (name) VALUES ('Havremel'); +INSERT INTO item_type (name) VALUES ('Havre- og bokhvetegrøt'); +INSERT INTO item_type (name) VALUES ('Havre- og mandelbasert drikke'); +INSERT INTO item_type (name) VALUES ('Havreputer'); +INSERT INTO item_type (name) VALUES ('Havreringer'); +INSERT INTO item_type (name) VALUES ('Havsalt'); +INSERT INTO item_type (name) VALUES ('Helmelk'); +INSERT INTO item_type (name) VALUES ('Hetvin'); +INSERT INTO item_type (name) VALUES ('Hirse'); +INSERT INTO item_type (name) VALUES ('Hjerte'); +INSERT INTO item_type (name) VALUES ('Hjertesalat'); +INSERT INTO item_type (name) VALUES ('Hjort'); +INSERT INTO item_type (name) VALUES ('Hodekål'); +INSERT INTO item_type (name) VALUES ('Hollandaisesaus'); +INSERT INTO item_type (name) VALUES ('Høne'); +INSERT INTO item_type (name) VALUES ('Honning'); +INSERT INTO item_type (name) VALUES ('Honningmelon'); +INSERT INTO item_type (name) VALUES ('Hønsefrikassé'); +INSERT INTO item_type (name) VALUES ('Horn'); +INSERT INTO item_type (name) VALUES ('Horngjel'); +INSERT INTO item_type (name) VALUES ('Hummer'); +INSERT INTO item_type (name) VALUES ('Hummus'); +INSERT INTO item_type (name) VALUES ('Husholdningshvitt'); +INSERT INTO item_type (name) VALUES ('Husholdningssaft'); +INSERT INTO item_type (name) VALUES ('Hval'); +INSERT INTO item_type (name) VALUES ('Hvete'); +INSERT INTO item_type (name) VALUES ('Hvetebrikker'); +INSERT INTO item_type (name) VALUES ('Hveteflak ristet'); +INSERT INTO item_type (name) VALUES ('Hvetekake'); +INSERT INTO item_type (name) VALUES ('Hvetekim'); +INSERT INTO item_type (name) VALUES ('Hvetekimolje'); +INSERT INTO item_type (name) VALUES ('Hvetekli'); +INSERT INTO item_type (name) VALUES ('Hvetemel'); +INSERT INTO item_type (name) VALUES ('Hvite bønner'); +INSERT INTO item_type (name) VALUES ('Hvite kakemenn'); +INSERT INTO item_type (name) VALUES ('Hvitløk'); +INSERT INTO item_type (name) VALUES ('Hvitløkspulver'); +INSERT INTO item_type (name) VALUES ('Hvit saus'); +INSERT INTO item_type (name) VALUES ('Hvitting'); +INSERT INTO item_type (name) VALUES ('Hvitvin'); +INSERT INTO item_type (name) VALUES ('Hyllebær'); +INSERT INTO item_type (name) VALUES ('Hyrdepai'); +INSERT INTO item_type (name) VALUES ('Hyse'); +INSERT INTO item_type (name) VALUES ('Ingefær'); +INSERT INTO item_type (name) VALUES ('Ingefærrot'); +INSERT INTO item_type (name) VALUES ('Innbakte pølser'); +INSERT INTO item_type (name) VALUES ('Is'); +INSERT INTO item_type (name) VALUES ('Isbergsalat'); +INSERT INTO item_type (name) VALUES ('Iskaffe'); +INSERT INTO item_type (name) VALUES ('Iskrem'); +INSERT INTO item_type (name) VALUES ('Iste'); +INSERT INTO item_type (name) VALUES ('Italiensk salat'); +INSERT INTO item_type (name) VALUES ('Jackfrukt'); +INSERT INTO item_type (name) VALUES ('Jalapeño'); +INSERT INTO item_type (name) VALUES ('Jarlsberg'); +INSERT INTO item_type (name) VALUES ('Jordbær'); +INSERT INTO item_type (name) VALUES ('Jordbærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Jordskokk'); +INSERT INTO item_type (name) VALUES ('Jordskokksuppe'); +INSERT INTO item_type (name) VALUES ('Juice'); +INSERT INTO item_type (name) VALUES ('Julekake'); +INSERT INTO item_type (name) VALUES ('Kabaret'); +INSERT INTO item_type (name) VALUES ('Kaffe'); +INSERT INTO item_type (name) VALUES ('Kaffefløte'); +INSERT INTO item_type (name) VALUES ('Kaffehvitt'); +INSERT INTO item_type (name) VALUES ('Kaffemelk'); +INSERT INTO item_type (name) VALUES ('Kakao'); +INSERT INTO item_type (name) VALUES ('Kakaopulver'); +INSERT INTO item_type (name) VALUES ('Kakaosmør'); +INSERT INTO item_type (name) VALUES ('Kakebunn'); +INSERT INTO item_type (name) VALUES ('Kakekrem'); +INSERT INTO item_type (name) VALUES ('Kakemiks'); +INSERT INTO item_type (name) VALUES ('Kaktusfiken'); +INSERT INTO item_type (name) VALUES ('Kalkun'); +INSERT INTO item_type (name) VALUES ('Kalkunfilet'); +INSERT INTO item_type (name) VALUES ('Kalkunrull'); +INSERT INTO item_type (name) VALUES ('Kålrot'); +INSERT INTO item_type (name) VALUES ('Kålrotstappe'); +INSERT INTO item_type (name) VALUES ('Kalv'); +INSERT INTO item_type (name) VALUES ('Kalverull'); +INSERT INTO item_type (name) VALUES ('Kamskjell'); +INSERT INTO item_type (name) VALUES ('Kanel'); +INSERT INTO item_type (name) VALUES ('Kanelbolle'); +INSERT INTO item_type (name) VALUES ('Kanin'); +INSERT INTO item_type (name) VALUES ('Kantaloupemelon'); +INSERT INTO item_type (name) VALUES ('Kantarell'); +INSERT INTO item_type (name) VALUES ('Kapers'); +INSERT INTO item_type (name) VALUES ('Karamell'); +INSERT INTO item_type (name) VALUES ('Karamellpudding'); +INSERT INTO item_type (name) VALUES ('Karamellsaus'); +INSERT INTO item_type (name) VALUES ('Karbonadedeig'); +INSERT INTO item_type (name) VALUES ('Karbonader'); +INSERT INTO item_type (name) VALUES ('Kardemomme'); +INSERT INTO item_type (name) VALUES ('Karri'); +INSERT INTO item_type (name) VALUES ('Karripasta'); +INSERT INTO item_type (name) VALUES ('Karve'); +INSERT INTO item_type (name) VALUES ('Kassava'); +INSERT INTO item_type (name) VALUES ('Kastanjer'); +INSERT INTO item_type (name) VALUES ('Kaviar'); +INSERT INTO item_type (name) VALUES ('Kaviarmix'); +INSERT INTO item_type (name) VALUES ('Kavring'); +INSERT INTO item_type (name) VALUES ('Ketchup'); +INSERT INTO item_type (name) VALUES ('Kidneybønner'); +INSERT INTO item_type (name) VALUES ('Kikerter'); +INSERT INTO item_type (name) VALUES ('Kikertmel'); +INSERT INTO item_type (name) VALUES ('Kinakål'); +INSERT INTO item_type (name) VALUES ('Kirsebær'); +INSERT INTO item_type (name) VALUES ('Kirsebærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Kiwi'); +INSERT INTO item_type (name) VALUES ('Kjeks'); +INSERT INTO item_type (name) VALUES ('Kjøleskapsgrøt'); +INSERT INTO item_type (name) VALUES ('Kjøttboller'); +INSERT INTO item_type (name) VALUES ('Kjøttbuljong'); +INSERT INTO item_type (name) VALUES ('Kjøttdeig'); +INSERT INTO item_type (name) VALUES ('Kjøttfarse'); +INSERT INTO item_type (name) VALUES ('Kjøttkaker'); +INSERT INTO item_type (name) VALUES ('Kjøttkaker med ertestuing'); +INSERT INTO item_type (name) VALUES ('Kjøttpølse'); +INSERT INTO item_type (name) VALUES ('Kjøttprodukter og kjøttpålegg'); +INSERT INTO item_type (name) VALUES ('Kjøttpudding'); +INSERT INTO item_type (name) VALUES ('Kjøttsuppe med grønnsaker og poteter'); +INSERT INTO item_type (name) VALUES ('Klementin'); +INSERT INTO item_type (name) VALUES ('Klibrød'); +INSERT INTO item_type (name) VALUES ('Klippfisk'); +INSERT INTO item_type (name) VALUES ('Knakkpølse'); +INSERT INTO item_type (name) VALUES ('Knekkebrød'); +INSERT INTO item_type (name) VALUES ('Knutekål'); +INSERT INTO item_type (name) VALUES ('Kokebanan'); +INSERT INTO item_type (name) VALUES ('Kokosbasert drikke'); +INSERT INTO item_type (name) VALUES ('Kokosbolle'); +INSERT INTO item_type (name) VALUES ('Kokosbollekake'); +INSERT INTO item_type (name) VALUES ('Kokosfett'); +INSERT INTO item_type (name) VALUES ('Kokosmakroner'); +INSERT INTO item_type (name) VALUES ('Kokosmasse'); +INSERT INTO item_type (name) VALUES ('Kokosmel'); +INSERT INTO item_type (name) VALUES ('Kokosmelk'); +INSERT INTO item_type (name) VALUES ('Kokosnøtt'); +INSERT INTO item_type (name) VALUES ('Kokosolje'); +INSERT INTO item_type (name) VALUES ('Kokt laks med urtesaus'); +INSERT INTO item_type (name) VALUES ('Kokt skinke'); +INSERT INTO item_type (name) VALUES ('Kompott'); +INSERT INTO item_type (name) VALUES ('Kondensert melk'); +INSERT INTO item_type (name) VALUES ('Kongereke'); +INSERT INTO item_type (name) VALUES ('Koriander'); +INSERT INTO item_type (name) VALUES ('Korianderfrø'); +INSERT INTO item_type (name) VALUES ('Kornblanding'); +INSERT INTO item_type (name) VALUES ('Korn- og bakevarer'); +INSERT INTO item_type (name) VALUES ('Krabbe'); +INSERT INTO item_type (name) VALUES ('Krabbepinner'); +INSERT INTO item_type (name) VALUES ('Kransekake'); +INSERT INTO item_type (name) VALUES ('Krekling'); +INSERT INTO item_type (name) VALUES ('Krem'); +INSERT INTO item_type (name) VALUES ('Kremfløte'); +INSERT INTO item_type (name) VALUES ('Kremost'); +INSERT INTO item_type (name) VALUES ('Kreps'); +INSERT INTO item_type (name) VALUES ('Krepsehale'); +INSERT INTO item_type (name) VALUES ('Kringle'); +INSERT INTO item_type (name) VALUES ('Krumkaker'); +INSERT INTO item_type (name) VALUES ('Kruskakli'); +INSERT INTO item_type (name) VALUES ('Krydderkake'); +INSERT INTO item_type (name) VALUES ('Kumquat'); +INSERT INTO item_type (name) VALUES ('Kvæfjordkake'); +INSERT INTO item_type (name) VALUES ('Kvarg'); +INSERT INTO item_type (name) VALUES ('Kveite'); +INSERT INTO item_type (name) VALUES ('Kylling'); +INSERT INTO item_type (name) VALUES ('Kyllingburger'); +INSERT INTO item_type (name) VALUES ('Kyllinggryte'); +INSERT INTO item_type (name) VALUES ('Kyllingnuggets'); +INSERT INTO item_type (name) VALUES ('Kylling- og kalkunpølse'); +INSERT INTO item_type (name) VALUES ('Kyllingpostei'); +INSERT INTO item_type (name) VALUES ('Kyllingskinn'); +INSERT INTO item_type (name) VALUES ('Lakris'); +INSERT INTO item_type (name) VALUES ('Lakriskonfekt'); +INSERT INTO item_type (name) VALUES ('Laks'); +INSERT INTO item_type (name) VALUES ('Laksepålegg'); +INSERT INTO item_type (name) VALUES ('Lam'); +INSERT INTO item_type (name) VALUES ('Lammefrikassé'); +INSERT INTO item_type (name) VALUES ('Lammerull'); +INSERT INTO item_type (name) VALUES ('Lange'); +INSERT INTO item_type (name) VALUES ('Lapskaus'); +INSERT INTO item_type (name) VALUES ('Lasagne'); +INSERT INTO item_type (name) VALUES ('Laurbærblad'); +INSERT INTO item_type (name) VALUES ('Lefse'); +INSERT INTO item_type (name) VALUES ('Lettmelk'); +INSERT INTO item_type (name) VALUES ('Lettøl'); +INSERT INTO item_type (name) VALUES ('Lettrømme'); +INSERT INTO item_type (name) VALUES ('Lever'); +INSERT INTO item_type (name) VALUES ('Leverpostei'); +INSERT INTO item_type (name) VALUES ('Likør'); +INSERT INTO item_type (name) VALUES ('Limabønner'); +INSERT INTO item_type (name) VALUES ('Lime'); +INSERT INTO item_type (name) VALUES ('Linfrø'); +INSERT INTO item_type (name) VALUES ('Linfrøolje'); +INSERT INTO item_type (name) VALUES ('Linse- og bønnesalat'); +INSERT INTO item_type (name) VALUES ('Linser'); +INSERT INTO item_type (name) VALUES ('Litchi'); +INSERT INTO item_type (name) VALUES ('Loff'); +INSERT INTO item_type (name) VALUES ('Løk'); +INSERT INTO item_type (name) VALUES ('Løksuppe'); +INSERT INTO item_type (name) VALUES ('Lomre'); +INSERT INTO item_type (name) VALUES ('Lotusrot'); +INSERT INTO item_type (name) VALUES ('Lungemos'); +INSERT INTO item_type (name) VALUES ('Lussekatter'); +INSERT INTO item_type (name) VALUES ('Lutefisk'); +INSERT INTO item_type (name) VALUES ('Lyr'); +INSERT INTO item_type (name) VALUES ('Macadamianøtter'); +INSERT INTO item_type (name) VALUES ('Macchiato'); +INSERT INTO item_type (name) VALUES ('Mager fisk'); +INSERT INTO item_type (name) VALUES ('Magerost'); +INSERT INTO item_type (name) VALUES ('Mais'); +INSERT INTO item_type (name) VALUES ('Maismel'); +INSERT INTO item_type (name) VALUES ('Mais- og risflak'); +INSERT INTO item_type (name) VALUES ('Maisolje'); +INSERT INTO item_type (name) VALUES ('Maisstivelse'); +INSERT INTO item_type (name) VALUES ('Majones'); +INSERT INTO item_type (name) VALUES ('Makrell'); +INSERT INTO item_type (name) VALUES ('Makrell i tomat'); +INSERT INTO item_type (name) VALUES ('Manchego'); +INSERT INTO item_type (name) VALUES ('Mandelbasert drikke'); +INSERT INTO item_type (name) VALUES ('Mandelmel'); +INSERT INTO item_type (name) VALUES ('Mandelpålegg'); +INSERT INTO item_type (name) VALUES ('Mandler'); +INSERT INTO item_type (name) VALUES ('Mango'); +INSERT INTO item_type (name) VALUES ('Mangold'); +INSERT INTO item_type (name) VALUES ('Mangosalsa'); +INSERT INTO item_type (name) VALUES ('Marengs'); +INSERT INTO item_type (name) VALUES ('Marengsbunn'); +INSERT INTO item_type (name) VALUES ('Margarin'); +INSERT INTO item_type (name) VALUES ('Margarin og smør'); +INSERT INTO item_type (name) VALUES ('Marsipan'); +INSERT INTO item_type (name) VALUES ('Marsipanbrød'); +INSERT INTO item_type (name) VALUES ('Marsipankake'); +INSERT INTO item_type (name) VALUES ('Mascarpone'); +INSERT INTO item_type (name) VALUES ('Matfett'); +INSERT INTO item_type (name) VALUES ('Matfløte'); +INSERT INTO item_type (name) VALUES ('Matlagingsfett'); +INSERT INTO item_type (name) VALUES ('Matlagingsprodukt'); +INSERT INTO item_type (name) VALUES ('Matolje'); +INSERT INTO item_type (name) VALUES ('Mazarin'); +INSERT INTO item_type (name) VALUES ('Medisterdeig'); +INSERT INTO item_type (name) VALUES ('Medisterkaker'); +INSERT INTO item_type (name) VALUES ('Medisterpølse'); +INSERT INTO item_type (name) VALUES ('Mel'); +INSERT INTO item_type (name) VALUES ('Melis'); +INSERT INTO item_type (name) VALUES ('Melisglasur'); +INSERT INTO item_type (name) VALUES ('Melk'); +INSERT INTO item_type (name) VALUES ('Melkepålegg'); +INSERT INTO item_type (name) VALUES ('Melk og melkebasert drikke'); +INSERT INTO item_type (name) VALUES ('Melk og melkeprodukter'); +INSERT INTO item_type (name) VALUES ('Merian'); +INSERT INTO item_type (name) VALUES ('Meterbønner'); +INSERT INTO item_type (name) VALUES ('Milkshake'); +INSERT INTO item_type (name) VALUES ('Mineralsalt'); +INSERT INTO item_type (name) VALUES ('Mineralvann'); +INSERT INTO item_type (name) VALUES ('Minestronesuppe'); +INSERT INTO item_type (name) VALUES ('Miso'); +INSERT INTO item_type (name) VALUES ('Moreller'); +INSERT INTO item_type (name) VALUES ('Mørkt øl'); +INSERT INTO item_type (name) VALUES ('Mor Monsen'); +INSERT INTO item_type (name) VALUES ('Morrpølse'); +INSERT INTO item_type (name) VALUES ('Morsmelkerstatning'); +INSERT INTO item_type (name) VALUES ('Moussaka'); +INSERT INTO item_type (name) VALUES ('Mozzarella'); +INSERT INTO item_type (name) VALUES ('Muffins'); +INSERT INTO item_type (name) VALUES ('Multekrem'); +INSERT INTO item_type (name) VALUES ('Multer'); +INSERT INTO item_type (name) VALUES ('Multesyltetøy'); +INSERT INTO item_type (name) VALUES ('Multi Vitaminmikstur'); +INSERT INTO item_type (name) VALUES ('Mungbønner'); +INSERT INTO item_type (name) VALUES ('Muskat'); +INSERT INTO item_type (name) VALUES ('Müslibar'); +INSERT INTO item_type (name) VALUES ('Napoleonskake'); +INSERT INTO item_type (name) VALUES ('Nashi'); +INSERT INTO item_type (name) VALUES ('Natron'); +INSERT INTO item_type (name) VALUES ('Nektarin'); +INSERT INTO item_type (name) VALUES ('Nellik'); +INSERT INTO item_type (name) VALUES ('Neper'); +INSERT INTO item_type (name) VALUES ('Nøkkelost'); +INSERT INTO item_type (name) VALUES ('Nori'); +INSERT INTO item_type (name) VALUES ('Normanna'); +INSERT INTO item_type (name) VALUES ('Norvegia'); +INSERT INTO item_type (name) VALUES ('Norzola'); +INSERT INTO item_type (name) VALUES ('Nøtteblanding'); +INSERT INTO item_type (name) VALUES ('Nøttebunn'); +INSERT INTO item_type (name) VALUES ('Nøttekake'); +INSERT INTO item_type (name) VALUES ('Nøttepålegg'); +INSERT INTO item_type (name) VALUES ('Nøtter'); +INSERT INTO item_type (name) VALUES ('Nøttestek'); +INSERT INTO item_type (name) VALUES ('Nudler'); +INSERT INTO item_type (name) VALUES ('Nudler av ris'); +INSERT INTO item_type (name) VALUES ('Nype'); +INSERT INTO item_type (name) VALUES ('Nypesuppe'); +INSERT INTO item_type (name) VALUES ('Nypesyltetøy'); +INSERT INTO item_type (name) VALUES ('Okra'); +INSERT INTO item_type (name) VALUES ('Okserull'); +INSERT INTO item_type (name) VALUES ('Øl'); +INSERT INTO item_type (name) VALUES ('Oliven'); +INSERT INTO item_type (name) VALUES ('Olivenolje'); +INSERT INTO item_type (name) VALUES ('Omelett'); +INSERT INTO item_type (name) VALUES ('Oregano'); +INSERT INTO item_type (name) VALUES ('Oreokake'); +INSERT INTO item_type (name) VALUES ('Ørret'); +INSERT INTO item_type (name) VALUES ('Ost'); +INSERT INTO item_type (name) VALUES ('Østavind'); +INSERT INTO item_type (name) VALUES ('Ostegrill'); +INSERT INTO item_type (name) VALUES ('Ostekake'); +INSERT INTO item_type (name) VALUES ('Ostepop'); +INSERT INTO item_type (name) VALUES ('Østers'); +INSERT INTO item_type (name) VALUES ('Østerssopp'); +INSERT INTO item_type (name) VALUES ('Pære'); +INSERT INTO item_type (name) VALUES ('Pai'); +INSERT INTO item_type (name) VALUES ('Pak-choi'); +INSERT INTO item_type (name) VALUES ('Palmeolje'); +INSERT INTO item_type (name) VALUES ('Paneer'); +INSERT INTO item_type (name) VALUES ('Panetter'); +INSERT INTO item_type (name) VALUES ('Pangasius'); +INSERT INTO item_type (name) VALUES ('Panna cotta'); +INSERT INTO item_type (name) VALUES ('Pannekaker'); +INSERT INTO item_type (name) VALUES ('Papaya'); +INSERT INTO item_type (name) VALUES ('Paprika'); +INSERT INTO item_type (name) VALUES ('Paprika- og kikertpålegg'); +INSERT INTO item_type (name) VALUES ('Paprikapulver'); +INSERT INTO item_type (name) VALUES ('Paradisepler'); +INSERT INTO item_type (name) VALUES ('Paranøtter'); +INSERT INTO item_type (name) VALUES ('Parmesan'); +INSERT INTO item_type (name) VALUES ('Pasjonsfrukt'); +INSERT INTO item_type (name) VALUES ('Pasjonsfruktjuice'); +INSERT INTO item_type (name) VALUES ('Pasta'); +INSERT INTO item_type (name) VALUES ('Pasta bolognese'); +INSERT INTO item_type (name) VALUES ('Pasta med kalkun'); +INSERT INTO item_type (name) VALUES ('Pasta med kjøttsaus'); +INSERT INTO item_type (name) VALUES ('Pastiller'); +INSERT INTO item_type (name) VALUES ('Pastinakk'); +INSERT INTO item_type (name) VALUES ('Pavlova'); +INSERT INTO item_type (name) VALUES ('Peanøtter'); +INSERT INTO item_type (name) VALUES ('Peanøttolje'); +INSERT INTO item_type (name) VALUES ('Peanøttsmør'); +INSERT INTO item_type (name) VALUES ('Pekannøtter'); +INSERT INTO item_type (name) VALUES ('Pepper'); +INSERT INTO item_type (name) VALUES ('Pepperkaker'); +INSERT INTO item_type (name) VALUES ('Peppernøtter'); +INSERT INTO item_type (name) VALUES ('Pepperoni'); +INSERT INTO item_type (name) VALUES ('Pepperrot'); +INSERT INTO item_type (name) VALUES ('Perlebygg'); +INSERT INTO item_type (name) VALUES ('Perlespelt'); +INSERT INTO item_type (name) VALUES ('Persille'); +INSERT INTO item_type (name) VALUES ('Persillerot'); +INSERT INTO item_type (name) VALUES ('Pesto'); +INSERT INTO item_type (name) VALUES ('Physalis'); +INSERT INTO item_type (name) VALUES ('Pigghå'); +INSERT INTO item_type (name) VALUES ('Piggvar'); +INSERT INTO item_type (name) VALUES ('Pils'); +INSERT INTO item_type (name) VALUES ('Pinjekjerner'); +INSERT INTO item_type (name) VALUES ('Pinnekjøtt'); +INSERT INTO item_type (name) VALUES ('Pistasjnøtter'); +INSERT INTO item_type (name) VALUES ('Pitabrød'); +INSERT INTO item_type (name) VALUES ('Pizza'); +INSERT INTO item_type (name) VALUES ('Pizzabunn'); +INSERT INTO item_type (name) VALUES ('Pizzafyllbasis'); +INSERT INTO item_type (name) VALUES ('Pizzaost'); +INSERT INTO item_type (name) VALUES ('Pizzasnurrer'); +INSERT INTO item_type (name) VALUES ('Plantebasert burger'); +INSERT INTO item_type (name) VALUES ('Plantebasert deig'); +INSERT INTO item_type (name) VALUES ('Plantebaserte boller'); +INSERT INTO item_type (name) VALUES ('Plantebaserte middagsboller'); +INSERT INTO item_type (name) VALUES ('Plantebasert grillpølse'); +INSERT INTO item_type (name) VALUES ('Plantebasert middagsdeig'); +INSERT INTO item_type (name) VALUES ('Plantebasert pølse'); +INSERT INTO item_type (name) VALUES ('Plantebasert produkt'); +INSERT INTO item_type (name) VALUES ('Plantebasert schnitzel'); +INSERT INTO item_type (name) VALUES ('Plomme'); +INSERT INTO item_type (name) VALUES ('Plommesyltetøy'); +INSERT INTO item_type (name) VALUES ('Polarbrød'); +INSERT INTO item_type (name) VALUES ('Pølsebrød'); +INSERT INTO item_type (name) VALUES ('Pølser'); +INSERT INTO item_type (name) VALUES ('Pomelo'); +INSERT INTO item_type (name) VALUES ('Pommes frites'); +INSERT INTO item_type (name) VALUES ('Popcorn'); +INSERT INTO item_type (name) VALUES ('Portobellosopp'); +INSERT INTO item_type (name) VALUES ('Port Salut'); +INSERT INTO item_type (name) VALUES ('Potet'); +INSERT INTO item_type (name) VALUES ('Potetchips'); +INSERT INTO item_type (name) VALUES ('Poteter '); +INSERT INTO item_type (name) VALUES ('Potetlompe'); +INSERT INTO item_type (name) VALUES ('Potetmel'); +INSERT INTO item_type (name) VALUES ('Potetmos'); +INSERT INTO item_type (name) VALUES ('Potetmospulver'); +INSERT INTO item_type (name) VALUES ('Potet- og purreløksuppe'); +INSERT INTO item_type (name) VALUES ('Potetsalat'); +INSERT INTO item_type (name) VALUES ('Potetskruer'); +INSERT INTO item_type (name) VALUES ('Prim'); +INSERT INTO item_type (name) VALUES ('Produkter av frukt og bær'); +INSERT INTO item_type (name) VALUES ('Psylliumfrø'); +INSERT INTO item_type (name) VALUES ('Pudding'); +INSERT INTO item_type (name) VALUES ('Puffet havre'); +INSERT INTO item_type (name) VALUES ('Puffet hvete'); +INSERT INTO item_type (name) VALUES ('Puffet ris'); +INSERT INTO item_type (name) VALUES ('Pultost'); +INSERT INTO item_type (name) VALUES ('Pulver'); +INSERT INTO item_type (name) VALUES ('Pumpernikkel'); +INSERT INTO item_type (name) VALUES ('Purre'); +INSERT INTO item_type (name) VALUES ('Purreløk'); +INSERT INTO item_type (name) VALUES ('Pytt i panne'); +INSERT INTO item_type (name) VALUES ('Quinoa'); +INSERT INTO item_type (name) VALUES ('Rabarbra'); +INSERT INTO item_type (name) VALUES ('Rabarbragrøt'); +INSERT INTO item_type (name) VALUES ('Rabarbrasuppe'); +INSERT INTO item_type (name) VALUES ('Rabarbrasyltetøy'); +INSERT INTO item_type (name) VALUES ('Raclette'); +INSERT INTO item_type (name) VALUES ('Radicchio rosso'); +INSERT INTO item_type (name) VALUES ('Rådyr'); +INSERT INTO item_type (name) VALUES ('Rambutan'); +INSERT INTO item_type (name) VALUES ('Rapidsalat'); +INSERT INTO item_type (name) VALUES ('Rapsolje'); +INSERT INTO item_type (name) VALUES ('Reddik'); +INSERT INTO item_type (name) VALUES ('Reinsdyr'); +INSERT INTO item_type (name) VALUES ('Reinsdyrkaker'); +INSERT INTO item_type (name) VALUES ('Reinsdyrpølse'); +INSERT INTO item_type (name) VALUES ('Reinsdyrskav'); +INSERT INTO item_type (name) VALUES ('Reker'); +INSERT INTO item_type (name) VALUES ('Rekesalat'); +INSERT INTO item_type (name) VALUES ('Remulade'); +INSERT INTO item_type (name) VALUES ('Retter med fisk'); +INSERT INTO item_type (name) VALUES ('Retter med fjørfe og kjøtt'); +INSERT INTO item_type (name) VALUES ('Ribberull'); +INSERT INTO item_type (name) VALUES ('Ricotta'); +INSERT INTO item_type (name) VALUES ('Ridderost'); +INSERT INTO item_type (name) VALUES ('Rips'); +INSERT INTO item_type (name) VALUES ('Ris'); +INSERT INTO item_type (name) VALUES ('Risbasert drikke'); +INSERT INTO item_type (name) VALUES ('Risboller'); +INSERT INTO item_type (name) VALUES ('Risgrøt'); +INSERT INTO item_type (name) VALUES ('Riskaker'); +INSERT INTO item_type (name) VALUES ('Riskrem'); +INSERT INTO item_type (name) VALUES ('Rislunsj med jordbær'); +INSERT INTO item_type (name) VALUES ('Rismel'); +INSERT INTO item_type (name) VALUES ('Roastbiff'); +INSERT INTO item_type (name) VALUES ('Rødbete'); +INSERT INTO item_type (name) VALUES ('Rødbeter'); +INSERT INTO item_type (name) VALUES ('Rødbetsalat'); +INSERT INTO item_type (name) VALUES ('Røde bønner'); +INSERT INTO item_type (name) VALUES ('Rødkål'); +INSERT INTO item_type (name) VALUES ('Rødspette'); +INSERT INTO item_type (name) VALUES ('Rødvin'); +INSERT INTO item_type (name) VALUES ('Rogn'); +INSERT INTO item_type (name) VALUES ('Rognebær'); +INSERT INTO item_type (name) VALUES ('Rognleverpostei'); +INSERT INTO item_type (name) VALUES ('Romanosalat'); +INSERT INTO item_type (name) VALUES ('Rømmedressing'); +INSERT INTO item_type (name) VALUES ('Rømmegrøt'); +INSERT INTO item_type (name) VALUES ('Roquefort'); +INSERT INTO item_type (name) VALUES ('Rosenkål'); +INSERT INTO item_type (name) VALUES ('Rosinbolle'); +INSERT INTO item_type (name) VALUES ('Rosiner'); +INSERT INTO item_type (name) VALUES ('Rosmarin'); +INSERT INTO item_type (name) VALUES ('Røye'); +INSERT INTO item_type (name) VALUES ('Ruccolasalat'); +INSERT INTO item_type (name) VALUES ('Rugbrød'); +INSERT INTO item_type (name) VALUES ('Rugmel'); +INSERT INTO item_type (name) VALUES ('Rullekake'); +INSERT INTO item_type (name) VALUES ('Rundstykke'); +INSERT INTO item_type (name) VALUES ('Rundstykker'); +INSERT INTO item_type (name) VALUES ('Rype'); +INSERT INTO item_type (name) VALUES ('Safran'); +INSERT INTO item_type (name) VALUES ('Saft'); +INSERT INTO item_type (name) VALUES ('Saftis'); +INSERT INTO item_type (name) VALUES ('Salami'); +INSERT INTO item_type (name) VALUES ('Salat'); +INSERT INTO item_type (name) VALUES ('Salatdressing'); +INSERT INTO item_type (name) VALUES ('Salat nicoise'); +INSERT INTO item_type (name) VALUES ('Salsiccia'); +INSERT INTO item_type (name) VALUES ('Salt'); +INSERT INTO item_type (name) VALUES ('Saltstenger'); +INSERT INTO item_type (name) VALUES ('Sanasol'); +INSERT INTO item_type (name) VALUES ('Sandefjordsmør'); +INSERT INTO item_type (name) VALUES ('Sandkake'); +INSERT INTO item_type (name) VALUES ('Sarah Bernhard-kake'); +INSERT INTO item_type (name) VALUES ('Sashimi'); +INSERT INTO item_type (name) VALUES ('Sau'); +INSERT INTO item_type (name) VALUES ('Scones'); +INSERT INTO item_type (name) VALUES ('Sei'); +INSERT INTO item_type (name) VALUES ('Seibiff'); +INSERT INTO item_type (name) VALUES ('Seilaks'); +INSERT INTO item_type (name) VALUES ('Seitan'); +INSERT INTO item_type (name) VALUES ('Selbu blå'); +INSERT INTO item_type (name) VALUES ('Sellerirot'); +INSERT INTO item_type (name) VALUES ('Semulegrøt'); +INSERT INTO item_type (name) VALUES ('Semulegryn'); +INSERT INTO item_type (name) VALUES ('Sennep'); +INSERT INTO item_type (name) VALUES ('Sennepsfrø'); +INSERT INTO item_type (name) VALUES ('Sennepssaus'); +INSERT INTO item_type (name) VALUES ('Serinakaker'); +INSERT INTO item_type (name) VALUES ('Servelat'); +INSERT INTO item_type (name) VALUES ('Sesamfrø'); +INSERT INTO item_type (name) VALUES ('Sesamolje'); +INSERT INTO item_type (name) VALUES ('Sesampostei/-pasta'); +INSERT INTO item_type (name) VALUES ('Seterrømme'); +INSERT INTO item_type (name) VALUES ('Sharon'); +INSERT INTO item_type (name) VALUES ('Shiitakesopp'); +INSERT INTO item_type (name) VALUES ('Sik'); +INSERT INTO item_type (name) VALUES ('Sikorisalat'); +INSERT INTO item_type (name) VALUES ('Sild'); +INSERT INTO item_type (name) VALUES ('Sildesalat'); +INSERT INTO item_type (name) VALUES ('Sirup'); +INSERT INTO item_type (name) VALUES ('Sirupskake'); +INSERT INTO item_type (name) VALUES ('Sirupssnipper'); +INSERT INTO item_type (name) VALUES ('Sitron'); +INSERT INTO item_type (name) VALUES ('Sitronfromasj'); +INSERT INTO item_type (name) VALUES ('Sitronsaft'); +INSERT INTO item_type (name) VALUES ('Sitronskall'); +INSERT INTO item_type (name) VALUES ('Sitronterte'); +INSERT INTO item_type (name) VALUES ('Sjalottløk'); +INSERT INTO item_type (name) VALUES ('Sjampinjong'); +INSERT INTO item_type (name) VALUES ('Sjokolade'); +INSERT INTO item_type (name) VALUES ('Sjokoladedrikk'); +INSERT INTO item_type (name) VALUES ('Sjokoladefondant'); +INSERT INTO item_type (name) VALUES ('Sjokoladeglasur'); +INSERT INTO item_type (name) VALUES ('Sjokoladekake'); +INSERT INTO item_type (name) VALUES ('Sjokolademelk'); +INSERT INTO item_type (name) VALUES ('Sjokolademousse'); +INSERT INTO item_type (name) VALUES ('Sjokolade og andre søtsaker'); +INSERT INTO item_type (name) VALUES ('Sjokoladepålegg'); +INSERT INTO item_type (name) VALUES ('Sjokoladepudding'); +INSERT INTO item_type (name) VALUES ('Sjokoladepulver'); +INSERT INTO item_type (name) VALUES ('Sjokoladesaus'); +INSERT INTO item_type (name) VALUES ('Sjøtunge'); +INSERT INTO item_type (name) VALUES ('Sjysaus'); +INSERT INTO item_type (name) VALUES ('Skagenrøre'); +INSERT INTO item_type (name) VALUES ('Skalldyr'); +INSERT INTO item_type (name) VALUES ('Skate'); +INSERT INTO item_type (name) VALUES ('Skinkerull'); +INSERT INTO item_type (name) VALUES ('Skolebrød'); +INSERT INTO item_type (name) VALUES ('Skonrokk'); +INSERT INTO item_type (name) VALUES ('Skorsonnerot'); +INSERT INTO item_type (name) VALUES ('Skumgodt'); +INSERT INTO item_type (name) VALUES ('Skummet melk'); +INSERT INTO item_type (name) VALUES ('Skyr'); +INSERT INTO item_type (name) VALUES ('Smågodt'); +INSERT INTO item_type (name) VALUES ('Småkaker'); +INSERT INTO item_type (name) VALUES ('Smoothie'); +INSERT INTO item_type (name) VALUES ('Smør'); +INSERT INTO item_type (name) VALUES ('Smørkrem'); +INSERT INTO item_type (name) VALUES ('Smuldrepai'); +INSERT INTO item_type (name) VALUES ('Smultringer'); +INSERT INTO item_type (name) VALUES ('Snacks'); +INSERT INTO item_type (name) VALUES ('Snegler'); +INSERT INTO item_type (name) VALUES ('Snickerskake'); +INSERT INTO item_type (name) VALUES ('Sodd'); +INSERT INTO item_type (name) VALUES ('Solbær'); +INSERT INTO item_type (name) VALUES ('Solbærsaft'); +INSERT INTO item_type (name) VALUES ('Solbærsirup'); +INSERT INTO item_type (name) VALUES ('Solbærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Solsikkefrø'); +INSERT INTO item_type (name) VALUES ('Solsikkeolje'); +INSERT INTO item_type (name) VALUES ('Sopprotein'); +INSERT INTO item_type (name) VALUES ('Sorbet'); +INSERT INTO item_type (name) VALUES ('Sorghum'); +INSERT INTO item_type (name) VALUES ('Sosisser'); +INSERT INTO item_type (name) VALUES ('Søt gjærbakst'); +INSERT INTO item_type (name) VALUES ('Søtpotet'); +INSERT INTO item_type (name) VALUES ('Søtpotetsuppe'); +INSERT INTO item_type (name) VALUES ('Soyabasert drikke'); +INSERT INTO item_type (name) VALUES ('Soyabønner'); +INSERT INTO item_type (name) VALUES ('Soyamel'); +INSERT INTO item_type (name) VALUES ('Soyaolje'); +INSERT INTO item_type (name) VALUES ('Soyapølse'); +INSERT INTO item_type (name) VALUES ('Soyaprotein'); +INSERT INTO item_type (name) VALUES ('Soyasaus'); +INSERT INTO item_type (name) VALUES ('Spedbarnsmat'); +INSERT INTO item_type (name) VALUES ('Spekesild'); +INSERT INTO item_type (name) VALUES ('Spekeskinke'); +INSERT INTO item_type (name) VALUES ('Speltmel'); +INSERT INTO item_type (name) VALUES ('Spinat'); +INSERT INTO item_type (name) VALUES ('Spinatsuppe'); +INSERT INTO item_type (name) VALUES ('Spisskål'); +INSERT INTO item_type (name) VALUES ('Squash'); +INSERT INTO item_type (name) VALUES ('Squashfrø'); +INSERT INTO item_type (name) VALUES ('Stabburpølse'); +INSERT INTO item_type (name) VALUES ('Stangselleri'); +INSERT INTO item_type (name) VALUES ('Steinbit'); +INSERT INTO item_type (name) VALUES ('Steinsopp'); +INSERT INTO item_type (name) VALUES ('Sterkøl'); +INSERT INTO item_type (name) VALUES ('Sterkvin'); +INSERT INTO item_type (name) VALUES ('Stikkelsbær'); +INSERT INTO item_type (name) VALUES ('Stilton'); +INSERT INTO item_type (name) VALUES ('Storfe'); +INSERT INTO item_type (name) VALUES ('Strandsnegle'); +INSERT INTO item_type (name) VALUES ('Sukker'); +INSERT INTO item_type (name) VALUES ('Sukkerbrød'); +INSERT INTO item_type (name) VALUES ('Sukkererter'); +INSERT INTO item_type (name) VALUES ('Sukker og søte produkter'); +INSERT INTO item_type (name) VALUES ('Sukkertøy'); +INSERT INTO item_type (name) VALUES ('Suksessterte'); +INSERT INTO item_type (name) VALUES ('Supper'); +INSERT INTO item_type (name) VALUES ('Surimi'); +INSERT INTO item_type (name) VALUES ('Surkål'); +INSERT INTO item_type (name) VALUES ('Sushi'); +INSERT INTO item_type (name) VALUES ('Svarte bønner'); +INSERT INTO item_type (name) VALUES ('Svartøyebønner'); +INSERT INTO item_type (name) VALUES ('Sveitserost'); +INSERT INTO item_type (name) VALUES ('Sveler'); +INSERT INTO item_type (name) VALUES ('Svin'); +INSERT INTO item_type (name) VALUES ('Svinekam'); +INSERT INTO item_type (name) VALUES ('Svinestek med surkål og poteter'); +INSERT INTO item_type (name) VALUES ('Svisker'); +INSERT INTO item_type (name) VALUES ('Sylte'); +INSERT INTO item_type (name) VALUES ('Syltetøy'); +INSERT INTO item_type (name) VALUES ('Syrnet'); +INSERT INTO item_type (name) VALUES ('Syrnet havreprodukt til matlaging'); +INSERT INTO item_type (name) VALUES ('Syrnet melk'); +INSERT INTO item_type (name) VALUES ('Taco kryddermix'); +INSERT INTO item_type (name) VALUES ('Taco med skjell'); +INSERT INTO item_type (name) VALUES ('Taco med tortilla'); +INSERT INTO item_type (name) VALUES ('Tacosaus'); +INSERT INTO item_type (name) VALUES ('Tacoskjell'); +INSERT INTO item_type (name) VALUES ('Tacosuppe'); +INSERT INTO item_type (name) VALUES ('Taffelost'); +INSERT INTO item_type (name) VALUES ('Tamarind'); +INSERT INTO item_type (name) VALUES ('Te'); +INSERT INTO item_type (name) VALUES ('Tebriks'); +INSERT INTO item_type (name) VALUES ('Teffmel'); +INSERT INTO item_type (name) VALUES ('Tempeh'); +INSERT INTO item_type (name) VALUES ('Teriyakisaus'); +INSERT INTO item_type (name) VALUES ('Terte'); +INSERT INTO item_type (name) VALUES ('Tilskuddsblanding'); +INSERT INTO item_type (name) VALUES ('Tilslørte bondepiker'); +INSERT INTO item_type (name) VALUES ('Timian'); +INSERT INTO item_type (name) VALUES ('Tindved'); +INSERT INTO item_type (name) VALUES ('Tofu'); +INSERT INTO item_type (name) VALUES ('Tomat'); +INSERT INTO item_type (name) VALUES ('Tomatbønner'); +INSERT INTO item_type (name) VALUES ('Tomater'); +INSERT INTO item_type (name) VALUES ('Tomatjuice'); +INSERT INTO item_type (name) VALUES ('Tomatpuré'); +INSERT INTO item_type (name) VALUES ('Tomatsalsa'); +INSERT INTO item_type (name) VALUES ('Tomatsuppe'); +INSERT INTO item_type (name) VALUES ('Tørrfisk'); +INSERT INTO item_type (name) VALUES ('Torsk'); +INSERT INTO item_type (name) VALUES ('Tortilla'); +INSERT INTO item_type (name) VALUES ('Tortillachips'); +INSERT INTO item_type (name) VALUES ('Traktkantarell'); +INSERT INTO item_type (name) VALUES ('Tran'); +INSERT INTO item_type (name) VALUES ('Tranebær'); +INSERT INTO item_type (name) VALUES ('Tranebærjuice'); +INSERT INTO item_type (name) VALUES ('Trollkrem'); +INSERT INTO item_type (name) VALUES ('Tropisk juice'); +INSERT INTO item_type (name) VALUES ('Tunfisk'); +INSERT INTO item_type (name) VALUES ('Tyggegummi'); +INSERT INTO item_type (name) VALUES ('Tykklefse'); +INSERT INTO item_type (name) VALUES ('Tyttebær'); +INSERT INTO item_type (name) VALUES ('Tyttebærsyltetøy'); +INSERT INTO item_type (name) VALUES ('Tzatziki'); +INSERT INTO item_type (name) VALUES ('Uer'); +INSERT INTO item_type (name) VALUES ('Urter og krydder'); +INSERT INTO item_type (name) VALUES ('Urtesalt'); +INSERT INTO item_type (name) VALUES ('Vafler'); +INSERT INTO item_type (name) VALUES ('Valmuefrø'); +INSERT INTO item_type (name) VALUES ('Valnøtter'); +INSERT INTO item_type (name) VALUES ('Valnøttolje'); +INSERT INTO item_type (name) VALUES ('Vaniljekrem'); +INSERT INTO item_type (name) VALUES ('Vaniljesaus'); +INSERT INTO item_type (name) VALUES ('Vaniljesukker'); +INSERT INTO item_type (name) VALUES ('Vann'); +INSERT INTO item_type (name) VALUES ('Vannbakkels'); +INSERT INTO item_type (name) VALUES ('Vannkastanje'); +INSERT INTO item_type (name) VALUES ('Vannkastanjer'); +INSERT INTO item_type (name) VALUES ('Vannmelon'); +INSERT INTO item_type (name) VALUES ('Vårløk'); +INSERT INTO item_type (name) VALUES ('Vegetabilsk postei'); +INSERT INTO item_type (name) VALUES ('Vegetarburger'); +INSERT INTO item_type (name) VALUES ('Vegetarlasagne'); +INSERT INTO item_type (name) VALUES ('Vegetarprodukter og retter'); +INSERT INTO item_type (name) VALUES ('Villsvin'); +INSERT INTO item_type (name) VALUES ('Viltsaus'); +INSERT INTO item_type (name) VALUES ('Vin'); +INSERT INTO item_type (name) VALUES ('Vitaminbjørner'); +INSERT INTO item_type (name) VALUES ('Vitamineral'); +INSERT INTO item_type (name) VALUES ('Vita Optimal olje'); +INSERT INTO item_type (name) VALUES ('Vørterkake'); +INSERT INTO item_type (name) VALUES ('Vørterøl'); +INSERT INTO item_type (name) VALUES ('Waldorfsalat'); +INSERT INTO item_type (name) VALUES ('Wasabirot'); +INSERT INTO item_type (name) VALUES ('Wienerbrød'); +INSERT INTO item_type (name) VALUES ('Wienerkringle'); +INSERT INTO item_type (name) VALUES ('Wienerpølse'); +INSERT INTO item_type (name) VALUES ('Wienersnitzel'); +INSERT INTO item_type (name) VALUES ('Wokblanding'); +INSERT INTO item_type (name) VALUES ('Wonton-ark'); +INSERT INTO item_type (name) VALUES ('Wraps'); +INSERT INTO item_type (name) VALUES ('Yams'); +INSERT INTO item_type (name) VALUES ('Yoghurt'); +COMMIT; diff --git a/api/target/classes/no/freshify/api/FreshifyApiApplication.class b/api/target/classes/no/freshify/api/FreshifyApiApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..a0639593ac9717d28efae1bb088474923516bf54 GIT binary patch literal 752 zcma)4O>fgc5Ph2_b(#iRQYe(dfeT7=U~jzyDwRk*nGX>Z4xHBR#+l;mTI+RzpT!Bp zfgiw+Ld=>-^}z=$c}DZ~X7<he{`2z}fERc?KnGh9x<mA^EwF#3u9eJ{$>f{lN~d06 z`#Bl%X98Q}lSPESz*A%8(&=(V%db)uBri6`c|qqzkyENXSu?-@yAg&%+`?^viFKJQ z3r8kfI<?lHt@|VsYrUM;&PFBoa+MKC#_`QOvs{(s^kc&__W^8r61O3z)_DEJ%b7Jx z$||RlTsK;<JA|hK-I=}A0(&tT{kmEw+Px3C0;AZbDqko^!QME#enq9gIQ~Bl0{&VN zzvXb;Hu{3&%4Ljr&=Tf-ywZMUFW;)bnAeUI2XkAwR9{e-@wlD(XMr|>qj#0@wAKqM zDLmg8>+97p%vmdI^*&VPEz?)irZ?Mp$%|^xH^mb~d^+LlK!oFAxyP1dEm-#^-yy!$ z;eD1N3@*9Da`-O+BOI``gS)uLAffoQ1_Sz|Xz~L)A8zWyoq`W4!fpejk3-yN{{#Me S%rUDDj%xW3$E-u!N5EevFT|(- literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/GlobalExceptionHandler.class b/api/target/classes/no/freshify/api/GlobalExceptionHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..55dbe738e04f0baa0e833fe168ee8251b50008d2 GIT binary patch literal 8260 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 Dh>O|2 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/HouseholdController.class b/api/target/classes/no/freshify/api/controller/HouseholdController.class new file mode 100644 index 0000000000000000000000000000000000000000..b948f84210de68555f4971e8d2a950038e7bba6c GIT binary patch literal 6830 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 QPkw4RHo%L7f6cD`A1Ep*H~;_u literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/HouseholdMemberController.class b/api/target/classes/no/freshify/api/controller/HouseholdMemberController.class new file mode 100644 index 0000000000000000000000000000000000000000..081a2af2aa91e7c698dcbe64b6394616b17ab21c GIT binary patch literal 7440 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 J5Frsp%ahOY>Z$+$ literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/InventoryController.class b/api/target/classes/no/freshify/api/controller/InventoryController.class new file mode 100644 index 0000000000000000000000000000000000000000..61693615322d9f30b9e9b17d194209f01cfa834a GIT binary patch literal 10349 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/ItemTypeController.class b/api/target/classes/no/freshify/api/controller/ItemTypeController.class new file mode 100644 index 0000000000000000000000000000000000000000..0720536e74cd0726514696d4f047a2abd68ae9e8 GIT binary patch literal 2490 zcmb7GjZzy`6#j1bSx8gCD5Y47DN_FFTE$u$inbJ5G(aUtZPDr`xd{uK-MD)L<xPAH zosqWI86Uuha{TTlBq0eMn9Sz>?78Qh@7(X4v;Y40<{toek?BPQ9R@mM=t8%^tm~P1 zUj{pN{?N2awwd)@<$I1JeRD<0;^tvVF4ndLx*e}jkiI}X<@p6OaPo7zW-8oE#%ZA^ zhF(Mk28-67KA5%C6I<<Y7AVVAfxy^AYS-GgOviEyW?K2STS!i}Ze2hO7Y)1<Lm&DD z`kSo@blPs-6BuZxZ%f0B$M7EB7l_&fvTBt|+V9C!GvcC`la5&o--nnhqDigdQVfH* zEYPP_=vbtszi(${J3T?=RV{2)(PR`K;EI6{W4MZ8f$?Vhr<|kFKw5rw=lB{JyU})7 zE3qpp+c8siplC0FYX(MQ_!y&Y?45#F;G*)5Z9Ujr7Z|BptE;ZwQ+*?fF^n6Sh+z^_ zv=!b`N#AMSw~F$>^Y_dhrAp?83`*pHTymAI4h16Kp1|EkIO~~RnN_618Fdin3}y}7 zh{41sWJsM=6;&kbyzSa*L7-z|a?8M{0@KaGKP4C|#gY@nP0U8|Ic^#FB8J=elC*B7 z;j)!go=-r%1*s}|AaK1A*P>$u!7;4HbZNq0ONF!IX9g^iy5vd9cI8^Rn34Xbm2tSk z<jh*mmgU=eUES<dJ2p9Fwj{t?Q$9&EF0WE6tw*@(EOTq=MOK!S&AT=5Kwz#p!1DNg zEiZyKPc3_8H&;8#%UhLd$ICsoG;5Uf>1S`+F1VH|`!xNcF`(xS)O=Hd%(n!fLV}#~ zYCe+x$p!udhBnHiY*B96fz4Rnb6rnaAzp%Q%hdy!F*CNCGp(Ae`A{ldRdlUmUY%4~ z1ARjGtuyQ1kiV8?ph7j&J~PpR@01FYoZR9CroFPCmCLr~&ERqV*Gv8ledz+X&*4s> z>c{EOd5(ri>XGW&x12Kl>NR!!Rjj|H%6-pMf%2_Vg)>24H@=Tz3r`IEpu5jg*2y|k zZFk?>lhsB;zu1s!Is029t*U|*rH?E(=g43*<#~JMQnHo#4Lc_e>K@TXe7ixuR_I!s zT(le~O{B>lY_p1_!}3qgB=Vl0&=E-J5Cn+>cGQGU$~y@m5L<Cw>4#-TG6|paWQ*o@ zs0{ofF#L8=*3e1_aE;w?h7G<0aorL*i|g*n5&BDl{}BjwxI3IDxq3#)2*;7BKOv^y zzySWjg$THOm(RfTOANilN3U`H_wejI|D)lFF?RfMeyRYMDjKkWuehQve2sgwa-Z`~ zj*D30tV?hkSmqPKLp<Wx&6g`2zu{vDF23c2r4K2JXz!j^y&Il-h3Tokar5abe0D_7 z;*r;wJA#;+KEl8sl#D=o7N<QBbtkUSyQ`dCZt!rp=HYM{8*%K{Ao_V^HB_?}dKRa` hb*>-No$t0G0&F17br08@e4gP)uA-d%gr8wy=znA{*F^vT literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/ShoppingListController.class b/api/target/classes/no/freshify/api/controller/ShoppingListController.class new file mode 100644 index 0000000000000000000000000000000000000000..b02a7dbdc17b45c17c49f344c6c87705b1a93e50 GIT binary patch literal 9272 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/controller/UserController.class b/api/target/classes/no/freshify/api/controller/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..bea9b32a04eb46d2549533d7b9f612a728323702 GIT binary patch literal 11683 zcmc&)33yc3b^edGk%ni$!)AdEW3!Ef&|r))Mt~6#0%1uk0s+Qx{510<Js8c1nK!H^ zwzJ}ROVc<_lcsHwrfKW6u~Q?qG)Xt7P1>|g+jQU3HLcsGZMwU0{(Ik>H;dlLBB{T8 ze9UO>yZ79C{&UWM&b{}2@mtqE3t+3frwKKv4WZ6JJsJcp=}deiYvso5k+X4g!j300 zX(yXWrL1iHP|nJB`9B2>sm$o8l@&z#GTG61E;X{@c)U-yb%fD~rVzpgX2B4ws1!S% zNm{9R(#gcTvX<#sO17YJ)N*!?n|4YtKi1NB+&pE*Q)YTJKImla^k_$fYo2Xj4(19L zjhiPdE+=6+hizw!f8`uA?c@ZjVpB&32%Cin=7lidzyd53%&pWxP-mw{GJ*v`@`e;} zw-{)~V!^CDmp^D_PuU4eu(GdGTRv5fG=g3?B6KTm3t_2&Wrzxv&tQyTHUUyl?Ktbf zv@U3EQ|5QkRs%a4afe`@`ZH>#2z~Nw)H-A5oScGVg@Kg{i@MWhHr<5Ph=tH%pcQMl zK#k9YvcpK$9JfwqvM1tWjx!P8&5uFHbn?W$v1{)@PhW4>K?TDMMi7RzXb&N7U>)uh ztgbrdfR&q|jjf$&$9B%r`)F=G<-@U=Ow>h(>u9Oovt0a&9hv0W9eF#IBxJL27dC`& zw}FkgM{w5+msl!;kPcI#U~8$p_6{Gn63)z5)uDXuUIUxaAqXp<>o+GRRN%B!G5NTD zuKmvKO1!sXTL||V*p5!(UFmkNt4tY3*Bi-Z#!G{>J62`V@~EbI!E<PLR8i1npc^}> zQKEzjHdm9bhfOOp0<JcM-GVihGv};CK1=t}h;-(iF^k?r2C*~g5cUXS(+=pi9CA~x zcYGo>3w`JhVZgv%?BjHrs`8GViuW;?1T~ov@?wF*{0D@;7Y7Usf&tR7#ZKGKHbHz^ zU0pIOif9=MV;6>$ki&v)!QSsHn#g3WxN?=GyLhd+r$|SOX0f9N9>6j3oLL6QV1dup zO);P^y&OVs1eJUf9tz>j1|EhfXs-%t;BdiBqgL9=GAkU+oUqb@o|))aE{k3_C3}RC zKr#f&zz9Z}CaNy0E0Z~4TRmpN$z&O`3rV_4dM0b1)2`w^7u;DI%wCF8^PVuXju|KB zr&5;Va-=(iRAS?J2qz4rFiv+1?5p|I9b8}~L6ezG7Uqqrd8<#NthyQ*0~3n3LtO`U zb{^c>tpY!5AP0J9*vY6c>dB{=X?INPebpjO1$jXR^KuPlH{vt{LA6EG87DfD$)|}n z@rzdiZJkM26DsDkgn^9Hqx$YFw1#m8=aqXuBB+hE3^n2{g2h^}7TOlgT24NjW+sZ} zIi1q>F$0e)ZEN=4uM~Zofw$uwOh>Mwy-C6L?@G<yBs1r`SS6_XMopZ_J9_d)JRv|B zPvWT%o;L6do)s*a#ym7-&T{(AGo7QX73yNWO2O|F%+U(!k}9dBH{$zgC|yqJ-(ft5 z_lNKU20nlvoVKDmG?DZxs(Sja(%z>cT~767bTL(n52<46hbXPoll9ZU`1xV{NC-b_ z;3N2Gf%ANM)GI}?LuM*Zy=b>Rirat8z{m09tdRV|MXhF8Y)>`6QYer>p2JTV_(@ed z8XVbUXLHT~i;gg!$0tMhX#+o_>XgNmo>eS#IFK-x415kvYV?Z+KCOl}@~N(&)Lbta zxTNM%tK4Via;$BVVO++Q5Uv`yhU+wZC7qDJt&@2(#iFOIKrAHn2UN2DIRl@?=V;ss zPwLKef`te(_O`%M#3$B7_Ur^BtS~HISd}-PMDp|ag%Ezxz%SvK1zUn@l9>uqn&@Q- z+DiSPYs_R(dos_5s&uLZfL3}QUoh}13eH)Cv#>^G_b(dwlFsRQ-x(Y6>okh?a<`EX z|AyKm{ANJ)TihQo0_?OJ6+s<lD^P#i!0+I9r{t@CGi~baNZ0hxnq^roUY<8RAsr$7 zo?!2^s8+~POH9*63n-M!)tOA``%)NR#UCnm`y*CgrEq(WQ-X8Bm4;^FPw=N9{F#A2 z$6p9KZ)9EN>+nG`N|w)f9r=z@?6m99l}GvPg!M1E`zU&n&-sn`Yld?#-7uSFO{}Rk z%6c%V3N!|p;`qNc@OO&ijY9*ShYs%Ed!YA$o!yQ2`$E?7xYJHYxR-rJG21_?*d)~y zC-kzkD#P9%K?7b<4)rev{uTemC>_h>bJkcUl`PcN?Ndshvif*;d4FA>|GR<zz<-i3 zd|`uyLaKF&H2RF*82W;|zKpH^#{Y!yzXo2#{{_~i!2@;i<oM!9PV;;KiX~(iudy%? zF{DOn8TG+5>TLpiVFgfTI~l*N``})|9iAH(C-5LIHgKCK^@cR44OC6$L<AwcLY|N& zL&7RQgn1lbxyJyFT$aZZZey}hX0r<0WjT(@yuO*WlZ0h1&WGgYGKO{oCnWO%wg6=Y zR6*;irHcBnL~uSV3uRGAZZV`;xV67c`8bitIoW)|iI2ENVcZ==c$=6q3c#!^4d<>D zDZh+1y>Jf8t#VsPmKw55xba`4gQ(=}#IHM*Xr2F=E&@eYj^wWJe6=d4VpA4eKn7Hv z)F3Fz^~S$Yow{3c&R(Z>*^Hw;J8cc*$A_)#L32387M>6#%+!#XwbgI0vCbK@iQt+k zQBn2GNln2BB_6A$3@T=f;wF{-8?)ZIfuMEfO4FOvJU!g<cAJhlZ04xMtySh!PNY_* z7*()75U*k`R{OCER%E$!{4~q*$W)?YZcgak2t6@)`QFZgfzLCT#0mPM2k+c|i+h&j zK2x36I966U>!3ZF=BY`R+C2Nc^OP+mdU`>zjQ}<u$dl~Htsy&S(@Q$j+(zjA7FT|E zAgZUW;rOtfPR32YZ+u@Srvs8yL78`y%k;tc4uv03<xtL1r$ZE8c9`Su|7IR8^_F|q z8TQj4HQirIA~!0u3bGq!j2=l=v6&0r#u*RuaMAD*7<DqtEsWrhQYK)h`rQ(Z{YJ>G z0$%+ocS{qB7qp^@f-|Px6#E754N>P!ZcXd~IX%G@H+aPQ^#Au_woIp-B1N7Wbf|dU z9OxcC)0v5cmCMB^vepDcGQKZsDcVzqC>94FvvVaZXeDDU(N(LWu`x4uAd|9Ut2?{< zdk0pxL?3x1y1WdUb~_o}x;3iEws?5guFj<s_Jo<@;}*fp9e!WF#Nq2{VVeg|=cdDy zDcRkSbi6UXJ-b{rfsm~ilu)M67KCx?T|+Ss78lC;%1>v*Avq*i7sOJ&=>kf3!86}8 zP^tuGg9=DxuKlq+Q+(FfMP=ubgIfmWG_hN7Z&H{7Or2E-kA?O9jweLb5tS0EPR6y} zh@a~zU*Egy<LB+<1;Nbud7tTw6{;_KO^r>(dZrIw?E@uwwIo`3a<{J#Z<IE4WAF!g zUT``2-Zw<B=S}|JWIDbp-RF?=6zk2^;K#=bTR*1k<8S0T^#NN+m2^*_*@7yeZoQ={ zrt>+4{Y0`?AE@Z`JY!eBk$phGE~ILR%vkPpc2Ys^=cVQ41X`9GqPK62ruDIRlVXoi zD@g*8+Nsn=fm5z*1L8h-7v2$QBOikD^;PT!3MWtjlX-Vn<&ik(F7$P#e7*C;mLcYd z!Aw4zuzGB@W7Ai}#oPXNb%Y|=6sTB`^KozJ6o)fzZe*w~vWt#eA6I0|(A$y8INXSv z6Yka~H>W|Iu;k@bNKW&-N6zphyLi@Pr%&<z$a{ByYvDbgzqkHCX_f7DbcOCV)5(;T zThYgDSAIg}_==YhN?OVW9y~i?1#~}F(%%c?(gP_^M3<RL4cd;?(J1GrsNTY=!w#kR z=BP9Z??T)g0{4<MsT+AOatkYVeJrASMu&Nuul5xB>0=b6OT{ulZ`HeT_Y%WS7bkc- zi;PNHwmZ!`1xpK$ioC}go@{aWMNXy(r(`l7<MgI^lc$eDEE46cl56#lJjL>*h;A8{ z<wgj}GhD&+U74|6i{W<E@JtAN0VSf|&fs4Wbt0#~d2_D6d48<FdGD#ec}TCnc?_t( z`7R8<!@NlDmfKM;cL1`1Z6UUPxb-E-nn{GN;U?fJZmt1a7O9p=EO{BXs^^j0uVQ%( zuNqceL7V!qz6LL-Zv4NAUAIhP$AIeS3hMC$UB|AY*U@`)?G@aA8T&8e(B?Y!I?`M> zi3c~=H`iam@aBfL=7y^nQ_|Cvt|YFV#7TD!F0fXX^Ru0A-hgi`L~swH*n~B>m;bi# z;BzaLz7H9`0B{bScpP1Lf@-c{@7=C~vQk#@7gd$j5+exeuNG<LQE4wPuGdH#YB|1L z)=E1M<<DWc#AO{1T_5L(-kq|ZFB09wF}09;i5k#UBdZBu3;*BEpEa^k?%{U>L^iSQ zUfqR1HuDeu#xm)k2x3kRYxxgwp}K~AIp9nB+rEH>3dYDOjrVn&IeHoAKBt>5Xxn@m zk9r`rP2#N;AT8Aj_wuNC4{pKzytwG&L32Oi*vGdl_G?h0?h1TR24oABW#nNa;c25f zO4&xptB8m2ylmyKIzB(6b*~rM;_JQ5*ZV$C?+^=2+0GFnow5UUTI-7hT4}vetMN{) zM&u$*-``d{iFdDQ)7IAy-&3Mv<h{OjHKJT#vG(F2I>KSxj3ZcxqqvQC{W0G5D|5S= zZS*zUsEsV_yHcC6rl3L5a$Q=3+1hd<-Nzs~*-2%;Bt4$VzRsnq#a~eCqj$gW8a`NV zwf9Zp!;|<}e;c2EViG^4zCSgI7x?wFFC(hHA{Qqy`9aKA&ixtHa221g!6aVh??trZ zuO8Og|5}OmY}mvnm0_?7O<au0Fi4OYl4ya2J2A>PPR4KuC-4w&;%(l=7xB2@<8eWD z$!;olJ07gG^r1jY@A56(t8tn`=h#E6x^r^B^p%=ixw=Td48SFqt?KnVwmqrzqQYOk zhTkfp_Lb}S>QU9o|G$43e{dClT!Vp6V5w#YiTssEHh-hYhCe*AIYL@^aC2Q-a~*xB z;4_M-zD%OpT(2SgdIf~d^+gPsDM%ab_*xmI<k)(O?dSO9G~e1fLry(QVmPmE?1|@F zi0Y&4@tDT+03%}!$L}Ro)UtQ8?34YB531_p{3OvmK%7-ufo67iBL=ZalS>_?MrDxk zR<GmDKn-8n`P!>k9Fl{<EHf0~tB0qu&Bx`4YXn^63hTLw4GNiM*YFQT3oIg(|K$3u zhq=ox%Ig$4pL~Ji+^AFcl)zKul&AS>-!puB?pcjQt8U-mYrR2^$^%;K4RTB#<lM`! zK>Jx;1&5G7kJ4S3s<cLnieB|5xlg&54#S7EYLOZ?yxH}+hxui4ErM5N*bC3&T!mU+ z%+v9oi#mRTP2cqO{I5xT>x$GB^$L@fz*wGx4{3c|_K5lV#C&~Xu0GYZaI-*SI&G5G zwUMx|O^&E3ZPvQl2=lY{Xa4jpCXI*P957F2RS@KC4hKF$l|G84_*jWrYkjrW`f9D6 znOfFVwMJ%QBpH=4&q#T$ORX%f)S4$Z`8qLnJumDp%WFl}bA8ZN>{BrC0+!>=a zVsWhwUsl0<kKLwZF6D8qt?Wvrj+c1e32iH#%3OCFloWkbCGbyD55;TSTQAF;*6R{E zdRgXQ!lu^9Ygc5!=keMle4{l|b48Y1g0!x=!~&`96295G_7c9*+FW-DM_QZfFX1yU zQiiMALLH(pn!Sy7TgT<E#|p%>ird_|d=<At6@ZFZw(Am5Iq-J%@_<HnyL#=7a#Wit z0P8i4EU4$8x$Hid9p|#kTt1x3%sj4_kk&x(g(t}noC)8sCnd}0>(MAVww=|V=k@0W n{rRZ=d|ZFNO@F>af4)ne;5hXH)m^+IeRo5XJSk7hvuOS{bckDr literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/HouseholdMemberAlreadyExistsException.class b/api/target/classes/no/freshify/api/exception/HouseholdMemberAlreadyExistsException.class new file mode 100644 index 0000000000000000000000000000000000000000..2ca7e4dadf51c51be2ede07e72bb722a4721daba GIT binary patch literal 623 zcmbu6&rTaL5XL`;kPRU~2?g2{;eZ4j@Tn3K&?<^RAZ<Y+D0e5BB!-Q>vc3FyEKW#0 z@Blni)!6`{2M$Qs^32%&#`Dwo>F=LM00;P1MnPch*k+!FHtE$zH0qG6tHhD&-PP$< z``{}mVmd;piU?(arAu|KWTMPK9^Q5-4cZ!k(!Mr2{1jN;jNb&U;ItX+ZM7p*1b!JS z`;Poj_wS@iwWQa4IYIb6CTKhZ9FFV%S7mB*t1VD$+8zlk#M;nlmJ?s7PQoX(*mhOY zR!-;pm&0NhYA?`;KUsZGpwhCL>(Y_Vi*0|1c_(j%!1wda1U;g*_L|We#@L|p&N10; zY~4WmG;dYksS({+cO`GABRkskq?%~uIr)@RsKvRNXQ1h8m1NAa@$M7D5K?)}W}+`Q z&rXlxlja51F~i@Q55Y6SEZZvYexSe+5N+4Q1E%gdEMSgpg*`Z_#L+xQ)n^$N@MWx7 T9NQX}*w69ZS6<766|DXPqeQV# literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/HouseholdNotFoundException.class b/api/target/classes/no/freshify/api/exception/HouseholdNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..198cc2b0837371a7415b3d51787c58f00b48b740 GIT binary patch literal 579 zcmbVJ%T59@6g@>`0Ko_NT!{-4aA7xUOnf9pB`hY8fU-3O3RH)7GSfl*ELSEj`~W}7 zc*h62(2Z?+Up@EU)7zKVr)L01SWP3rP^_6Kltbh7O4`^`-$c5XMH15vQaLzC6XaTq z1^0v=@bkN_^sO?QA$6#<vd0WdW%nD<vVqcrgG$>$mSIO5-VbCrRQ-D{e8uHgKA*I$ z8(WQ={wO_FuCy7Fr=}+v=3J#^JsNdna3MM#MGCIz3a>2!75ksTq#de|VbA?f%L9gN z%S1s}R#n_#{cm>L@mm?znvu3@B-<)fMB+r#@I*Wq;;`?UV8BB^o<u(oBYA6r8-6Q0 zyrXoFiwTxDW$06iY*B6$5{v1v@FF6x`D=-xwLY(rnBX(@#>G{&aaljZ1~T+*@nW<c z%#h5Hw~GW>fU{L#kC=KOGl4wGENM_uimX|(avw0vVg4Pn@Gc7|lFrlJBAq3PWvsjb D0U@8N literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/IllegalItemParameterException.class b/api/target/classes/no/freshify/api/exception/IllegalItemParameterException.class new file mode 100644 index 0000000000000000000000000000000000000000..ee0f978c0e7493d12b1261266b9610aea0534d48 GIT binary patch literal 629 zcmbVK$xg#C5FM8;&{7JN^#~FYi-eDWSR|GrkOG3X^orbeni>*2avTbu#R-W6AHYW; z#w-O1#DPQ^&zroNc^>=u<?#sswqYg@DHzB>dKfa0Wl+8nH-ZO3`Mh%5!pKUk7-YAk zl6Hr|<f8XQs97VGzq!=N!61V*rFq9-+?Aa>E+WbCGoK#^0s101wiuoXBSN%jzEw}} z>ozhdc~aqN5;oD)MKhqtxTjkpXb2-6{s^XRSH=uBynpuFWRMFnj)ni$;m39ujGmzF z>ULi$b<5XuVp@18ovisk_p|CMGMKF<%E}NMGL|HMS1E0Un<iCT_q6eO9J%pz+&p^P zT=O0_c~h!37kw_TVjNKl)+jfLNqXi+1PN(a__ajW+K3;K>GKPFy9bxm%K1g5R);yr z(P_Jf(M#t|Xo%1btuCHjUU>j^PhJZ0WZm5WVr0lGkT><tf?+5UB0h{ji7JhfpJ4=C U;@F!Vhcc~2`Z+=0BvS75D|(fyz5oCK literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/IllegalItemStatusException.class b/api/target/classes/no/freshify/api/exception/IllegalItemStatusException.class new file mode 100644 index 0000000000000000000000000000000000000000..6e9bdf62ad29df00c995767d0328f952a077e5d6 GIT binary patch literal 581 zcmbVJ%T59@6g}lNh#-pZmAEhw7j~n@1U2!2(PUyGAX`(QKy{`wndyLjmMaq%et;ik zyo1k$Zfw(gZ`*V4IlX;(eR>A4kEJXU472BsBm2TBD<j=<XoQKv98ySI$mC%mOOP8e z6x<QI&ue!b=^N!~hRmMQ${aAvuiM{%h6$AJS1T<GIfgCm@m?Uqf$H6J;VUjb^Z5tu zIk7gzq(4e0*DEcC)Unr<3`JXMc@ep788k)Pp_7vBb%fIrfr|GZhbc2qA;XUSAId62 zuHi*NN1m#fVdZaioAFy2mg|u=%9Sk@DiU$1wMVa@#*l_x+Y9<U^y5zS0^!P$7u@oZ zZ1c9#T`s<`ye>nZQsjFFNJV-moQMRh{aRvRjL*-=eBmdL4o|M@wacqoqlr~a(8tAt z(X=p0Hcz{4Bq#!`jS_oA@`1tx3S@KSK}i{krYOq4!%)QZ7&9}rCCrj9(A^xZd5Hxq Fz5yj~paTE^ literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/InvalidHouseholdMemberRoleException.class b/api/target/classes/no/freshify/api/exception/InvalidHouseholdMemberRoleException.class new file mode 100644 index 0000000000000000000000000000000000000000..353d508e271f6cb577987fd381d10b425ddd5b1c GIT binary patch literal 618 zcmbtRxlRKy5Pc3I3pqH#T_A-5DWSj>5)zj<f`YUlk%Y9!Nt~=<W3Rls9G^vnM8OB} zQHa@a78FR>^2~Vr#_wt7<@M<qzz!D2kYZRq(Ko_Z-I8bGP<qDimIiXrmbPS#FSAHv z)IlZ>2V)E~SK>x+U+6xs-gRUUDWe%O+e)iwmtn5#eghhjRl2`bX*tL;>}bP#R)(JH z-E$ErE<fw}hk)8A|LKsvPV7H8M#_~IL;BEkCBvkvv^<Lwl}*w1DN}S!NBAvaRdWAG zrXx><414asxVIRx4HMgrJXQ%+`44*6lQu9c)ngs0fo!Qzk*s~KO(c?@k*ZDC*gg+~ zq)9z12J+U}Ykn)+ysdPXi!Us%%P^o4*`V4uBsrrru$Yvr{`!R%MFFpo`NHQ8_Kz;> z)$@yLqlp!a(@c}aXgkP}&C_iIDT)ARt;ilR@<3q<1+rQ4prQ;#6BOm&VVK0!5Hmfr RMa+;d(AzAXIf;2Jya5^huA~3} literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/InvalidItemCountException.class b/api/target/classes/no/freshify/api/exception/InvalidItemCountException.class new file mode 100644 index 0000000000000000000000000000000000000000..c1b379e39ad1a3c5342ad586c6100f34ac612d96 GIT binary patch literal 615 zcmbV}QBPAb6vzJ^V;9E|8G`y^t`8=_1AQ<gB!CIxh$J^AZn#&|ZD-qot-Wb`hkh)c zOnmSI@S%w3PDCH{#Wp=XZU5(-U)!78Z{GnN;pq}83j1evW+psHT~6Lac6K*Ci!@F9 zuCOr;6w~NZ>uj34z>#N^+G5%xUq=;-32F@_SW;NOFf*ek#*TFBbD#1ulS1u~Eyvdi z8(Z0LK__~)ql4{kg1W*h>-5l581wLpHaTnh6|e8uN}iJv=a0+_TiacQ>WLeW!fM8r z-p{elO>ZJQ&CK=9q-#8v>$}Zr9CJ|E%l@O{fkM6G3g4$wE(<*WC);j$QH5u10p=-n zIj|rcTkGQdeT85@bAF^lUOvOnn<-s6f2psir+aJ%+T3e(n?mkvppL{AK_C|8w+gBM z@~<hzG3NT6n0x*5o8z~i+N}>CTb*;fzytZUvMK2amc=$?wTFs$K(f<RU$Jm4ZUrl1 k>oP-vYT`W<ukllcRXmz&*5<Z}b(vS>?6Hgu!X}>l0Bvckf&c&j literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ItemDoesNotBelongToHouseholdException.class b/api/target/classes/no/freshify/api/exception/ItemDoesNotBelongToHouseholdException.class new file mode 100644 index 0000000000000000000000000000000000000000..685de29c37663c729289d4a41dbcd85193e5cb4f GIT binary patch literal 628 zcmbtR%T60H6g^HthKBHHc<+V<60pE4q)N0@p#*_6LTVDSMV{m)W0=^Z8Bd^})m0@H zd;lL+^-fx#3l>P&@_qSS-=pKl-}esyzF=b(C4sGTM`M3rDf5kWen_!3Bi~s+vUx_4 zjR!SUFyo<Ghlg2#<!d!jGFE0JTX%g*oVG@w`dJ(8js#YBf)_x?rP_=RcY7Xc0$+`l z!<4c}4}VCNXh~1~vLJE794@Roo-*j#v#0t0O)2l}_5>>5?0^Io18wLcABU87RTy)n z5!k+pdn(mM{;ybZk<J8~!8@lP3e-9_Py2MLi(z|j;=EsoA+XubjniZ5=}a@VreUpB zp&T>&6xehmv!sw}n5r?|+Vn==QYb@h22wp^Wt*~uTd2dmdB%ihCMwRE%l4~JM9wAh zjLkEC?znk!)oy*iY<0TW!Uz7@VhP?J=GfLbJ3xsez}stxUnu|Nu!MQGHTK}9Dn|<( b)&Ih<h@~m!<J2~=%zmElR`{$E*0BBu`DwBK literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ItemNotFoundException.class b/api/target/classes/no/freshify/api/exception/ItemNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..7bc6db4158ae379b207dc9e7c740bb5223b55c39 GIT binary patch literal 559 zcmb7BO-}+b5Pbz?0YMbRuM-|j#Dk3o6BE?Ls6>+uB%)kRfdW-%H@jWXpXJHKgFnC@ zWt>Gt4_<83`Rbc_)9Ks$%PW8*tfdfRSh%!uRMy6pdnVM~3=)`gkj%nCilKNX#)1!p z?(_49j`XZDnjv|pw6ezxrET{I(6qkN{c5G<Aj815;XPjl1J!%v!c$y+=ktiMZfq^$ z`&Bi*U1>2SPEA)b<Xxp@Jsh>Ae=XWWiWFSa5yO`7RpfsK6Lz2ihCTP6Y*mI#(}aFU z)>Kq{<IkRUqsK9<UxnJLk!-0z5%r0tX^ChO#C+fyzt00NdV0?nBRMhtJ)g)nZ!6v9 zVus~cGVmxxHYqm@sDZh$7>2~X^=FBJwI079F~g_pjqBT5<EDOwO{D3cqQz)Cm?xPf yZyzzT0B5Jbo)Lc{Glm?=3~5kOlB@-?vY#;Iu{gynO=ST^(mA?Yrc;tw!RiOQ1eYcN literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ItemTypeNotFoundException.class b/api/target/classes/no/freshify/api/exception/ItemTypeNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..392f2a0d0ec0b1bfb73c164e8d69fd5f63cf7cd2 GIT binary patch literal 576 zcmbVJ%T59@6g}lNh#-pZjlqS9xUdUDV&Wq)D$!&D2_Re3fdW-%Co>(<&vIqr!VmDH zjCXu5bYq*|SI@oY_V)SZ@d>~IR<cMi%%591F55d_mbJ0vzKL`%hZNEdGI==2668wU z2tE>ez)x?x(znWJhRnXw${sQ-Zo1!qmJO61>{U7ratu4#@O~h}q3Yjp;VUjb^Lb3$ zCf2&KwV3lq<>Y3i!;m^QJ;_jXm6r8r?8%@lyb(o8uIY+VM+7SNKY}ScR3Ssv{RiV7 zL#}0_pet)CCRqEkx9#|$46DsZTQ!y)6)I}sNYms*JQeC-*EPX_hkiVUejvtjVuEWv zkskMy?s4&j<xLs-lp<S{8->(F`bLZ*;@|kS#L!xwpON^&Pt_ak%Ua{2eu8yO(VxYO z(RMIRGEZI=39<lZtHd6VyeBh(0?8a{P*R4h8M5;4FcdNShM9YlCCrm9(A@%^MTsRW FzXG{+o&Nv; literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ItemTypesNotFoundException.class b/api/target/classes/no/freshify/api/exception/ItemTypesNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..9140baf4418295aa2dfbc40a435bfa7b743e5524 GIT binary patch literal 591 zcmbVJOK%e~5dNIkhLBQ7ngS=bhoY7Pz5qh%Lqb&}5UU_HQSQ!Wl6A@2i`UzdpT(&X z2YvuQs$w>M&_lUk%k%O#GoQ!5FMs|5aDZn`R0LiQY^Xh@p<iZ{hpF;$LetPE6y~H{ zoP^&Ba?2KKs0V1Y5uhp1JymB)E|i(e<L@zLURxv3*w;q;LxJ8-^cOJnPMi7O?l?e8 z;El0z<|t3}Y$;WyCEeu9PfTM}vKUz3w}qMBDP7&!9ShWs?34u7BW-9<q!V%@HCb?^ z6WLfT#>(l^zYf-XqH}?F(f_pE6KD->;bQ9RvcrpivwK~>Rp9waVZ2UhtaHsIJ{V)Y zDhI<H-bdEWWuBFjm^qcwxpiOVIZfn5o2gW{Sb0Ku#wj%9+#+Wd^)t07n85bEB@*v5 z`H{sfzVhWWw(x-et6YM2fQKyG?7c;WEg*Q+5f`ZbV6%cXmMzxcqy}4$*lJ(Fu#U$o U%#)Supv!uV?>6}K2%C8N2QLJqI{*Lx literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ShoppingListEntryAlreadyExistsException.class b/api/target/classes/no/freshify/api/exception/ShoppingListEntryAlreadyExistsException.class new file mode 100644 index 0000000000000000000000000000000000000000..b33c1fd3486ab502636078cf70da87df1dfafeae GIT binary patch literal 649 zcmbu6!A=`75Qcw;kWE7<5K2pL%b^mfDlASQQ7T1IP?1(tA}Dt!nPlB=?3L{W@>o4p z>VXI7Lsgv(CFRfq61F@ZkN@#}8vpwJ^A5l%cI&7J9Q9M1=h{r;O#2X%32q*%%#j+; zW4h&-kF|+IO0j>eY@mwO2(>06)CIP`s%s@PWu~%sJEA;jYXoW^wb9{|z|Ma1PtXsJ z>z%X*5gGy=W97t=PxWLjRjwsH<jV)NgeiI@Sm&Orx4?Q-XJx-V5U6(Tm;^QwZRnzy z4ar@pVaAbGVn-?)D5uNw-(WSQ+6#1(XV*UwX!LF2Ms%jjavz?^eNeVU;O%8$f}YVp zd(C(qV{A}m|CsJLv2H4TUN&sv)QoPd`zCK_D2LjNrCMs`CHb6FsL#2DXQb6@l@(0$ z?!Ql@A>{Hio29<q{c>@ZoOiFVhZp?0<q$k0tg&tK=@1q6farZo{J_e0b}LwCTU&(d ec*%bAUV;s5F7CG$wuNop*ZJ-huN}f`y!itw@x2@X literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/ShoppingListEntryNotFoundException.class b/api/target/classes/no/freshify/api/exception/ShoppingListEntryNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..494ba2c7cffc3994c3933196a6f6bba3eee70a18 GIT binary patch literal 654 zcmbu6OK%e~5Xb*c(`*`23Mu7rGY3S=p%yo!KBNj7A+$=RrsRs8WRf-A*elzcG#`r- z5(hp29||!WLg9eK0b3r=)AQ5#+xIVD0i57*6E%T%XEJ22D2$!T+=M8}M!%E`6EitA zbFwln3z7>Rq;*kFTxrMBus5T1Jac8B%;n=2>ex)sXd^*WVE3b*Yn5v|Rp&P&Dxz^# zpmA)hiKha4`|0n5e)J4*bTCNJ5;(R_O+1CnOqNO)M$xZ&)nBuwjCx*?_FU{%On<c4 z*gqHu)L*+X3GAfCQm>p1$zSPV&Yn){Mmis8Zz_B3tjEj*fz$MVS|16t`mXdN>YA$4 z^MBJGRx=QIa#`AFW;8ItFw~jlS?g+G%=9XCeyT!IO=#lvj26ycs|5|!(Acrkx4G() zLct}}=h`wb&E{O^C4)Ts>l0awg?h{4Hh-&karL2l@xJ#4PqD?{SuMdk!5x-uwqByf v8j!r`h|k#g#A*%OEE_9#6L(o}|4hLS?ychYSF(d$zPCB{fX^P`As+nzg-E^X literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/UserDoesNotBelongToHouseholdException.class b/api/target/classes/no/freshify/api/exception/UserDoesNotBelongToHouseholdException.class new file mode 100644 index 0000000000000000000000000000000000000000..ab6f66b66aaae0a5efa5ab0b6af5b343a26a33fd GIT binary patch literal 628 zcmbtR%T60H6g>_h10j?)Kxucwq7tyESCuN!f&!#sF+yq*vaLMHO~!O$k8BULpT!EP zi+(^qs^U&~w2Lk(VaxaBbA6AFfBpXP6TnBjT0%`=``nX@$Ci9-Y=~3Jt(nHb#+fZW zWi}r-QO9D0Mhg*^1lBLqrINWaQ`!ACq9SN(1R5W-(cwT~b0_%&=m)3Gbbogkp($`^ zteiOVnVx)?s?d@i`ejApggKnqa5QHyu%{36|C+L}vpW>1AKNhrtR>peSvgC|4OE(Q zrJdN3%7@D7D!(t*L#DkzCwb!ZeSv1*mTp9!bTw@6zc|0G#1MGhD^1Wd8fveZTF0=~ zs#1=by-%#0N?%k`O`Mw1m33d`6{RxOW-QesR`$pj+(LcsEj<%jyi|F~T;BZii7bRd zp0atwuN-wwzVy1E&%6Brwz14VTP?vm!V23KXYWws2#EID;sy)X9M-VPw#gpc)ZpkD cN3A;;*6@6ec`>(btg~O`yA3{@gqPU51!gd^J^%m! literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/exception/UserNotFoundException.class b/api/target/classes/no/freshify/api/exception/UserNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..33141a3aa5f1b11d2209df04d6866f25ed6f87d1 GIT binary patch literal 559 zcmb7BxlRKy5PeQU7M6rSxT!*cL@2N*kdQbe1Vj|8MIuLwoWw~CiM{fA1AG=05(OW? zM<Hgp3mR;BF29*K9>2UkJp(wz$|N!jGtF4qiZ-s&Gl}l{$YH`mz5oxC4D;7wEcj69 zK0mwb$jB+98S)28D|f`OxEcHa>dq?N-><ej_zYYd-m@|usNOvnk>c_zpQntWakZ51 zSJmuhwZ)J-F<r?}3Y3;%GHOfP5bYsF%7N*KVM|z*`k%p^8>pCJC-^7ZK7(I3iS5Xm zN{g@k+0%CVIEK~BL_0N-Efp)GKGrlXkxqh`_X1=4JdV<*_pBJnTVrqdt!(qQ(p@gT zvHViT5v9mF<t8yTFfkUxgt#~UEHQ8{;^!p3@l)YN<EnPi3{SC+Df*{$G1?xcNfyZ4 xMTRWE+bXk1WFN@Pph(gu4NA(BHA7b61BMc2-!XIVvW$7sMY>y{vna8I<u@H0mu3I} literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/Household.class b/api/target/classes/no/freshify/api/model/Household.class new file mode 100644 index 0000000000000000000000000000000000000000..9d3f2ce2fecf6b3264b6b3b37abebb8131ebbbcb GIT binary patch literal 3140 zcmb7GU31z-6uk=u{DE!!*^s(5u9Mcrag=_i#&PR7PC|p7PGCIK>5~i_Pzn+wiO%qM z`U~2bdOFjGKJ}?Ts?&2<LVzM{<z*$U&OP_;xo5Td_rJgXCZb1lK0^sgW@su)DM}04 zG%fA5EuEI}y07V7L+e-#+18$0Jx8{zc0*9Yz>urF(SOmkwr)1Hie)xSOf#LO8JZO| zW$GO%Xn6!vb#22(WwSI-3!rEXIL~C~QreE7MK7Y~8f~pAT}7J9(h|c{hATS`r&-C; zD$mS2EvwrFZN+e0XO`CKy$s#TQl4&ueOTYi%Qv#_3Q8Xurr{n5O784l2+F_enXb{1 z7lvb8w&k&DTCVOImWe`cp^%?-+tsx$3In|~>ryK>N`mf0zIrB2Y3r_RT<Gnd1Z>)I z`MKG@Ap-eo{jQ2AKRG?Gm1{o=+K9|?Vzql66WlXZqiO1H&xXhk$0a+g+|WNy>(UWu zHY2mVG-b^?)6G5*nY!-O^#;;xMPg69*Zu;M$CU~e-qE{V*?5eF&jcM7v>&g|GMcQ4 zJBWv`j#%K-bnU(hPBo=lhD(=sc0HP*PvOoJIGVj?nDV^G&a3I@Kl|0H>+K8OHu%|} zoN`+R46${SuB;Zao-60Cj^*{eFK7jTU?T;lUmAb|+Y34f&%H}ur+M|fSp;cuc>>*Y z2p$y`B!_WHM&m}B;dsqh*$MZ8cVX^Kx-F~mgKk4PSA7LC2=H`V8x8Sg<e(KG-WGD% zM+Z7GbbY+3*lK=bOCfZ8g_(Am7v*XEASRJ7v05~uN5z83k7BZnh7B}k%2$5;(CH&; z`_heXsnYe2O#06|lg3wZJo}_LU$l7ON!rX-t)5+%PYvGX3xRR&^AR!WV+(B!w_l<y z960MZDO0%OfFwch<7o*`8@PUe=MN=qQUMb<`~24o+rsMvpL7^MQuo^`bPezBVD9cu zBqV)IpU{p&yO_W!7eI^GLvj2C(7o%RStPqh`xx(|1Pxb#YpVDMiQiOB8b+>`XoVhN z<N#jmr}P=Ff<C7&FouIO;o$Yi;4kSblo<}53kT;Tf<48)M(&4^B#U8^jfo`RfaD;O zWI0T-Igz9Ul0*D1dCNJ#H35Cn#l0&MzvC_eaR*AyE0%Q+;Va4SJo_90m%{H1<v{r@ zeFqpTG)9?;OX*q8r<_rg$Ml$zin0RgpvpO>Ovb2^9V_SrXwM62cz7E#ev)}4@tX4l zlc&+i7UL#k&yOctqT(>wQjqK^CZ9zoTaKHIcg=XRRoWXSTMd#u$7G($zKp*@#5Ck6 z6#t|()$roIE6No2uV}8ApSq&OVm@_6Z<Vp2Y;feo1~w@8HUOXcU~q#9>NAm4cdW>i zy5n+Fsu2ZL;-R+vJ636c+5?K4vzAh(Vi$0eSi9kpz9(MNZH(jF5laetZ82gKB<KY) OB&ec3HvGXjBl;gJ3Yzr* literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/HouseholdMember.class b/api/target/classes/no/freshify/api/model/HouseholdMember.class new file mode 100644 index 0000000000000000000000000000000000000000..d4138b1a7c23ef13003b556291f41024f1cee750 GIT binary patch literal 2326 zcma)8+j7%Z6kW&hg~UpeK!D&TglkEhi)gvF=9Xasq)ng`LS7jqK41k|%1AOZ{t*6y z&NRae4}3sBs?)WP9Me&xu^;Rs9j~?a-s|kMlYjpG`VGKCtc{|8kqU|yN+>H__XGP~ zsH2wqu4_AouH6or+OuB-ok+I=ueqh$dpcAoxJ`xn=1}NAbhja4PFWbmn8Il5SWV&b zAPK{?ER5p^g(9<H@Yx*F8~$qWlNP3Mn)opAw8ByjK2_B=!HqFY<7@@zES$%T!sLPT z(Xl<pe{a9qJJ9>FLivH~yYVB1k%h%wg$vsqKX%)C*NxmgPp|oY5IeCO_>sb;%>(Cy z6UL5xsKdyOV(ss1dz}_Go4UEtY$(iULbe>gyA!<fH4(Eph{MPTls-CMhecNVu5R#X zvLpW<xc<|?>$H997Ja8pp4I2Ql`}1i#iCG=2eXx}weEM?I&@+!Rb0%>Q6M|rLn)&C zdS`p%<#UD7dmW4X^1|Y9ry||MWS_DR6(%-aU%%`~5AHa0TjBI(u<v-gPUy;eZ?hP; zT-twQxCoTDm{q?U6s`_Vj-(1n(sC?67jIfJfl7NRtmH!b@sm4dx{-cGiC-%V!xbZT zNn1{C>9`d%|8zp0a?I{yk(BBOQMfix(Fj$@N~)aCBbXv3s9=*aSM#v_1pZg0P(KYx zkopEWkq0n&4kD-W8hagd!hQYBmBX7(Wxp!ZA@7E+b1cN&1}<~-O>@{5xpKyWBZF_U z*0>gACieDbFoGYsH_P|A2p2KWhf9%B;QY%*T{%Wwr52}N4>iv98b5Oy*YT4HaRUq7 zSY!a3tKwR!{|)uoWKrk0<OED&iQiTNz%o|&rm$*AX>uh^KATCtiJvKvCRfwsS|<4y z+{z$Nq{(xc<lDGITO{&tTnk*w^`#@IzxY(Z_oAzYeJ(-tiWWnX1G`IfiFc9SDBQz+ z!cIt5hLudtyC*qnB!4y8osg^!E15J$PjcKyHt--T%ZXtnlTPYMP8rGb{C^=S+~ZoJ zC$;()oH2gZmyb}XuN<LTzfe5Fi7=M&_jbbS`&;YzOC@s+<a}!Kr=Ax<o+ODPB#Eh_ habN6``i>KtInfzRC|%-sMrRc8h^hrV?q9|yz<+Tk^?v{W literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/HouseholdMemberKey.class b/api/target/classes/no/freshify/api/model/HouseholdMemberKey.class new file mode 100644 index 0000000000000000000000000000000000000000..62aa2f14991fbda45de8cb186b9fcaf7419f93c8 GIT binary patch literal 1153 zcma)5U2hUW6g{&*kq?1VELN*h>j$85-$hMKqp=axSmo6W>=dRhyUp%mQh${uHYPs! z1N>3OGrJTOc<2LjXJ_s?_uO-bU%!9+1n?MlbFh%gB3(oVYXVKrw+{mqj`iV*EswQ5 z@g3#bFZ^k!#=h(H)MTK7m+C~IFg`oncLXZkBl$_%uJlHB*Y`#pLwuo#oMBxfI@ove zD4>|d#Ue^56Y>}FdT^wM5fdM2Pe)G#Qq5LBi*<oooTPpGKm}U5`m-FkN?_~l)Qj{) z^>wIu@YM7CNJiTCLV;~c`6z=(+Q%vgbr>mcsO&x8old-tK-!ZNG8E_XKWOUD8j10) zG*Z#LU(;H(*;;IlEPFIYpxo7-dNnnsyi1f-yZ%tReMz+xHakp5V@+l4?s@H{&Kz~T zk9`v;g$tTCnv0TJeLC7x(b#w1$bc<IY@RGcp0VsMfmV^^5BzB`RL`~XxjuJdKKTb` zA_9$-E<d9aj$=CSV23ZD0IFiN%=6;D%2#L3Hu$TBxWo&-kmZZb_^^)4yxJnhW)zH> z_BV(x+*r86)gXZyu5v9V3E0LpehFM(3C=Ep>np)G&|nEu`5~jlxYoXR3h|Y@e@mBR z^k$MVD{W*Y-R>|uBluCFo|~&Fv*)Eue40__V#*SBS=p%UF{T*H?eECPO568OvBX`8 z<u;Pkx!m$hF5&SsERGJynVD61V8rte%k}?Bu+pOT^%Z7XxJ5P#x8vcPiQNJI08fF_ A4*&oF literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/HouseholdMemberRole.class b/api/target/classes/no/freshify/api/model/HouseholdMemberRole.class new file mode 100644 index 0000000000000000000000000000000000000000..8f7d7ecb924df8f7455ef58e951149af6d3cd828 GIT binary patch literal 1209 zcmb7DZBNrs6n^g7(ybO46M32V0!&>2DJXmzAcTx)GK5fBLi}{MUAB_0HC;#IH-C~s zB1EI%vp>psZa3o$n7AhG>ACkj&pGG0=l=Nl<vW0Ntm;TGSbkt1hoaSRkKfz;oohFP zn(*wGLAxayfmhoV&58&Q0#BsCpqkJyK=#ln9x%+8{u^D8@T7^9gr}Ut{o;Y-kgK;$ zm>6WxbLFklVbNh&c-sfDfnlU|44N20hC!=(fiD<F^H%AEpK{yde%;=yoQP^vFffWc zI>t<lV}fDmPe9RcH>reE?zP3<F~e%U2fgj_R;$pn;6$P8*9*NFBtgudHE|bH3<GPf z??xL8W4%;e<SVP3gl16p*(6fZPMes)tW+Vcp~bM6xBAh6GX6%Y+jNKw!zI@juiNqf z-|&h@D=%&+#p*+AhD<4_a<9xoS2A{KRi8JBJ#$?lhV-t88bNKJhZGZukQ!5?hD*lC z3DPXr!47tuAgsAQ_vDDUb)QG=ka(56Ri@!tt9o5U*LxC4-PihPVWU8qouD07#f~dA znYdxr7v*4VF4M7$(p^zDC*{}!WNChZbXHC*?P%oZFiUZd$eST6AL9(hXAE6o_#=4? zkLf!Q?<o{NjweXO@hfB{!pN|>OWeK!lktha;`6j(cA{Wmj=Xt#HM+PTWGGD<l$dOp ztU_D*-2Bu9CO^^dznF9^$Sz{0R02=az#_eN3|UGWau6w{Y{`O3UtmQ026m*JL2-`M zGw9Cs&XQQhQWv(>g-w4YROX&?f&1rBV&{PxJNhLap2Lu3b_5!Vt5-=@4O#k6bnAJB J=M<B`$}i3n3u^!X literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/Item.class b/api/target/classes/no/freshify/api/model/Item.class new file mode 100644 index 0000000000000000000000000000000000000000..b688641d6952c34ef9beb5dca757c50c1eaa3a7b GIT binary patch literal 4081 zcma)8X;T|V5Pi!b8CdQkKnMto6A+GNhd9{algn1Z6~Ibx&IJw9+R`qOc5RdUK7K(` zm8$%PBo$&;T$Oy!k4oju?CL;XVX8ngyVLJ=&ztU^{rA7W{swRvKQy8SwPDohs7FXc z+a2Sc5z81>Dz>_PN9;HnLYGX-bgpQq9UD(H;shGPXw=aJ{gC;*?QUm;hVVTj<BHW? z4c%k&<4Ywz&tRqjEocp+O-DOAH1u0`Y&R$JX>)f!X6%`<teq5@Slkg=4GlSwHR#<+ zY3O*8su5l24x>i~^Nfb}lCN3Y&IrTO&@*<sJO=;03ZhR(Kc1zNyqijiyd#ntI?J4t zY@fqm7(+TD7}gM}9`J@^IBuSd@s-5F%I50&mWGj~r`fAuPU;wy?4i8kkTO57;{}Xq zXi6$&6H-=n2=ie?HB43ViU&Jl&oON)7SCiv%E(9!*NmKz6^_U)6jo2*w1(mJg0PXS zn|C7Hf`86^A*{&Rh+!oo=Nd7NGcqY+@*vA(*>G|^kD2jA80R#!D9v5R%*5smM>OIr zYUK&Ptm8ah;eNJlH<e}<wRsdpOSS6@Ixb49ri_ty=F-eMk(B5e9hY!fLygHZ@sTPg zmu$M07FTs#!*vaH&i)=%i5#KwCM^_ZPRBeJcsyy_&5N|1A^C6>;LU=GLf+7E6LIFY zkxYu@?7oJ9D!5yDk(<%bx9(bwnH32$Z?Y<`Tb9jp<=HShda1-+Bj*^gJ(0_sOgw8x z#NtW9Mgx~_2utKBZc?QH%}(SU`J7@LM<VD?ZJvnuJQFg$$%GsT^f6~=+^i+JEjN=f z7;`QA1EjJ+(JokS){BXddR6fn2CJI-QG_-&*W)WUGz<k=E*sYVroCzja@NhU4QOax zGA*&<X17IdQwAm5fW2d65=PFH&;H9gCv8&MYKI~Vft-3?IK{lL$ZEeijVClTvy6A{ zE*pD3d1JA3=%Q^|IB7dsEGxc}wAW=`$O5P)*ji4kd8f@l+TFb*ZI?<(UriFiZYf(S zb4oaIrfkPpc}G(f!8+vPA-<wjsp6RVw3_t`Qs=x(jjltiz8u^ftu{*ivHOr!p+kDa zh3+>>o66o)YU-X9w-Y9_%nP>2BLRNy$Uurkso`W*Owouw8VOQIBTII$D#S0^dLE<{ zxU;<7DSc&Hv~cy1!UeOEz|yRNW<`lPFB7k)oVTD|0aH-#)Y#L-lbA5MJ^4-^g;45A zdzqz0Y1lWafr>Wl@Dz}!qJTryFiJmVzG1t$9kFQ2N^Ov3cShb1)tb%%d!(~JgJCxG z8g`oo{<810>%7XRc0Rqvaf#2%0xMYM3tkugaudfj{=a@3>s;V%6THB$jNk=c{=o~p zi2a3TjvM^n6u5;1z3|TQmqHxhV01O|PI=-TZ;Og|-F)U37JuI)>NaXQ0|ufGp+#FC zA$)-5Xze3(9-ue+I|dFg@|$Ac;%`53Kr`yl%UK_EM&5z}e*FxR34B&ucnfdyNy9sM zm;BOCh8U^r$i$yG)$-HN(B-7{$6wI=7~@+V6A$s?KhX&~m)>e2y>$=+OmI9+A7>~= zOnK??n0znflpk>P_8zV2rK17wtC_|x2ZOVEHaZR(wi$Gd3TM&Zc31Q<&Tc)#O9z;Y zM*qO%0j5gZZJ`x-oK2WQCoYt2vCDTZ(?d$Rqxh3W{%N0IFY%Z0%1>S3DtWJ!aq1PE zLUHaQMSdw^jH8sdo^ek9%1Mn<NxBEx%82TV`ln$AfTt?Koq^yxf#AtXa8DrkE>HZ) zu$wEveSzRCtN?ItC3qkZY-29~JW>fB3Iu<ETmbk=C3qwdoQD$to~;C*3Iw~j7XV(Y z1dj!R@8f}=*wY+ka)o3qO_x&H%Mx9oz4{3i>nG&*I=@yfF_|>%<HI1zvMfHD((8{t z<wZsLQ84A?aijD)t511eQGSe1f}-p_E~VFceae1C`6)gNqAcrzM{nF~+CJr|qWm0R z1W{f&Zj@fL_bIO_$}jO%5asM~DZRVGr<_-mU*nq~%EjYSdRL84d6Sei_*QkP@6;_S IRr?<JAIC{E>Hq)$ literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/ItemStatus.class b/api/target/classes/no/freshify/api/model/ItemStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..64e06d80fd7eadc7d4b702cca27ac3981a0f73fc GIT binary patch literal 1146 zcma)4ZBNrs7(I7w=~fFHbAn7%UWTqiDbwMXA%WmbNG2EyONgH?quWZl)^r_--~35B z5+NE5pZ!tB=XNv9pqWkDr_b#<=XvS*@$<`f0MD_eBE~T1`DP=qJ1wX2-sJBbv+W<- zuDKK1Z7bwqx03*atV6*VLt<yQR@vR(dvnOJP#wiA3u;_PLQv%ctMWn|+|Z$8oI%ai zwyFmei(&EYXekXzq*RRSm_(XEsk^>sGi35c^@N{t)8$^%+&en4>tR_#2Dem9>6pfC zhKVac#p|}I@+o(__FjWwEkDHGc6p~$9y+kX!10>p;R-?^($DI+gIR{Lb;onU4Th;< zsR47xsKudZG;}tOgoyJx7O*IWk9z1ZEai>=7@rFLCdk|LgBX%k$Fq04?ISzb=SMD` zJo`%r#^}v5q^o|NyEPs-LTI2Sd%R7e>FfJoNWHSdmVf-32ZRajfX0x+mP0|y*|ect zpF7@9{NUK}xJ&M_oTf*X3P@MV8#OY=dfgrDuQXIhY<Ycj=Nn}zX!+fsZohQI29j5< zT@gQhvq&q?klCfp8DU_6BDoPrWrYdpi$Zx0i-cREY=NS<v>vq2n7BmpBV`N^=s6aB zlL$YJhloY^5=Ft#(yVZSo0nh$ANvEJrxU%8f`I~M%XBLY#s>i<7eR`|iWDXKq!yNE z&oT3fUjL<};*pplQcA?|I0dZGZAO&UlqO6@CB;YvWO@RV$~Uk>sRzkAlzULE>yyP% z#Oi>yHK5IZC06>bbdGyxkfP+i93|=n=FXsrHv0>jh`N_)tqQXA9vk%Y1WySQL+KZe Cr}BXS literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/ItemType.class b/api/target/classes/no/freshify/api/model/ItemType.class new file mode 100644 index 0000000000000000000000000000000000000000..4385e0b62e91a1e5cfaa54d03562fd157932e5f1 GIT binary patch literal 1078 zcma)4U2hUW6g{)$qaavHTWz)0R;xly+;^)crdC6OXj($z;{a2bx;smD2NV94CK?kT z`~m(b;~7Au1V6ILy>sW@b7t?k_uKa`UjaNuH4hI<S)>X`BO_2cm+zz>NYnFQwa-<@ z3S=H>qwN!crAoDx!!mMN<O{fjg20Z6{IggkeSJ3a<v{yk)K!6Bvnp(k21>xwU6R&+ zv(_WiJ9I3U3s^x(AZ298!tzYbsf{(O1h!6w#_CYDbfVjVdTLB$rPYy11U3nHD`PAD zfr=BISY<lOuXPFAUzmEKjEbdI-Iff7ie<}*b#ZU>4+P(H%{WBu*>R&;YrYZKUiijQ z6bwVd%G42s5Ll^eqZ-4ot>UI+2d>YkBZHQVwTq{hDcjd<X}A7&Imw&uDO;nY<w|u% zu(7BDStc7}HP<hsf9aV{Cg`=wJh<B8m|iN|kGijAOb$y?$w<J2abp%TC3K+tX*7&G z>bZ8!6@L!?fgAXrL^|e7?dTAD+yakV=<(w=L12~9Dx)&}8sl|^4P4;`H)Wd6&|hUb zP0x*`-DKp`3wL|)8R7#E9=2#*8pz`st>bsF>)56jxPcwoi{OvQzGre4TwDmgiQNU@ z;yk#t5WI(5e8Ro_klrbfIk^7`+4=v@jnS@s*U99+-D#rLZQiB@1E<VB?ku7#{x9W3 U-zlXFJlrL}hkN6hI2|j%4}as-=Kufz literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/ShoppingListEntry.class b/api/target/classes/no/freshify/api/model/ShoppingListEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..8bf16b3d49a82db603b42b9ce6b303824adee143 GIT binary patch literal 2654 zcma)7+j1I55IuvqSa@Y2VG&D_jb+&u;Kby9F}_5SWt#*^wjor-Zz~wV+OSKpi>vsn zq$;kY@{kY6N2PLRcR>UVHV^D<@ANs{(|xA-=ik5n2Jis2BqCTyAZj3nxIpT)`PM9U zOuJP)K6x!0o<RJ*Wn11ufrVVYp2P(#CXh665r)9ZnfspObfjquB;J~xfjmAH$mCw- zE9X2)i@1d41X2c8uqv=)JH^w!blcYHuxR$IV%KTPPO;i{dOgc-RV>##u)Y3JV9_14 zTGI7oQy@Kq__BdD#hPfeW#f%(s$d@(xPo<oh(%y(0$6eEmY>eY1~!#Ptl<o7PhqYZ z$l|&{)EoAs!1ang%d#iCHG23gHw<j!Ci84N16Q`44#RED06rVJ_{iG^c93J%X0s`q zdpzsr4BXGI?3V=AUouatE9;hPopj``Z9AUnS&r=rT;U1dn0?PI_GI5>`J~;D#d4Fd zo7%0X(w2RbWv#2u(d~lkDZ9ly-iu&7|L{bVA0Hgm%C%oq=DP6vPG``y6}LU;bWG;F zKmkG^t93s#?P1M1wpBLKeF{QgxnkM!XwW^8{hGoHtX7<c*{Pd-OWEPasMoewg#3*9 zos$&<#9GoTvsbIRNxAysV7}bkSE>*&_*y-a;M)J(L;aI3sStts*ijm)MglkJ{s9pM zA;!`W*q(_QJB0yvN5Z)_6B0@%<_4!t=UDmCW%m!8uk(5wO0VrSpPPNND?RE*so|^w ze4VI3W|Cr50L7A2kZ}oU1SQzceW(HoY|wvvJSuP&XzWuOg&Y?lI}792z;~}YgMLFk zv6PT9=Tvc5m1dTfIgTuESi%<PM1&$v@W}x~G3RNm&?<1fL;DknPjQzYI9<Z+i(HHR zefA2UbAuyLzriV{-{4pZH{x8sV5Eo|JLkS}piF&Rrp+nO=a)oPi4$Dc3V%Qp7XC!y z9hSm1{hLqw6`vaf07*odPaJ8e`FaT%T;}>UcZ`4p-{4zX0^i~LFn~Ix3J@#&j?Axo zi9ivm_`uQxI5q~~(}Fjq!6_}cg!`JvOVi-A7W_a9PEUg~TJS?W(nP*G4PMuRf55H= zyfqEp)Pnc0uL0kh24}V4$2ee5losxBRZ5N*?z}_htocE&7JYOk@CbXQ`WR^b32`z0 z>mbEUp6V$#=A{hoNl3ZrQ$9mkm*vvDl)()PDOY^TAN7<Is(=5%gS#10uKAQdp`y$3 z>bzM7w>qTE`jm$_(ot^BOBoD>kaF9nJjQb!<*j)sgP9Ui?vOHq7i@n7Fa6P{s#XR5 E1F&r5Z~y=R literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/User.class b/api/target/classes/no/freshify/api/model/User.class new file mode 100644 index 0000000000000000000000000000000000000000..4a0f7378b059d306697839a8a3179bbd13974ae3 GIT binary patch literal 3154 zcmb7F+j1L45IrMHmThf_?bs$a$K>uy5+#I7u$+M7IEg`)O{^GVF3DILTboF`Vt19` zPvHxAg{lA*9w?sq625_=fHSizTM{cuJnZhwboc4*Gu^$v{q^%N0B)i_garE1NLomt zUtsvDd@i$9>Fj3Lwx6m}Ake>HJ9cnOpl^C+a}Wa<Ok>DG2A05a$Ib3|%CFcvds$hx zvo*J@s@aFW@&r<LplZIr;k*HD1a>vMp@Linui<bS!xly`DsZSxDlkAZPX;a#CZ=av zY*(Ul0*qlijR^~{<EX&s0YFnlAYGAuL4D2m8TOX8IBwwtP6{L)b3E3>Zb>$m#;LAJ z5xX{oNxWg<G|mVN`6^f}msR=pp1{;}zB?7UkhgOd&f|hW!Y-5OFfrpi?>f6V&Fr*= z8O#a{?%19m6l6^?yB5Wbz_TOOOBOC`)s(79yQ+<|7Ov`(fx7hl7p_;<hi_WAt}kl1 z;x>F$ajWH3Rohk`ujSZ-h7;H|wQ2kIc2zApjvL6pb{)!&(&;nl1u|QwuI&fPDXHvA zIVW%~R&-A}`qET+Q&t;_Y6E_t_q*igKP~95xK}q8D|eO)#g*bCfs?U5mfUKi=4foE zQLReG+{YRQE41O*Up355kh~3h*O5WPBY8JM@|vZ$(B+cux092*MJH3SF|0YN=&nj< zj~eNc^h>f#H>YEDmqKxrUf*Iq&(LeKUJpwq$qQkPU+yhLU4165v~1Q~a*55R+sk%T zp`mZJs7cW!<CbJ~Q+l@EM~BIvV)JHCcA-GGEOQ!TQEOLGVHe#3sb<gEJnL?3f@3Fd z1hVvORn{Yy@f5Cm>Vc}c&-I<BcIl4YFxu9PrXK_>3hy2?LVLqTtw2VpwXAzUAj9Q) zRQv)*xa+uB=0DQ()T{|cG2eOif9gd0*ZC7W+bfRYOBY#6)6M*kOovr)Fb-xm*|e)F zsJP{I>2VTp_|b($gBDK4TkRrBwB-QRnxt^qLJD{PCS^2&+2=%KOte=Kn>4!CT!(h= zY&AoR_`2F7P(+uu9@=mlUP;}xb)66DqP?Q0f47mb%n29hUQIe?n5G`<rsMn`;BOD; z=bIy$BjhdaM!0*M-*>owSK$WU;{oS!B+l?V&nLHq1qwKQBf+o{BtpT>E!?7%lQ@!g zm~k3Y{65_z@PTnVPQ^v;Zhr=$u!K8U_Hma7{KM|6-ZQEiYmpBX?(-+g`e6zJD@4ok zEBH;#{si&8f&Y+iEe3HuGH;`RJXVdoVDi_-FX%_l(hIXMk$#0k0{OXDI3n;3#<@5q z@GB-)FNq&9_3hukYxF*7^id@FKEt2lS-#Ja%k#$51o0*r+#1%oB5vgKW3Dqu{E4A7 z#{R%@lavne0R;jZDDvH&%}bp9j>3fT7iM!fCL4i=*o-m0*l9c(Yy3&9@m#0zc&zcK zvBp<AjgQ6}Kf)H1>&*FDr}2px<FJTWHTXOhB;5&esw>DB1o;w=qe$lYHSIAw_XEy$ z7E{Kc=quLc6&90Tg^l!trzydW?h1+RILM2=LWa#3LCzS+Qat2buaIHeMv#{cWH}!4 zO0SS%uSbwq4Wz;jTSVV#zLm>s8ZvC1u#~%Tsi%a%F17VnvwNM>Lf{G4WcNCqgtuSe np&jom-K#S_XWE@*aPPobX5ZOU=JJdYBv9QSM>Q%sKHPr*D|CbS literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/CreateHousehold.class b/api/target/classes/no/freshify/api/model/dto/CreateHousehold.class new file mode 100644 index 0000000000000000000000000000000000000000..e539dda79ba105b42e6fcea45ca947424015cb2c GIT binary patch literal 598 zcma)2%T5A85Uk;~f~%kc>d_kuiF@~TAu%2hO)%UCc3_7rJ7#t;@vk(|n0W95{3v73 zf>Du!mwrrlO;y+X$Lkw_Q|y<JLDoUeMIHr)%7ou>KjQJ&zZy)$&@dEEWGu}YL$=}d zi&#U^LCM8BTm~;z{z!`?l%so}-%5X~0ulLvQGQzsZp4L}B_dQ&z>tgiR4{CJzA1V} z%XoZDvo_%v${iVt?rb^``i2jpbXyI1)aP2-e({(yp-dQBoqw|vg)<hWn<}U_yj2>U z<ZGeU_&fLdWX`29p$e|Krhkmkq@mPPGd&dN(u%Dv-F#>-#Q|BCA+s4pGL5P%)#NtC z4eET#jB>vD0`^En2AdS^7z8a-bmt4GV2e8P5IYoqgP-6$(C{a?xDs4NjkYZKh_Y2y hXtti=EK@rvx<21nP+M8{28KG}@{F1aHM=SC-Y3I(bYK7g literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/CreateUser.class b/api/target/classes/no/freshify/api/model/dto/CreateUser.class new file mode 100644 index 0000000000000000000000000000000000000000..7260dc6e6e2e993ba588d63e63a6246582966815 GIT binary patch literal 991 zcma)3%We}v5UlZQ{n%h*l92EYAY=!Lz30ItA}13f1$-adV|$|YZZtaq@mC;$kT~!G z`KTy0Ys(JK9(?KE?&+$nuD-hd`wze&UR9Ap-b2Ah5ha1fx%?`FP)4KRQ}0~$tw8BO zN7}v@$hX?v3d*Q>sQReE7kC}T!O*B=tcTwNd7*<zJWydUuyJr?l(gzgqKrUMO{5M5 znw<sxnKe2Z?K{GIKI)FGd?AzMTWkiddEZCVH7i4H5_=*iN}zB=dVzXJN9yEq(o^QM z?1k(!J8@rzU1_wdXU&2g>qOv9XBCnA{QXGT4^yG*t@d510yR#Y&NK@6td1Ar%E=tQ z(YlLncj@j&WykU0R2r^hm7%&CQMV{r-J-0X#h0e9j<wsdzHs!Nvk^OVDaR}38F>wU z<(!Xcrgh97=sik|4_F1vg1NZ+2jXWsw$A9DL8=W#e>#9oJY*%Xg>A<F!N1`B;A0L8 za3vG`C=<N446bH^A7_Fa%ivlj_z9j;pOd}E>^v&%zWohvd1)_2Z%!v>OFKiHn*z^> oEAm2Uuy~$Lxwa~$JItK2o>IQZrfjTA>25ryY^Ibu>0w^p011?q%m4rY literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/HouseholdDTO.class b/api/target/classes/no/freshify/api/model/dto/HouseholdDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..dc6209904498162e074dc6092e73af9bc6a4362a GIT binary patch literal 834 zcma)3%St0b6g}0Z(<al7Nqo$E)Quz&?7gpzA~TTD0VVrNx=czsUDD|Y{*{6v%wj&k zj}lLHi^h<J6x^y?_nuSdo_cuv_aDG6*2-`&<DuZgMNyz~E-z&e$+#CBcg|He6)5iL zSf_geGxbKhgjtk4lzn`FFR&h);4D$YzCODO<b@6fCR9-nrY87hMnly%QFw5AEa2#n z<gHismWg}YmhGdDc~k@nu^cFY+E~v?nrL>hwoh7t`Ie5=(P+?7$*Jr_S-0uRs4Ww1 z^XJP#+SfyYdh31S$nW-4`kMl4^~TuqnM47P#iLBy;+yh|I(L|(7wVJXMw>(bQEA_V ze`P|BR3%jA5s))3jYFOZEvS5AMoCv4YCB|g+{#UBA=YS|!w+=0_z~HOE^>FlaZqHe zG7Gp1d)vH+xXIdTjJ6C?EHL_c0~WEwOkf$G7~g_#;a#)n;1yh&3jT~QQ^0eR;PO=P zSA63W_T{Z?FzRe>+`*gF?Pcg?_Si{s-S%XS5ctkpS1_qC`GKF)DCgcwX+3?R%#)SO Gh}9<)w~fyL literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/HouseholdMemberDTO.class b/api/target/classes/no/freshify/api/model/dto/HouseholdMemberDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..78aa9cff21bc0931f30177f0cfb76ff511c943b6 GIT binary patch literal 1328 zcma)*+iuf95QhJ8;<!m1dV-eov9w9r#`hGs0aYMUiXh~E6K@+=PPTF!q`VbKAS5n$ z03Hf4Yg<LJ)>3YEy!L+o%>Fa}^Y_<p058z0!9vMF*@cY?VeLYE5nd=J=iceyLJng> z<#{j(;+KR{v(>L+1yu(%7j?LVgNgFaA~_ueXLC<n2HsftGW7gdd2iHgDn}~xPvm$Y zqu0Gtf))6LcGnE$fOm3!q_bUfv5GZ9ndKtFP64e`e&!R$voK7!4HuiZPFT@gZ+<BW z`vq(+^G6lRBTo2=??PDZ1{3*yrti=bgOJ~Bbk$IVeGvtEpS>){qhLzt6r?aa!ddKd z8NX#$4w|h3G*_MWh2SuzuS?i11Q#qJ)H5XY;;<0Q<;&c#r)iys&E?B%^?9I9WIR&- z2N8*}jAg_gIV_ddzE>o+P`Z|>XG~grr-(DvuJPI@HH(JwIMDsu&Yj}X?C7z_BOW)4 ze~S{YJl_0d>Dfyn&k{!m+%Z&my}>(=BXP9bKSAG;V_UrH&p-{^yt?TD+{7*35pLrS zuZ!?^IA8grh5vBf2;ap$1Kh~Nt`WYE2L^aO4>yePL-xi>%6`UCdsJ!f|A3RfbTy&3 z(i7RGwISL~!ei!a?j>7Fc!C|1WMf%L-Iy!Mbn_IuCdu_>C3TOlBsUZNy`(YCe<TzS Ap8x;= literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/InventoryItem.class b/api/target/classes/no/freshify/api/model/dto/InventoryItem.class new file mode 100644 index 0000000000000000000000000000000000000000..d7e7924eaa6698677d7bc49134f6c8e9d087cb5b GIT binary patch literal 2672 zcma)6TXWM!7(MI6HgOckcH)#$+J;<h2M`omDB)6)5C|9oB!tVG5^roVvc$-%%;aB{ z88T)1&>zqr#qjOgmSwRqe$nnq=bUeKzRUk#{{0WY9lXsTfsr&u4J46b$i26YEYq>v zy1Bjoo*xK?)NR|f#a)JxQh6_fGZ;%FV_+OcAAG|L_8rcUKC+yEZyz!gOB>~CPp=JF z9YYqAY2*y#QD9hhJ@e4#t%iMgY+4^|v+32iW7dRcZn;O?6`p^*C3urz%;!yuuHx1i z3g7BxFpXjwGxBCXFywoI*F4YRmdh|xdKbM==e@eoj|R@+CkoOE>UG`{yv8sU2@=Kr zY~UCC%8;-Ll#76>o?BOH7Yxi{o?+avT4KFHZc4olG!V99ZdigV=%Rro2~F*LLA@cQ zJ0$~UROnSpSR!aK%vJR!NndspMoC>Xa0!<gM#b?5O2q5{)-E9w=Zb-=_>Hn=)oQ%9 zcFeGF3QcC@Rg3$Zf#a-Fkafxv!(`QV`Lm$8&;4CX<-bt%4lHNS@@;wUyc`t`n|`D` zK)Wy76d+mWVvAfWl%hFP7Bgh&V>Rk+i0ZjZ$t2X8vX#N0{mWhfP4}sGO0$jH=~Y0n z57n)Kws6~c@{2IvO%EAN@ulmO&4C1!8HNnO?{`zObSfj3lw_;z*;FZBmE}FEzo%R@ zyxMcix0+mVpAwQKLZ6RaX3s{+93xn0B<&+c7Nem$K1zx~u!xg0QCQc=u5{PR#nShk zl$<nax4oPn#86gBe1`C$naih9`n*)M9WU??_@*t#TA{B#FU#qI3)HL$8lz|ENfUu~ z3EB5*rKVOZ4LP;abWtmHwpyuE)k@t*YaUeaNYV2eogQL@c0jT64_IaLGtwuRsEmBZ z)CtahRJ7~#%n}SRFp3;K^Y~qz6cK;m2Avpg;?It#Nvr&ptbD@xziE?z6p=B3i3m9v zl5b&EL!OP3vs&_PEqNhMp45`>;I1a}M4X({lJDU!4f$-G95t->&-byWAuq?t1#RSY zY-q?Uaq^Uw`~aI8vKc2&YsnAsh!QG`=N7H9C{vY{6P)i=OFPlyiapatbP_F#K$b7V z7V(md4mmnJ#uJ_7?68uu6GF*3C0W%=E(|Lvn<|uCQj$;cOn1wPVI^gMhLU+DxsB&K z$w=o7_ENTbD0xmvzQ9YJ<npk$lv5*=EGx+!?CK;}hLw~9D3rXUBwt}qCut5VDQ8(I Nc~wcirix17%~#IX+m-+T literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/ItemTypeDTO.class b/api/target/classes/no/freshify/api/model/dto/ItemTypeDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..a977658b08934830bd63f81d1eb8f3834c186483 GIT binary patch literal 831 zcma)3U27Ua6g{)LZnT@m`ql3yK7^`;?0cK^rKJ$CNg?9<s1qI0-LOsq{;L)m3VrAg z$d3v=vny)EhcIww?%aFMoO|Z({_j5kC#V<TAmbtH!$nS@IF>gun8<J#ocG46Zv=A3 zI@IQ~K&H{`=COmkhk}nM@C6RTD7cK(Y@{#efxObeG#aQ$FfdVYYSgqdzfxa2=K_u% zkh{GiZ%5(qlO=oVV-H1vY$&HnptRO=VPefL*1nKcV6Ux1b#^`NskkG1lcYQ9%Sl(p z+UASPtQqN<!29;2w2|H&DsxJGrABk@^+ch7$KqKct@5C}6z9%Tbh)t!Zgx5IcV$M= z;D?OKVN^_E9swz1bse%Gw4lO8bRGBAH*IGut{Hh`4Md%`Is83`i@%VZ=plC(oCZ0@ zXUqcb!rr$2K>SMDN{qG)Qj{6}v;h@VnF-YJobe&}H@u%LI#_}8Tfr~zatnBO6I|E| zeudY3!oK`58H_qxA8z4o>h=<JjXidfRJT1@BLv>?))h>OOy1(%Hp<<{Qd&=!lxeb` H7;*3)2x5$0 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/LoginUser.class b/api/target/classes/no/freshify/api/model/dto/LoginUser.class new file mode 100644 index 0000000000000000000000000000000000000000..8c885d48ae6b9842444bddc63ab27a899eb89b73 GIT binary patch literal 784 zcma)3+e*Vg5Ix&ldWmhVw%!F1p;a*N-d;qX;sw;cZ`*CUB~4_LD*ly%BKY73_)+3) zDk-*okihKD?3^=aPQJcBJ^>tKGmiw422v){$S{=q{DE68_Z;i0)ferMA#)@>8J;jC z>y2g(S>z1lO%z}<Y<s@dRU+ug?vusur8V$7!nHb~Z`r;hy}LjthO`)P=`vL8G5bxZ zq~{!JzM_eeCd=OQAb9juhaq)JJPajUdg5|8XbE-8TP{^9w%_J%lPjt7-(o84$$(+U z{)d`Fn&XJ@Y@}$h-k8?JP@s<MSWGsE`>XZo_C}LzyAWZ|?_6`m2O<=T)D#Fc=E&dp zL)8}NQZG@Az1i1>V2eyh(C<jlN47>ca)iz_$US5zmMOF7WV*Wh4)zkY%~RCRAc_h_ zbJTzZEK<f$MUCQL@GFdGdQ4yp&dmfb%>>U)g7Y)M%UGcidh$WE80p;IdxJ5l+lbIL m>d~8wbnBZof?<`aX)=?D7}jP}&i$8Cdm2-gBFgp1h>af;G=X*i literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryEditRequest.class b/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryEditRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..b206e383785686444ff800845f469a434c613469 GIT binary patch literal 1290 zcmbV~TW=CU6vzKVfraf>5L&!n@Cr0>-;A;9gH26L)=P@veOac<RM^4Y!KB|x6OD-v zegHp|@tmblN;Zc0uyf|j&hLNbTz>!g`3t~v?Apj-!$RIc0Y!o8vH#h3M}8E#@A}6w zFapJADpKZ!z(%XxE2D(61>3<U9D&D?c8_A24As$z>ra$B)&n_m2S&Typ`J`s6nZK# z2a$<S4hG5`%1=|7kZ4W~D42H^&C^l1$LbdxR9LzY=xJp5<f4Nb>H_6t8iqtmLhDQD zORY!Jk5YQaL4)sF!B7St`DT8fo+ME5R3zU{$9)-p@cSb=sd+l^M?F7Q?4KUy%}^x* zPrUz2Y>(a@O7oiH)>`eQH>T+cl<4O^=Oy6KwtJS)&bjOJlmu)h=D8G-nRdOkD&6i; zIp0V#)Pwha?2o09G38MrU>=XQOYs`Z67z7ZVly%iXm|BA4&*Dv1#AARrH{CkXi~d! zG+251Xh3KMcQdur!_-oL$d*B+LXp-><hf)8*+S<B#8=wnaG6&A4U)V<t24WRtGGs< zz;)c9^*sCy)))G@43{(Eo0;&|Dr{%Mw{SZna&;Bn%!Hen@b)U~WWslFmy+Y0pOWQ5 z7dyM(VXaooO6kVz#%aa4n%okBd&Ct4IaPA*XG?CaE6LqmNLEtG2Y8tE%Idn3JSYpv YS}NJfmfT)fl4ouq*+?bZ>7aD}0&4rq^8f$< literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryRequest.class b/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..907a4c794d2cbf667e00ed7c42700c3e076e5c8a GIT binary patch literal 1104 zcmb7C+iuf95Ivil6W1Xjp`lz#DK{lWswKn|g+5S$RLNXKs=RNKt+SQm4fYx-e?=t_ z5)XU;ABC88FL5Fxm50pitoNLmGbg|Q{QL#r6`t5AplG4wpo|Jb^MrrlZoos|{V+Tc zBh65GDMP9E8H(NBpoS`H7HkJ=a2TG2$~}%mJdww9m(Qd-RbvsjW3Al&M9pS0^gS8t zH=&N^pTy@x#6)OIEv85FnK&F%LvPX1Q=z|SI$U$mF!be-N<wXJt~+R<%}|RI-zOG9 z&~^s;TB$(raF3yMKqD|TJQ<4j$#f{9BR&l1rsb&-4+cDvrar$c>4}UPo_qf<gnHF| zp${`+THRh|rc@3?l^z`!9SjZ~`wIc<OV1Y)>hUsdySvKT8_?$72|ZEck38a2p+!V8 zssy}fMaN95PL|@LlVP#@Dv3totu!mz{FiCF#w2W$5e53&6zNCyQ-tv;&EyVc3uGE9 z6mL-FQf8FPJ3qiq=}^ErMe`X%)uHH|J-|(DP{nWyw<#`zzrp%SAG6?EF8EF^xV{Ru zbHR79nbWzs3SP?v-@_KoXU2X(+3cvY^YlBcRnb<8?wq|i7i|_|w#jgxaAihClZx$p j%KB9)jWL&$jg;~M9_CHiyeg&f_>!`fQa+-Q3wZn&JvzR< literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryResponse.class b/api/target/classes/no/freshify/api/model/dto/ShoppingListEntryResponse.class new file mode 100644 index 0000000000000000000000000000000000000000..c9f6aeaaa6f9564d9a1d7dd3508a052db9ac1705 GIT binary patch literal 2229 zcma)7YflqF6g^Y=fU>}r@~|k#%Tks{Rm2CNi4ch-^$|h7FYVASmffbiHQ_(#f6>Io z#1H-ef0XgwDJ|`?m44{nnaP|p_nf)6^XKoc-vFLtX8<Ae#SqpIK~!MFcCx2c>6Wb1 zi>z6(vgb}gma_%V$sU%RO2x8^Im`84*<SVHgLEs7?Mi`=RS?i~XXa-!TQ==tHs{#I zZKm$mFu=T#yi>D1UK!M&VMt)Wtrd&X^&~-)ZO~oEDNEB<=n)M%?~Ub4GXF^y7(c2Z zi7|n&cTu6EXLG?BA9(Woh;}HR2@R9DMLcGqAPc(}0*hT>EcBx*tNXQbc{`3N+>YUn zhH1=@z$<<4PR?ZB6Nv6uw&lGL=*ui0lggs>4oJ^vX1Ps~GJ_J{BP#_)a+WRM*3M64 z^~gLa)5>Vh$(!Y4vug4Daxv_cELULjKY4b&kZpl}%4Cl%7tm;Uc;)qYM{Z5G1>%fo z*i1&zgxwREr|ma5+`ztUTAS{Q=rEVuavN?XGk&w!OZ|=XN>1UuSvAk4C#z&eKLMJe zXxJudqMf3tiCN+dX{n+~L)Aj&CQ(grOV(01NQWwheQi%hUA|vm+q{`<(9#XQcad-{ zpZK9utLEjt#l<$$wQAP6yfH^DHbs98QTow80)4?9tRnTTiqw-TQXi^Fy+v^t0(UV> z-#MCPDGG`a;|Ihy8iX)U->6y~!2*r7#s)0n9?b;Of#8@QtOtUZkRb~H$#Fk85eQxm z1P}Ycqk&)pD*-1b{NQ9Dcok~_;Bh~AED*d-E{BxnEs7zw*I21Te5X;n-Gd4}(b#cm zH(v$cufToU9ieWdzgmF@!IZIHDY;Zylmm+LAvWk_zL}0J<GoUH)wL-3K@fNpOgY>u zB^PjuQdg9lcpQ{vqE|}pg%)K}Q9i-bAj<JxDY>m$l#_~b8qY2%zfg>kr)lFSQtH-? z)jDFvS{-pC6|Q60NJZ*M7^!F-*N)UwMZ9h>v??NfSrNpldY&sP&9623)QD{hs}ZY> us1YX_RW+32g3<}76NF9G>7mx?;pH2n2b8{@?MaFItr!Zd^DR0lgzbOQzkF2y literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/UpdateInventoryItem.class b/api/target/classes/no/freshify/api/model/dto/UpdateInventoryItem.class new file mode 100644 index 0000000000000000000000000000000000000000..e1b2ee24d30695946a61018b69b14be6fd85ec1f GIT binary patch literal 1094 zcma)4*>2N76g}fOi&K}T3#F`O>EZ-|-`QS>kP?MO6!JbvrirV>uAE7weiQ<vMo2vH z0elqVj1$rl9MK2g@x6D>Id_?#zrOzf@EqkLEM)SqU1X6HC>_ZY>Gx&W_20IRR9g$= zo&{l`UkGHpa??QpP98-UOK=4qg^_<4t6?uVJoV*q;18mX>iZoX`5%uvQma~cqCy?T zr!}nx<O+DyIs&3@n69{3K}o=g)j(1u>@rg|nKc*d*bvALHCY7iH`0|1?E$ZhhEE0T zmsA&6X#}BqGa9s1{6V(*jI1@Hw(K`$92kEZv~@2S3iu0{7xX|Gr>nHlHGOa<bpe-= z_vbAzSQRKRXiB60j#plw@>l)N@SNE8>g6W)@mlF#)OjakIZ#@~EZF6(3u3lcH5Utv zPStk3|BD$&@gN$-ZS^WJBic&Y*JJY-aF6S-_*gRhxO7^WttBUS#4`^r3OU-V^n9Lz zXSVVU;wyhFY|@%E;NTjqJGp=@T&E{+12<_WU~7`AoFV^-$&27(D)<&|r+}9~&w-ax z!FRAd1OF-e469$}z-}t|E@xvUWk2C`%zSc{?J@H6O&1dMW-`Uxv}rRCGfh5i;<AEH uiOvJ;{6o1v#`0w;&0=Ph6K5BDGfHbxL*?NZtCyuTJDyRlC;a=#c)Z`}ueQ+u literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/UpdateUser.class b/api/target/classes/no/freshify/api/model/dto/UpdateUser.class new file mode 100644 index 0000000000000000000000000000000000000000..b1675e49d3eb92b2227355ae65d2ef3ee308bdd9 GIT binary patch literal 1457 zcma)6%Wl&^6g}fOZ|Bjp2{b&*qa<#@8&(w9ASzV~rBWYzC!QozIdNpWApQy@A|w`k z03U_8GjS8w^&*?OGoyRXJ@?GD|Ni^^2f#b*7oj1Ohi)K?9K*AzXAONGjK%PqWzU2) z@f_}2PUu<ZGsh13dBA-JO*jno-lhG;wp@EUvU=WhbRfA328t*#6o<kO!ee{F85*&~ z)6f@Ds$rlaQ?q<x3s-_`2I}&rFtdZ;tLHl<G_aY+mVqW(RB=`CbN`YLLWbO1F%{u^ zhD@h>L0lsq9+9?2ryDD()G_EEs2PS@PfYpo)uhk;GrR99f!@G&FKl1Pb9AYPV-Yay z_SUiFfWe^BhpVQyZYYS_rq(FyqwJTVOxu&FQBoc(ly7#D!ew9ePdprZ&WY`lqapW6 zm_dM8y=EL2m6ON<rCk@K?W*8W9H1PE6^;njxsgRmr{0x6;D<uGSzArYEBRp9p{H%o zxakyW%4ny_AyJVgKt+0YiX|}I!ChLn>10u46tm_}u<t6ZO>0hFR&bB@#v%dt@qkVY z5AlfBBsiZ0S5v`{Q^DmVxRwguNd;Gv;Cd?f37(QCQuZ5)nrzbCn}hwJorYD@MTKrH zGNPuXA<|X)cquzelSCg8!*lFX+AYfbx|H&PmXt+B`68XNye_4D>m_AHQFhWPtLswA zu~|~q6=f6MsBxEKmON>jzp$bFH23Gon=j`mo7?&vx5|{1zpodlrN8aSUt&^oE8nLr o|6RzaofM%f_cwIqzO+mBcP*$z8gI@d2}-tDPMr*sDrngI4^rFNb^rhX literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/UserFull.class b/api/target/classes/no/freshify/api/model/dto/UserFull.class new file mode 100644 index 0000000000000000000000000000000000000000..db963b563ddc8ad363cf5345cd8e746114abd6f3 GIT binary patch literal 1212 zcma)5%Wl&^6g}fS>?95eiCf-}mIA4Hc!@-T4I&a!C`c_`v6&>3WGcr-j)TNsfkcGF zf)C)M5O*eS;yRY-#@Az=bMCq4j{p4q^&7xTJgmS#!9>wU31x=eAoNC&m`&v9tH(b} zZyFAT?+xS7`#2L(ckcTPh8!|9d#C&h_k13Vy<QlM50sK+qk<|!WhA3ne8{JQp_Kw2 z#gR;)wvD=imc*1xzlsK$CNA4(p-tjz?f3mtF^Cz;FJvI&R}6*D{t3~>B7RFYTAlrr zzBa;8d`+$y8a)|^!}+u?qGR6owU=<f{SzKZbxuAO<B6Ox?DhUX`vHSZjl1jVoOAt? z`4}uhy-|aa)7jE#yOTAl=4ieX@gy96;1Puti-?TaL`ZemO7oHiifIunY4I!#(HW## zC6vuCN~C%e&ZB|oN|jFiY{gGi{Mey|Ht3cVsM6)2H$!b#S6Ura3k(jn=($ZNk1C^D za({q*)37V_EbEU|T%~t=3BWa6rxU{s+@xogY-Y)|T=K14axF`?bIG@HhsIHzpHnrI zPxsLR>^r>~So<z(_VyBy_*OHiKp5^4x<o5RlMXxBCD?|fc~MD~?MkwuCGX`+)-Eck z*0hqWYsnV&5|^K-7HI&-{fSF@c=z!Fru$@pjRvNU!Cm54F*r#Kq@izyiqTQOHQgB% eO}(I_QL~&iZ<C+%`=;jEaje{x-6ur@5B>olj=Dnt literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/UserId.class b/api/target/classes/no/freshify/api/model/dto/UserId.class new file mode 100644 index 0000000000000000000000000000000000000000..9579bf34ea2a293cb7b782841979caf42c435208 GIT binary patch literal 331 zcmah_%TB{E5S-1Ufi%$4F91%!0e=9GOC_XARyhE@JBi!6N^RsMNPHG2Bo2H4ABEVI zNF0%+(afxO*6XkDk52$Mn4}00CWtb`7!bxA^`b<j>`L6{8(lPn!L_lbxg~^W=Zge; zgk$T(((8I{majrR8?kkzu0+{5@l<O+E4iud$yoj+N@rJBglNjw2_tE&p10dv`$v^m z>`bI9RJBmvbh<aAW^HQ1sr+v!C#Mgt^@YAOUE1*XEtlPVoFL&v0phcdv}e3B>me(# hs{rxEJLrv#02yOf20|P#W;-6^5F=LnRg3|SegGCyNWB06 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/dto/UserTypeRequest.class b/api/target/classes/no/freshify/api/model/dto/UserTypeRequest.class new file mode 100644 index 0000000000000000000000000000000000000000..f9726a06cff116a50bbcf30df9e6bba7c551466b GIT binary patch literal 855 zcma)3T~8W86g`9Bc5$tUXtiI;8))Lb+v-b`CQWEH+VVcY0ApYmcLx*yRh!f_=|g`& zf0Xgu#Rw7}%p`Z_ew=g9z4QO>?>_*?s1}jKl81bN0+tm@m-<?V10D6k)7GVFJB8(s zHnQ$SVX0Pc`gj4~LovV#0)=`Mhuy@aecQbW^~i?9xMK!k$Hn1~)Fj_;M&{gHjZG>% zV@AGo*rPFR(ukwp2O)hKU=1aOydy@TJX3Sw63Z&)K9OBvtzjecZ9HtTfo=`5>bR{3 zO`TZrAA)(;x2eKG<JlV7!tWU;%0*|nR-aLkDOK=TAY&<1o}?c|`stKmqc%@aZ*u;x z#`WXQnNIZ3IFnGMN6>_Ia~ASIDxl&;JWkr?vz2)(bIU!Hg`&ze=J=~Q9{x`D;!b%N zpyYdL*Xf14l|=XdK>f<f%CwRODK=<>NdYR@q^GcjSF}&Tzv2C4GKVSHUkKjD&I0i2 zJh-?J{2FiALOLI1gHh-H!7aRb-Cl;?VvS5P(Je1ogu+`!3yMyO&O5wcM7jE0O4;cn L<;2;|7O{5^`+Aq` literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/HouseholdMapper.class b/api/target/classes/no/freshify/api/model/mapper/HouseholdMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..23c4613fef8f00b7e43d6e9e665f546c076fdc1c GIT binary patch literal 730 zcmb7C+fD*85Iuzj6mO__i%<Fl#@G)4NsPv5T*Zj-y+CD4c3aZzlK5FZnfTxb_)*4L zKu9z^xXI4t%*^Rbr=MT%9{^6VS40Nc0=#A9kY_0M#Zd52=pJvj`?BL0@^z(^YcOOh z)u#d$7>>2!&sN5PdVb+zpm=1uGUSmM45Z~(CW&QW!tU+JXYkG`%&_JwE$@=3E$yRd zhlFhSrX#{9VO8o+K+gp#W;pTxb4ZP0)tTwZ7mrPbo5~!DX<Ds1C!_1kYz!hJ`qHg* zf$820D<bKnr4|>1pGg@GEB@%_5~o7$tJo3uFMtYKs;7lZEX{6y7u4tUGV8YShjU)d zpZ*&(L9t~L+mV+lz54Q$cD$vNv{{DzheSIS$!k4Sv7)7%X>FWv%4iyR+c&nCt~qu# z={P<vt$7D1&?`#6ELi%ENG_7cNi)*9qc^ZuGBPNVOv4~+iRAJ)f%FRC(H5~rNQojj chV==wL4`92n-tBUO#jx%+Qts)lyw*Q1`>M5mH+?% literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/HouseholdMapperImpl.class b/api/target/classes/no/freshify/api/model/mapper/HouseholdMapperImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..637c23dab2c21985ebfd15f4ddfd80cf5928990f GIT binary patch literal 1860 zcma)6+j0_F6kP`z+K|r01Tj%37cUVKVtaQC@e<8AVFaQ>CYHW+LK|9vrkchwGhZ@a z;H$nQ6{pIYx2f{cADI7`Dlh9a4HyD7c{%%B_TFo+ebzZ2zr6nd;1+(1Ab_9>MMDT- zfn>$jpF3u)Xg%N7jjE-W?Sfg-%SN?oI{J!TubD-=RLFX3f$*YLvE17N!FXa_#Swv- z?g<L6-Hu*fTa7?PFoJ$)Dh4zRVn|@JduR((Ahcz=>4LyWJdt@}yfXBXQQ6Wnc4aFi z6CTwtf>FBF8g8TUPOrqe#5|@UhT{S%)8&k^DG=S4Fz-5+pK@Ho37n)WQ#M?WeV^3# zl-z$181-tZyH-hGavWnjW7XV#OkzsKw1(3-BQV%@k*5Mm&H9}Muz%?YPT`!qhZ%0i z(}{H%8`qG)tiTb=H66pX9f4T0SPv=f@2C2a#Jq|N8gyJ_kJ?C07t$yiwVe5yxCDGA zBQ9&Wf~y3qc-#9MvAXfX+;rL7>$sufM-4ZzAaJq!J$2Vex?C-hwrjVpk+(1KFrMk2 zrRA1N^zi7E5{XY@QKOip4vhl!vG0z25{YLdd7o+)7|K``GgmKfn9iE9QR2=>#@;ka z>xN^=wZEyjMXM%oxknwn`KAQ=ip{4YFx?|To2r1;^7q=)t2+m{3k>94WAh~+q+j)L z)^v+@;gR7`+0+IZoc1N_=|#$py=|+*+YpGfD!3#teDGW;d3ufQ@6>j+*{v%bA&dXZ z`ZoKtaLA|w#AR?_-rA}dZr$Mx+MOH^gWuVPUNK$KBYC^-Y?==&DWI{|Wj4M>Df<hu z$C&2h3GlB4g5cMLFvmMw>9m42G`kD&j*|fHa+Js5f4Ia^YdGK@?sFyN>!X(p{zLxS zv{Q5cASB-Y1@-AJ`m)Kn9Yl68ENyfLW68Jl33_=?Ff;f)Dj4M~Muahr<Cwrn4{NHC z&&OhBEaN9)4l?EeekR_EmrI0^<|HI|-l*vpM#`E#(S~T3nl+tzI=6=jfnA)<a&}%I zH@}BDfj=?931#*-`WKYs?6|UnYkNoq@Z`<cf4!m=ujmPW>arAtT@2$aqBzIC&0rDd z37PN;pXI5J0X$^6iiB@bSYnA8Qix(6S<V8;@jON=y_T`sI(y{P8$vMr8BrCJDw6-< S%=c6uGb(^z8I$*BYu^Aa#L=(- literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapper.class b/api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..76241d60e2e7893faf8abc4a5f463351107d0b7b GIT binary patch literal 954 zcmb7D%Wl&^6g`tTNgE0YZD~u&t6ilmu!Pv9L?93X$)SiuWzp3nnc7o1Gtqb)sp6|x zA+g{C_$b72ii9xD0!w%9_|CbHbH@Jh^V@d-&vDp91=R+E4b)H<XkW;M3{z?1@ML_U zCSIU^tc~`4fok{Yw1G8&r^bfoPGyNczYOJEhci1>X*iSfxpLuKn`bJq>2#oGW90_R zs6g<FAc0n-je4IKCnGsd8QF~NM5d?G>Eiu&Fz|`a1fE6z->N6D?QLm_*P|1GPu&&e zO5onn3f$D&GCdY%!}dV=#7;j*Cuhnl$I)BK-#Q5Ff6R^7Gxg3abf(Gmr7_k^udN|| zFS0H!G|arqCq686(<aVXy|$2PPNjCQhY(Ts(#49GwMOmT=yFbUJ+rx+a1%IN=)6@L zh?5Tm4!hCv%5$&NFw&VP`BH%NN~s)oeW+t2eePKKbGgRx3jNAD_y1|ODszSMeR6LO zmptF-f@G)E;_B;rQZN$Oxkf+bdcgr2{0oYw3aX7d*LA*y^n$+j_$$O0ZYpSUEslX( zxWRSf3P67o2n3@oqS`#E3EZaJq;&||qHUi+yucj-b~5Z@FT-7?bg=&?<sRYpX%#%6 OJzVY{EsGRg4}f263=DSw literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.class b/api/target/classes/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7539af08ec850660d5c61e4fa131f8696fc8f316 GIT binary patch literal 2850 zcmb7GTT|Oc7(HtnM2xr;3{41ilK{a6gOfBR1ZWa+p>Z*g#smtz3M{aQZ5dfkL(<D* zANmXW3;LSAn4z8N^sO^}>>ud==u9tXWdlZ7l;T0V+Wju)e3xDQ_V<rJ19%5t2jPQX zK|n<V8U?Q9&G?3;7c<7jPFyP(@tm2~v+<l(DCk!Fp;;>G88e%n({pROHRr4fG)@_L z!@ecpk3^RgGzrA&n@QWI+s6IHg&-98gJ_1TphZP1+5`sb8*l*-P&Re@v6<BcMk3MV zsg$Jnr1bfkiVk!NG#7RINl~{JcM7yK8u=e)qDvBYmx^w@F3><Qi8R@t7Rs!?;~+Vw zq6g<`fJmf)kyB!j`V|Oos0icDN<1VNfv_hCxlgwjaY;d+ihc|TjMWd_NqJA?3R!_x zR)n=^N}DsKEEn#2VRzhm<w#b>z6~cNgDN73l2A1{0)t+LkLbz*92V%@(w=GYl5J$; z)0U;}B#oloj1i0~h^x4Qt3-Y%B6kG>MdJkvfJK}LVhC@^mblL4NFur<b;nfPz_>t@ zVe6J=n+$R{gM4TvQC**G#snr6OsVWJwnfKr5faO2#d-ZX{nFv8)VQN!8h7b1?<|M* zZD+OoW_)37OJBF0wB1+n05bw1+jR8<n@M2VD^4!q$&+&7lBHpi8o@&q3A{(hTAF3r z6{(P~1sGjbkQBI7zn*GS6~wG;`vp8w@V@Mz#{xa|)nsKbj7I{JH1nGb$1E0Q^E_e7 zYtcBnvNaa4tl|T#2&nAN8N({t^IDE+J{sPXZ5dU2AFB8WA5)%{S0jIfY*oDC;8PW! zNe4}I@F1rdS&3>*#k#c8L@UlB^LmeGsX$xO$m{bZd4MizYx3yoNSf<fc1g1g`CeTN z*cqcJFz#_0{a0sB(oyE<am^O;Fy_iObvs<TPGyaHsMkN%X{9A)YwJ&WO;kCx&*^r? zOh3{rrhv^tex1i1rC2`ITsjRbyOYIw*hJ2PK)Xwo*4mFt1+q?acOQ*0kNPU6n=X|p z50dT}-6Fp`r_}WbkTh{7Wo+g(yJWErUb<PI9*a9XUYaK$36z{J>-FI89N(;GDOEY? z`#mIUo16@TDYIm)>obNd^{^|9l}`wHm5j>#@>06U4-)wo0PjOI@|osaoTK2_FtiKt z11CP{e9CR09UFYA6#;A_!#5$%NJ>fNZ{g<;hz<XW2Jz}AC@Z@-GZz~!BUnbe97AQC zjSX?qTgHVlF2`O`-tYJb^HTu`5l|QXo#ppQ4-c#Jyl;DXON1TY7b^CvzUc`DwuqsX z`%jT2j+|ppG$PMQgW$fzXre$(iSc)i4IHQUF%GQ^?;$3zi)(Y7y)7_5vWJ@j-yzJ& zZGm6VJQ0WuoePw4Zx8SKu>Ac$e>lJcHNg7_yq~}aNg={GMlnU$w+T@OZHT*Zv^a1B z()|I2X>7wH#1N1DB4<9>-0$WnrM6Kz*n3u`*9L#%UkE7}Q84i*`u3@AQ{!{~`|#Ys zGQgRn{0&E$mdHNkS*B&qNy~g0DVdg~GFIjINg3L)lw6^;t7LYaVICv08w~b1F7qap j%ql5~9Po)?2QP?Ortc-bsABfxFeN+G68Mr&AHMn*UZwX+ literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/ItemMapper.class b/api/target/classes/no/freshify/api/model/mapper/ItemMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..87ae4a7776dfba4474715b88e129408dec2d90ee GIT binary patch literal 1421 zcmb7E+foxj5Iqw%2}Ev!0*Z>@g#?w=Cm%pcOVmnLB9>fUcp8!+4DKa0J4?xD`DB$3 zet;ikd1ezL0-+>Tlb!B4-KS6Q^#1z&<0pVucu_(Q14Vel$fF=IekhNmAIPZXZ|oha zh7~BR>PXu)fq`;mr-(s;#VGdojY<ym{;@CH+7IKV3j9#E+sgP=tHOG=74Y8jL}09@ zBlR&2_mtU^djUNYwYVXJ9ci?)yH3v@=tQ7W`_KF<0z)=-eCswA_)zW>=nyOYvNmn( zSEC~p+1MOsNOqyF>_Oc8B#jJ}Rfa`*nn?soJwEyt%C)RrsnvmB(}^X?8HYgL1rj{8 zsauh>siFEWX9HI+t9<QT+J5l!TGrU3kxtE9$8EK~wINWwtWOSgd9Ns^n~J#yojPYy z;K`O^!>b6)D6c5;R1r>Mp(9bC-cOrr&33yft@`(6_q!HVGB9!J-PeX{TOCJ95%&dN zp1qpt<lL_YfojRX1@<mZFIr$SJ<l#M`#FuQ4qZ_?(Hw<0Q50L55em%IV$*VSl~|KD ztnbE3N3Dc~<&R{Lvg^|qL$aPo(^4GZoNls1Nt~Jn0}AdnRWlEHQogKw!VOPKn;GQ2 zb^|)*bacje+1+V@sSB8tA(59RifQ_FlI6S4!giueC*O)Uk0L)i?pFZ$v;QGlJ}tp# ze(5{JH*Rt$bwR*5u5mxy0q{8jcmkssqi5U&30%)y6PRRR*L8y@H@R|{B6=D#f6=!x z^z>=;?H+oT=sUQJ0o<d{W7OP9%6U2#xGHo$;Ci@=+-p1{#p48vC?}}&%q3?&;n7nD S<nSyD9A(flm%j_q!1F);tc;2P literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/ItemMapperImpl.class b/api/target/classes/no/freshify/api/model/mapper/ItemMapperImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f706573ff62f86aae997966b629c6e2861bb78a2 GIT binary patch literal 4510 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 Q3ex9_3DIBpzX5;!FELNZRsaA1 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapper.class b/api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..387e6536c576a5f0d9971c0a8b241ed1cc584419 GIT binary patch literal 1394 zcmbVM%Wl&^6upx=2`!}!EwqIM`rwtYs5gjBN(4ehs^kJnN;fQE;!KjM{9<MtDSLj1 z6%q?RfR92PJE5)O7^zsAv3>46_i=p3zkdJtNklKGu|x%0D3i5JMJh3>obeI2Jsu3~ zcil7L8b+l98A#J&v`}xHmgyR!XF+K9mC!@kAKN^VwjcI{XZt*ggt9xsFp6X_aHKYe zfl=e*6lY|;h8v?*M+V|;?01Da;av~NniIO*JLO6y?^Dn+L#Y`(cm5|?lTp=#nM&G1 zM`56m@^d{WZidrr<aqW>nC<m%1{6>^7G@as-gCu$VT3|6H}$MGjP~kIs(EarXD6B= z;S9iNeU>N%!Yy{>AmAoeXz1%~n1h_MvkkT~8S}XRZn=e~Ykd{^nG|jDB^Da9^eIpF zoX9CH_X}k5pn$DerN-yUtL->2(ica;NNR~mdldws;YMO4Ky*SiNM=|Y6}!exrWRAI z5wkerUJQ*l=exk8WVjj#G*~v{NbJiVARWfa1#3wf;hz9L0=hF-pTnLs=ViKA(&!TP zN;=gtI$er{qC08zZ)9>lYZ;*@M|wY*Q$`zeWDyFgSg}sVH17aG>*Rm&K?^mB*R*!2 zjQ>$`6$!di3Hu`6Y}{FbKK)MY8y*U@ggr46t<ZJs%M%COZxC4w=qiv3EJYl=DYORS z6k3Pn7FL07!+V1^FHBp2?_k|UfMiua5_?HCINZ~8pSCsafU-+_7YQDukshY|qm;Y? M<72ERAiGrm1MPvN#{d8T literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.class b/api/target/classes/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..ac5c6d6d2fe4e096f4d9d9259bd8a077abd837c4 GIT binary patch literal 4093 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 OJa&BcB`ufWtA7FMpKF2u literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/UserMapper.class b/api/target/classes/no/freshify/api/model/mapper/UserMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..4c559384960c9f3bd258e867a0a9f0e3ef3bf020 GIT binary patch literal 1565 zcmbtUT~8B16g|_H7D|DF@*#+dAJ7(L{q_MQNR@=7AfZBHe42KrWnjBoW@j<{D@-&* zO?)-+M;Y&Iiv=u!gokeD&b{}{x#!-Q-+#XU1n>$klZYUiKrDq0#2L~%e4kqmcdORB z(vB!=hWNa6rCwl&X0lrebTTY@s%rUlCEaR8@tXMLsa?w#<v>Y&V3pNDU3*q3{I{0! z#$4yVPf_+;x9r(MC6Pe13*AU1(33(h`WU8M&#EZlZ_CPo#p}|lQKVzlc)c!^wdo7B z8ZH_7>Zj2d77CYPbev|LVKdi_ehegVErshCWSGAS80jU#A{k~fg_fH6ZLW%9FCeFw z%bsu)wb5~oA(p3tsk(x6#ad7+3H6?r9NHNucxCQvaV3r2+>GgM=`&;tmz0eT=xq=? zuAX7?B*7++w$wV0r88t&HT|RBQ`Ee?OZ{n*ORoyO?b++xOotYVh>mRpu9h{i;_gdd zQXQ{d*V9}}&n53**g)#FuT@ai)*9v6M7d+1I{``1TTxyuuLRe^OajB3%sGYIG<vN- zQo6l92E}L|glHpYjyID=P4OvWxV?)!am`g#&;{w+3%DaIQrJrehB!k~d**=Uz;PIs z&Z8P~IFF#I;~0Yu>ueyd*mV1@gtua3jhnI!R^0ajRVKy}X{^Q}7pS{gx0`LaNZn*H zL|>L>iu+78jVnBBMu=gkjkMI2*aSTc5qh0y*v!*Ft2nLcd7|$SSqq5L3P|UUz;Zv3 z_;7@-uSkBTy$FWsYaTW7BSsf{gjT6WJZ@l=EE-1KBn*SKL6Ii5fBF|X*kSGqlGERi zj^L0sqbI-y>G+`#Y^agY1fx`p;}(J54l`IBcWBYUXcw5EUpM*g((j&+u^7XBJRpE( z%w#iWocvQJ<|Ei5G8B;Y2_Q#iBWoHn<ZfjV&_m4r4>Z~i$igEZk16E|o}NOX{Aa`< Mg6APqBk&90FTWR^V*mgE literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/model/mapper/UserMapperImpl.class b/api/target/classes/no/freshify/api/model/mapper/UserMapperImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f248b313a1e65a787c72caca7065ee8fbacd0867 GIT binary patch literal 2184 zcmbu9T~ixn6vzJ$3E6bn0zykEv<NAtNl00!Vy%?6@{$@&5T&41Z?<HC)g+tQEINJy zFTC`N)C;#WI^(S~ekjNP*(|UvNqXVz%=5B)UVi6g&p-eE@fUzKe5+#s2@OdDgGedd zZo1~7XSa`?!=Fs6<(Lh(X4lPz)oR(Ex!1P6YIsygJ#d<i|4<>3%kOJQD@=9Q6(t=S z5;}%pXt-=(7$XYv-NkFZYi@Y9<=djDFmz=5J65~>qwCcauH^ES@2npzvu-ty%w6Ae znn$ZT-oluMaRXOyRbipK;R`X88?Cy+u-!ahjOQ-0xr-jUI@NH^z$C7du^nf;+Rebe zL_cldhJ<b~rjp~e{cWpZOKxTiye)<d8j5`w!kmGOXr!sJ)v%npNY5L1N2Jq~4qs}x zt&r&+w&YVXSvsjxIV)w*P%yB7qQW4}mYLSESJGN>!=z@hXu!l0#pp=H#^aHNQhCOu zVOk8&$Z1Ya^BUe)nC;I~uIX4o;u4qp20p|pTk3?I;%78gfe2;|1r6-BK3%idszqHR zB#S!Rn_z3gv<5>VxxqRsj8vSay?xSnZhKFy=XJgrtGEYNec$pNxkoRP{;|_mxKrsK zM%Qj)48w<>+lcq?X0C^YR~vmb-$P7lN4rVMjY77E)N96AGLc_axY0u)GJAQ~w+_DN zKOIFqTDARSx3*(>>`dSGm;v2)MOgYrVZB#0p}k%)#Cwpjq=l_xZ@vfK>lz&f>5a$# zi=bSi|I8blhC->1ONG7#Jny+T6|i6BVpf>%UH8O0uuG1#=D6gwGje5IEz0b}9OvBt z$2T~$S!txWZt!MuSMs*-66!Y|2C&IhJ_94z;%amRP{I@56h20oQlk6|5`2K-!rvHF zFaCt~>?JN$i-m;%dVtXY6Ga}U0^F2+Ho&do3(6-#A2a;pfN>-_f>XH034a|^d@`6u z0XIY6vmN`9Z+gNf_>>I8m_Y?qa%_k8R0^N*FsS%l7<ce_#P~CJVa%N}X33bV3Qs=3 z9od%y+?D;^0PkJk%aHFD`Lgtx!vym5T;Q!3<IA1#<><c}@=f6j?Dph)ioJ->jrb-{ z`Bunxufz8{K8W#5ux!9GdG3;Dg*^Ajb3ev0dB!n$#-Vdg?)T*Q5?@6ezeXHOryNl& znU@Cv9!Y*4M|J#2>d5=L)c3re8KlYgkbIBGw@$uI@@+9+CFbi17TGt_Po0`Bov|*F R^;wv+Oy8P*P2B-}^B?g%12q5u literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/HouseholdMemberRepository.class b/api/target/classes/no/freshify/api/repository/HouseholdMemberRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..64892776a0a1ec7b9949ae3071fa29408e3421c1 GIT binary patch literal 1354 zcmbVMO>fgc5PfUhxJ?3W!#9*dOIxKN*bC(nKmsHLtqT<a4%{~J#@XO_qqS4Wm0!da z4u~^93Nd!RTvOD*!MmQBotZZ?Z};b~Z{Gnt#Fhh#VKdacWn|P=tpOK3#k<;*0e`Oh zk!<V0+n3#jG$q)Wb5JP5!92sgypxeV9jREGLEiKA#KK@l;!rXiRNcJ)u}N#&GoEu$ zWLWBmL%{<P`utU+Bb%{<GQ*BGK971vg?`J3uKcLY2kwbj@J>(g4D8*W$U<FdsnE+c zA$l@+8%guRV_2`c({!#5eZrb5`mqYQtD?9@i1uaN*4}|g635a+3<c_H8epNW{7}Sw zL;cu0G1!9{8}W#;t{snjQcD8A)E<vFkrpS?aM%n*`H4!PdK2@V8OOCJ2es|@43%6s z(lg8_sD|<C{}OM;!Wov2ls(L}QQbX}Le#OXZ2yPc8ILnVCpu_9rMp4>a#bi__LF<@ zMl=G_R9xK@!8>78B9D}I+*UO5`+t;>VcldZ!_H3`NZCGTC^kan{ui5PWlttwO6i16 z#k%gBrhKN7GFSf!_ijS|0(A%rAbQdJ;@AwQaRwF^Nt&bEK-)5X7Aj;qn>C#~Vxkv@ zVvM}b19bWVE>2aKQq^T#$*ZnnWvZf>OONTbx<(0CDgF-a7VV{5w|{_r#VHG4QZ(0T gEs!5j#0^@@>3<1pSSM)=gV0+e_&2dZ1`C_N0o{3tdH?_b literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/HouseholdRepository.class b/api/target/classes/no/freshify/api/repository/HouseholdRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..97aa6195db34b3bd6c6cfe7f1c5d48abb5061d7e GIT binary patch literal 480 zcmbV}Jx;_h5QWDJOIViQjw3*`E)Z3Kf&wil2*jRXSUZVB))P4nC=w^5-~b#7F$p4x zXpkuE(YSc;d(R)AZ|?wb4toKN1k5bS*y%DgaV@bh(&>Uq<H^->PF1N>%GE>n7QniI z{S2Q`=4can_n7IW4`4&UDY-<Jg)=sZ9j^2XxhJX6qs$5%%H9;%3ko=hja8l1Wqqv# zoE$~HM?^LWkE7q9D^fb|8AIl})jlP4kBz<8t`sm$e=;<(lZ8nv`pRhmuLFng6k+tQ z1ZRJe4V>C67tFe~pvo=vmC2dqu#4XpGiwUqS_Q1}8S|G3u0DWG-X^?_S%b$2rtQ5A IJMG;40`d))m;e9( literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/ItemRepository.class b/api/target/classes/no/freshify/api/repository/ItemRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..d075ff860a0eafc4c73e09bedc720b0abcb38cd5 GIT binary patch literal 1036 zcmcIj%T59@6ulim9PxqTbKxE~bYWbfMp+mkV|)-lpfY7B4%127k??CS`~W}7cxRXl z#PEnFE}Evjz2}^J@9F2)`v(AAz;OXA0@Xm$uHw2Ux+BU$K@|_B7DlQOZ5lp!%8mud z5h(T98>2o8JbM4q=N(gkRRU*Hc~pl=1YTFM0Ut{BN?m3c?T2g{u@$ljAc4KE2;7)O zH%7NI(!3{qm%wSo`Kf9kUGCHDO}*+QLLwu4>IiM>DD94$o^&5rtiW)k3D~^}sNEJ` zz)Yk#fydtyoX?RItFK=o{mHCat^>DikQB8%FXvo9F-DnH_Nq<^^nVa6ExYJ(6ZfDo zYU1Q-mGN8>gE%tqQ1R?hCVeAd3Cv1t5CdSlvJn%ws<h@LXOEV_52xge{aSba<kf|J zm?BAPj_t7CmXYf48{wnh%5k+5<JV&E;<q8Nf-8@|F^6BP0Bc}@ji)@O<5t9F!3Ksl pVJi*URubCI!X*svz%JsXnPo)7mco8|g&BC2WLYWX0URdKN8hJFKY#!L literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/ItemTypeRepository.class b/api/target/classes/no/freshify/api/repository/ItemTypeRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..21d39293b2bf12e9f5777d02fbec95662983df76 GIT binary patch literal 788 zcma)4O>Yx15FNJ-p)Jq?r4=_HsFb2o(*vjQp?+*AXxqSUL<JY*CQdS`*Is$OsaE_m z4*Y=rsH(F`+XOD;VA(Sszj=Q1F0X$70f2X~UWGXZuZ$I4r?NhF3n5b!PNg<OZ(Sii zd6l$^R7H2GDl9Nq9mt^+TAH3{o()vnSK%ImH`et;mO3=Ou9Jznu<l%Rq?cll%4yWk zshj{ZSj&`j?fz}A{o;fkGk8%8Cv9S1!q&IOsobL$A!fc#T#l9R+s+qRw)Dzn3>M4? zU@^v?kv?|>)|dh8ZTPPeiR~zTCqn%_wR;}r#$%$sVTNZ~?HOae^k@zB72&K3e9e_B z2(2=dIwyJ;aS#RvEsmXSUXtgHsCmq5H`$llJPb}gwvKA$-4@@AxgJ*_&F8150rAtL zAPRWcJPo3oDvjrgZ+_U_<jv?Xi1_|@dZjTz&v##sKqN6(CWUaQMug_c6^y~JDc#58 zt<U_izef9CL8lspmd0BOycFBqwN(Q(>9TQaiiux#N>h;A7|heEl$6PlRk%;_B1IK~ iplzAf96W%Bw69X(BZ^isIzIjZPv|_pe+p}(x@Xsf!0*lg literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/ShoppingListEntryRepository.class b/api/target/classes/no/freshify/api/repository/ShoppingListEntryRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..b03733859794ac2466b900f0c36d426519816d7d GIT binary patch literal 545 zcmbVJOHRWu5FHmvXv?RF3$TO@Ucn~N1ri9VAP_l$shz|j^;nKWl|83o!2viFVv<S_ zQ3)XyPyT7%$M5~)^$h^dVH`k@!Kp!>I8|mkskyM4J7uxd9$n4j46W5BjdbZRjd%6K z*INMV492;57Q7H9<#&&{n)v`W7@VL>d1)ODCQi)N0^Jjr!V8{T(WReS@lD8JFVRL` z)Yn**D#JqFNCx|d)1#<Wsk|<DV<aTqTjev9_oAWq%9RX8S$Av@>(mHeImKYIN^utb z3_VAwiq*W~gw$S^20Agr=wA{4F56Lz(4?)6VT_fVsViMjsDodsId1-odSI|d=u_8> cx(Z+udN80<pTUrp5upcLgyn7<cG{cWPww!nfdBvi literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/repository/UserRepository.class b/api/target/classes/no/freshify/api/repository/UserRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..b8522000f97f717e94edeeda2974997318ed2aca GIT binary patch literal 523 zcmbVJ%TB{E5L^dBDCJR!pJ*@m#3{f5i5^f;5fLA-G*0T^*p}l^<<~gy0elo<(?~RM zK#0R=y(@WUXZHQ$^$h?nVG=>WV5SYvov2qbZ#i1Yov@~s-nf=O*1|n}wGr$xn3VW} zT%j)b;;9r%AHg1jbK?qLTPJmqJFLXoxM!ZBM_yVSGTvI;5;7R)QfJrgO@&f1m`;-| zd+Iy3c-D^^FBM-{FO5bO(;9ceuS|B2othV}W)O;=Wt7T7qi>vGF#jXtMe;L+%49-q z0*J3jZ#~$o_Z=ty^8BmPKqN6_zEeI(P2-kgE*1GX{eF?NE-s3n!44s$t1>!K1p5%c Wh`NxzQyCKiI3)D1BRJknPCfx{JEAWD literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/AuthenticationService.class b/api/target/classes/no/freshify/api/security/AuthenticationService.class new file mode 100644 index 0000000000000000000000000000000000000000..abcf1c26a2057ea5db7ffca01bc3716d9762c5bf GIT binary patch literal 8766 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/CookieFactory.class b/api/target/classes/no/freshify/api/security/CookieFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..465e17637925e2ab9af099a52892b1365503cc7a GIT binary patch literal 1318 zcma)+YflqF6o%jFg{AFsD^iqOK@fUTR=jHwtpy@dT4GBR{bGhPv<ur^vYis~7x;6O z4;VG^2l%6mXIhXnlwdzhXQpS~^PKn0^!J}1zW_YPN)R4+HTZP+(Z$fe#}Bz-al2yV zxA#O@GITAPwkekwys>ymLpQ_d9^dD#<VIb%hnA2=RmuY+<2d`K=thvCC*6=$$2C83 zX*zZg8g!-K!!Q@io@XdX*R(6Ci#zd>I@7149|H`bx{$9aL*BNI7<{q!@lrPi8JMA> zhIB+Q%%D-!CYM!)p$<9Xr2uYVM8l|#F^n_J+m5m8ih9-DJu>)#Nwt(4t|^ZU#V%}V zmYeVeD$y(phTdX+eI@r{dFySuxR%c`Ot-kDSrdj7wFAfHmQg&Nq-##YmZ<=unA9+( z<0hsV#+$XbpU6~Q$9A^JVydCAlF8?m3k=at;^(2M5N=^s!<>#7;tW$AgxgW5eHB3| zW=_p%hd7H>7^(Oh<!e&MZQNl9kgps3W4b~f_+o3ydxHTgWI@M0)gTp8Q1%H84;W@I zwYGIdR(V-Eu4-k**&)@wtZ9o}qqZ&FBHy-XC!BT4+$wR`RO{1CpRAg7hFJFh<Wme0 zs<`bYw(>J9bh;tr_@%d+#Qf6P7q()%aDnNKl$)2II(&sn|AwHKv9rltUK3KdR8TKb zW-P(oGrDLjeuYY~;56K_ST&nwwYfU4=rD!*^sd#%3qnU1jSp#M&^I*?{=_%1uQc)C z5sm6+)zZf_>a74g!BbiV@C+%6Qim=0nxe6v(B6duBoWFceJAKmhQlYgmORGwV@!O< zj0c}jkVt-^GcElHApl{7Fi1~&h#qVNvlwpXi?lScNdHElh;c081u?v&m7meJf=J^P zZ7B#&5DIp>1reSniuHt|P{Z9s6D8rL{E74YBUB+UO0|t)fHFidL9-~?H2JS)op@Ac LkbH(l50?J|z@<WB literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/JwtTokenFilter.class b/api/target/classes/no/freshify/api/security/JwtTokenFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..7b09649ed3045684db8207eab62c3acd4246dc4d GIT binary patch literal 4177 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/JwtUserDetailsService.class b/api/target/classes/no/freshify/api/security/JwtUserDetailsService.class new file mode 100644 index 0000000000000000000000000000000000000000..d01789ef423f6b636277d018719024c76007c373 GIT binary patch literal 1791 zcmbVNYflqF6g|@xmX<=X2+BiwiMHjj_!f%@C<vy20d4f-(hhWRyVLA$!G81~X(Etl z;t%jg8SiXg*jA#3gxR@s=bm%!WBTLg*Y5zHU?m72{2Bsbw4t40){^?Z&7GXsFX=`> z=nl^mZQ+*mm&fiKhuhD&YY5ZX<@S-taE8tz8Ed=ARP%k$QCD{>Zpjcj5Y!L~qZ46< ziNCnR(0#x?0xPA}JTYLHi=_^YBSSY0>p<UiZDAcG<4yQ^ndPR3o>Wr1!-$}Vp+6^y zcutzxO`hMYQKP6$5s0{ws;{@aL1Lol)o?kCKJ+sTHj1eeU}z%^8(D^EEPjrAN)q!B zu3|vLU>HLfZdr$mSTGDxXpiA~O_Q@yQdw7k<L7hb;Z+C}U191e;kZc+*BN4s>}%y$ zkt(&{$QR5Iu3<EcF^n^`F9=Jxiwt_KDS37E$+F@)U_2ed4NPjdsp8yX=&6@;d+(5E zTn2wEp4Jd&Sd#XE?i5s!_iZE3kEQ*--kTX|bDipGXUpB`)w{7%qoy>nN=7*?7DZv$ zKA)Ic6a6<>k|FSnI*uWd5*FVos@{5S?3rYVrewx2(}pe7zG4ixIpMVKx{KzHa5|LU zvWV!pW~yi)9_pN7_@a^!soEUuaMN&ww1`blW2tCfekWflR0Yg8_%8ebuVH$UizFem z`XR#$9;gP|zxemOs|0LGcTE<pY%Llo*yL_bW?vbqS6ptBsJG3{NeS{MTQ$XQ`8(M} zzv|Q=pz0q_la5_kv@?87s4@?>d?;sCZ!-++6fIZed0IGvnqb+oq+88;EY(szvFFmI zgzHsEnid~T4oxeqQT1-qQyx|C8m&IEColy+rfK&P0r~?*5?{ckPN8kmN7wWzE}i1a z);C;xH$8KPkx%5}#|-`NrWFJb#5lcY6PTr4q8tJ`=4eO3a2t0BCWwCA#XW-TLkRcr zfbKq|^Dv#2Esw}DPnG~#9%F&N+8A91ZO7=x$LDd}q*Z}N5@(o5Or3xwrccoInM^*9 qQ#-i>y&jj*vTKb?#FMYiBVGc09!k(h=AMdS(F^nxOSGy`%fK(ur2jeq literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/PermissionEvaluatorImpl.class b/api/target/classes/no/freshify/api/security/PermissionEvaluatorImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..41ab972bb08ead17b561e46d88d3edffe192da97 GIT binary patch literal 3374 zcmcImTX)n{6#h;-C3PBTsZi*EC|Jt$Mi3Fy0s`e$ozhBME=9%D%xN2%Nrog-DC)oP zLHq;0@Zw8Z)U~|4@Zj<{x%^I&cG3$KaQToqm)U!tZ-4u8&YyoT{|ev?zRRNljRtZi zny^iv?VenamMgtkYjpaavLk_Qryb9U&I&XZdu|wL7C2HDn)Je2wdx0vDvwrGAS1{3 zE<LnWRZsFTwC$EPX2+wz@n#Kd7uZp^Q}VspJo0EY(T1G@Es;N2rNJQ?DuG?ao>E;l zu`sBSziDEZ7H^LHWH*lv>@l#{L?;RY$2{Mf2~;@e%q&{6>R6$&Yk?CjT4O4xIAN&a zE=ac~BR?3fR9yjcPKINFv*5UDmPb3qk{`@kVO67^31me*@Pqlf9or9-b-otODKB#D z*#E%{R_#}Ionp^Oq&q!RE!dB@3>+}=Hr^rhS3Q<|&Z<a5@#&$XLV>+2ywxJdwT67x zWkl)nU<(f6T?1Vv4x^j=#^kOOV&uapP_iPhZ;hQ~*CKHKIoQrTDw^m)uRtzRAv0#8 zxY57N&I>q6LmZ=+sd+I_Yb;P@O{*g0ehe5mYQn-XfjxD|Yw$1^q_;RCBYRHZU<%|# zHZ|$T@xFl*CO*)4bo}2*zY<7~*}lT_A~PmK`=U<bQzkydM*{gUl0g*SbRuHey$LBj zQ|%BKG;tbd=u$<_t0CW`yIO@a>U$C6crvTIHGOgEGBnIqR!AP7m^g>?WX1NqNID*^ z?aNvlnv=n}x?fYCtp<Ch3=9dJ+L8rn+bRq<D<CGokY8rew3ZxCU8_~5RWKo^UGB7( zd|SFVWZ>v^x|xgS9O5}%detf&6xgoIbhU;BZvVGBO`2V{Qq!HDDb|%-Q{Ni#mJDsy z6G#D*fthmAuP_WN&9yyK7wL)28#cbQIk9z)C{}cNOzPefsepv}ukEYjTjPo`aGggw z4q1QGoY{y+Gtiu1A1(`YBogZ_5p^Onu~?1cy`f(-X5*2x=SO69CH|UMDzZWQwZK-| zd|L)Uoaw9_S5~IWvMbw|yVwHevw6G`{tN2lB|^8p#90>tLJFLC9c4N=9=ms$SBk*? zde*MFd5&tr=>G-ZkJ!;<HHmxJx((BL*eDxNCT1`zaH!6$<1P5}$|}VSQA5s1n^zgT zQVX-CzWOW6RjQO6a8-I`SA|_A-=D8lx6X()iaO9)@t6NIIdW^=?1i6N9+Iv*?(iyT zgR`!mt`;lVn%8dt*TfX=w83LHdzot4B;+(z&Eq}-1EKEFyx6)n5TB%7(zGwHQ2)dK zPj;H_cQVzo!a-(hJ#o!g;4@C#6}+^DJ&(^TSB9Yq4KQI2Z*Xq21TpZ9z=5qr`Ep3I z2?rU923~O&_(*8t$Tuc`FLGsZ6neM!Da6m5G~g0{_1{1<F7ww+1aJjcxe^%0r<Bsl zV;pl@?iU!hpW=<*IM3>L#QMF7OscP~euh$Ne+1X4q4!2PYotYBdm{ya5q_im^nstJ z2YyfFP24N?JxA-nbF_5k{y_dmG&Mfy?d$&?=D-qmbmo@O&T$F5pHQ|jcBmuPJIq&Y zH`-Ce0lt*FIBEw^BsNz87FPilaUJ6^z#=9vNn1QShML0-&U0vJ6EWzWxft|yZcgw^ zfb;E}0*@%FffxFoVV}S=926Mn@60XZ2)OENfQFiIw<A7gfG_H!d_50jAQo037H~7= zuz*{*9YZXvLM-t7NuH?LB(R$tZt+WjwdHk9l2;wVMINR@*gfzJ?+NrS;pAf!l0{$t zGCl^DaP~2b+)v0g*7-~l#L5J?J3gMK$gqZ_6R0}|q66HGFYqPL(yTS1q3awA0AF#@ ffV=pbV>@S(dvmyl3Vf>9@PPYy&K}|szD4Ih+_$ah literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/UserAuthentication.class b/api/target/classes/no/freshify/api/security/UserAuthentication.class new file mode 100644 index 0000000000000000000000000000000000000000..0d966afe3f530e0b769fb77b77a9b657e055651e GIT binary patch literal 1523 zcmbVLTT|0O6#llf1VXsTwO&xc3%vkA#RsR@83x61rUEl454<hu5*9<!*(56e$p@X$ zarD6-;E!@Vo2I4GI-(ER?74sEJ7<6V{PrEdW2_D$gFXXU3pw;Nl>NXyR3bc*ho?4g zNIMixtYma*zY2v~kE0{uN7CVu419)cOiG4IEl{o<Hk9<;L&Z<T+d#cOi*y1dZ0%VW z5tm+=q<Yf4SB5ZvK?A0RAy^EL{yP)Hh$|wEFd)2AgbevYv3AVga668qXKw_aCmant zDLP_d6k`lS6t%;{kTBO7CR-sM_g#B8(k&(K;}#}b?wSgp+B7kRX#+DB^0>?}mefiD zw-1h~6hr@-^kr0K=qnWW3|wVc`Fn$1EN=vL!7y5rzSxRS4upEi4?NP0*8+!odt6B^ zr^;+}B&qkM+CNOP!Z5fiU7ts>qP*KJ63+3qR=&WXpDFG~qTU+BX{Acp^=LMfsO#n7 z9>M#a=O$g`XOdsK84Q-53=P1M4en9@GVEYR(6ETqeWE>Vjy+vWZO9h(i+c==tme~q zj%etqhX$4z=Ff)ooc6)x-nw$*6AErSQpy*C)~LS2^)g375nzMBY>~uJEnI+wKdrll zW$p&Ca>S<8Gn~=O)X^6KUDgmWM-Ouf3|HtI*N>Cl>j2&9nULigNvk9=`kSRsU|(S{ zd>|=<Svva@%LJ~|-D-N_25yoxM_&f>q`QUNboR(J+?^@kBNM}&b_Sa=X)HO7<vfhp zj^JDhgW>MQg6De%FQAZOUrZ}!vhS15&bnXdh|ILh7EwZ9()Gi{A7CHP1uiCm(?k;) z(?ES&K$*@((q`$u1e<O-t=7gBjM3SH%}d>Eu5=(X+sN{`mrk}ye_h-xeZgd@{J9(A Ya0kRz2J%n#gtdU>5=i$cQ3elw0UUEip#T5? literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/UserDetailsImpl.class b/api/target/classes/no/freshify/api/security/UserDetailsImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b904d022886d1672b3e0291da17422f35eb97d31 GIT binary patch literal 4233 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/WebSecurityConfiguration$1.class b/api/target/classes/no/freshify/api/security/WebSecurityConfiguration$1.class new file mode 100644 index 0000000000000000000000000000000000000000..58dbe052b6e0db9066e95551f6e5b74ab97a5a5e GIT binary patch literal 1960 zcmcIlZBrXJ5Pk%PJDf}6x|FswX%e7~ffU)KycDO9#Jsi!GPnbE^GUXaEjaExk_^MQ z{(%0Oekh&kO!EWsqdMI?8%#Rw2OzcQq?J~?`|N6W_4cnn-T?R(#R2r7*FnNVANm=d z1|i?q(lpfmDHlz}jjXn`vZs7cR!SYZ5C;3I-qOOVFc`}*^xK9qV_6a}URge$go^<O zNe{Q+F{BQ}vEaT4>U_I$Agh+tKU0CSiwwP)@m&{ph~N_wNu=<BgS3YaG03nO>N+<~ zt%CZ#7Dw_V)Q9{;R>%W=>`Tk5F={S?Aha=ZUI?|>k#%LPK4nOXT5VG_o1}o@$4s${ zqhuqk`SIe7OvE<x4u;<Gv8~(1Ck#UkYnuz4=cebTvh>d_%;e^tau>s0o*!0)-w2I8 z=iTe_x^nZ``7FtO-sN@WI=qJrgONQ$2G1{iiY_mS5sW$*^Y8_}WO#XVml^H|-w#h@ zZCk6l3JgOz^ZI`ZuZs)=qudz5gonw<g>&nh(l)}HiCABGn7Yhbm!c+h%*uMmVVbTe z#$3>{CIhR4PpH>2KfR|E`1)Fbr3&0UuAUd4)C{wkYt-BLE<>Ua)+EE-q6*|z>!>32 z52E7JPP!N+*sjnjT6Z=RQF$}WT;14ME>EFsNB)(F%F<Gt$uQMgRDGR#qn$$LX4Q3? zkNk4=ML9pesXm60ofh5wk=#{AQ8X?bcyZA}2>8gq+KKzuRv2uxe4j#)EQKvym8&X> z@%{g5rBhMMq2R0pRX;S;a@v7&u*#6Ta%1(djtxrxD#iJ7(yV5#lg0l`K61+4lE$u6 zFJkaEf<WqmFN~1}59v*DL9YQ=Diyse^wjjwcMCH#&l0srbF`D3nEZ{(^>;YG#%Jbe z>?cW}j(Hk~+Nbah7HCE1V{Ht1qWc*7eooQhXY`Ks#%g~dcBFQBGJX3DcilhnQMot$ zajBe0e_AT{r9Uf``_uPJWhechbcRQXHvciv<Co|si8JuME}-Gqfdh=<5FDC}8!W-1 zfYv3D%NHP*$-O1Q)d9IkfS%LmP-DUiA`*B>V-LwM$Ey{r;k$Te1>e)0q;ruM^!pqC Cm^rWj literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/security/WebSecurityConfiguration.class b/api/target/classes/no/freshify/api/security/WebSecurityConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..909616ee0555de945a98ad957f52c784e4327348 GIT binary patch literal 7885 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 C7$K1W literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/HouseholdMemberService.class b/api/target/classes/no/freshify/api/service/HouseholdMemberService.class new file mode 100644 index 0000000000000000000000000000000000000000..cd22e03dd580dbfbeed179df92df58f4027c7351 GIT binary patch literal 4455 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 Uet}=(w_Hhc<#+f4{)F)l0LFm8N&o-= literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/HouseholdService.class b/api/target/classes/no/freshify/api/service/HouseholdService.class new file mode 100644 index 0000000000000000000000000000000000000000..43c8ce175f3a2e6ac93c4231a4d07665cab330cd GIT binary patch literal 5145 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 literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/ItemService.class b/api/target/classes/no/freshify/api/service/ItemService.class new file mode 100644 index 0000000000000000000000000000000000000000..9a4fa62cf4093c177a32dc571db32dc437125e00 GIT binary patch literal 3031 zcmb7FYg5}s6g?{xgpJ}56G+LUkhd{lwRs1pd5}N@bsz!aG<`<cYa=2gSCUEj3;hNC z8EvO|(9Sgd)|vjMPN#QQvTW>_q{AS2wfAxEId|{={qJvo0Qdy;1QhgWP<8A>FT*Lv zH7XwW*R9I7Vb(0e=iZi8;>LWyH&?>n3@M9N%e?0LR^WQu3=@TRKQG>uu1({7Kl+f+ zkkru+onidFJsA#FET=4x_%qx0+`7-#UAxS1A=8n5(=Bt`h;8!Yg$;AdH0pt68wJY` z@(HAHK*NBJgGe)swWA0F$f^S~sQV0w`NiVw;_A}!6NZyr5;pB+nTK=?VVL3g+i>4@ z$}3UmNAE7+-3dENOyUEKXgH$dD2|b6k^$Rvsz$+estnqeY1jEug<&wW5P8Sj690!f zMlr_FC-Bc~&lA^~Ovt1(Tw2@UrC=AiOSQmq9n;PyaT2FAoYrv$XBpB>{u?F?y{<QF z`<&ry_o%IjG-Mc#beBprb5_R$CMmY<R;%2j%mvr08oph*xIu-BZ}~pthz}ta=^l(# z+`3cl$4B^B!+9MSaFJo4-HAbcZh8*GP%GAzz_Xlce!QsRGK0|$jelR_k`Q?a7TsV@ zq?&DfP2v)+>bQn!!h79vtl$PiPiDNBq(ZLibUta_U*&;-8uC9Xq-syoY*s1TEgiQp z6CD@fMy(bf1%_Lhg)R|dBa(EF9DTUUa6-~ocDXM(T;n!1)mY$;tv3#)hB=0t?QwQf za+myxmKo{2>c#+CD4NApF*4?LEZ{SSBpqxX@Q{sNS~R+`D9rEcSQLGy`sNl-;sLH| zcu2A~4?$?2#0pk5Jkn9bV}`@+vd@{NaKt4@hOm7Y&a}3`9ozJMBCOpr&v1}@;*tbk zG)B}rG@2L=6fB1?);HI<w`#80^o9DgWZFg3v&1_3s0Qm6Ii2Z{<1KTU5+-8uNuUm& z_Mu30+~>i%TYg}A<|dKqi7~fgRUMjm9zlBe?zz-Hb*^{GDyq-lh&Y*dwzwl`jW|&( znk;OA$g#+b;n-e581~cLEIqq#)*_OUakmiu!!5^Uci*SN&Jj7o?osJ16{(}@wXzv- z@ttA1TghU3?_)s|)hx^Fi6Pe+ru&U3L9DoSuf*pp(Fy}1S#;axM8`6WEZ3dD+T=yc zx2QdCJ2bdVF>0ygOxSxhF^Vce$>*;3%<xH1?gra6ZbYH-I6-se0bTqG(&E0SUl7xh zo_%2W96EaNgjP4nLZNqm_E)fp9cT)EqNRc_=-ErAzzDvi=Wu9-ukbak$N}HrTiSn0 zzxOd(04Dt_Sfh`nIQ|Uf5%E(p{x8_SgTbDT6vtaqq~a8*y;9J`j7s={-YTWYi4>!+ zad-#E6|k2$@h8qLPW^>p+89qy?Z8m*J1#wWg)48SM3p_V%3&f1MA#7BV<R|))AToq zvl7x6*-+#dQVwNsDsYG_E2z@$I_(ps|6o$XIast(Y5!7#moj}|*nr?c@ckogi*&i{ z=u6}uOUQ)mriy8GL~UTb6Jebtte?IaQJY|oNG-GUoWvle=;F^2WP`LlF9BymDmnm* zB7|T)<aJa+SDVl$8qj-5tJw&ALZMnAg=KgKo3=y&a}+{wA_WcEzNg@4`V#hxxX^&h z*pDk+L=72yN><c2AwQdNqVO~HZuZL#3JOTY_LiLP5?V+Sw`7GfFu4CS^o{oqeGRn; z^-_d-F#8Hi*|hQ+%P%mVop=G(WF{qfOOrsu#7?>;&tNRqpggQ`3HvZWk-wut6nOCI JEskUW{0G~|-wXf% literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/ItemTypeService.class b/api/target/classes/no/freshify/api/service/ItemTypeService.class new file mode 100644 index 0000000000000000000000000000000000000000..fb3fe697c10e788be03926c1070bd8d2da064a85 GIT binary patch literal 2297 zcmbVNTUQ%Z6#h;K420ogxU>kCRG<mrGL>Szgi--P!H`sfQR;O_PQsy+nXH)!mA~Md zkNyi?%U-Z+S>IgC-{f++&&=dPXhnUQGiRTD`S#x5+2@bHe)$!^9q=B6(4io#q7z*V zansUDHg}Fh=~UCJLUXu%A_`pFc6nw0w90e-o*^m%$sVs-j&LpeltD|k+uM!PhKr^_ zDuQnGD2S-&h04%>te@zbp_^qbZJA{T<wQ4XJX>NIO6<(0&mX6H(T@QIgDPG@lwsjN z#b)R(3A4C<x?N;QBwBoD5081lO$Fg<t}wK0)fJYh8w7Y5BML@UT)|Z;f`{mw3PYD= zZyF9~xbbqYUXDQ^1+Ow(YX@Jkiri?_Otxu4#cQ}m{tc^K<~Bu7TXtD<jMDNk)l14! z-H1`GWV2!}bt`6CZmeY0%wjKI$CQF;6*IWOFxYO%5PqoJCc{W8=$vZ{vz(gED@ZWh zYRAaGEpV?g4V)Rv-IC!p>n9P!kyJ5<c>=y7OyRCFbR=f;vU!UtG~A>%%TBBr2Bnl} zEqhuxuGi%y6}Pa=Fzj&ME*#a#xPF?^D^%#|7h(20>h&h@a~p3dcw5Cgc(=~A#xa2q z&Ss_R5{n7meFZBF%a<qYyddKgk`dfRQo(yv=_YCYen+s54F&J3*u)mYmG(|-=>`8X z^_02mx0PY0HNy=<cO2qpyJd=DfNYx8k<^}&7pFas^W-AC@CMP1%+tc;nOfzL+xz;V zK@#FvK{xWcE#y8BhTS9KFkJNel4(H!LV~cc9lCY(xxo;-99Lh?)e8@H^=c3~(jXSa zAKc~ckyX5>+r$Ew+a!|t6OrmAAW2V7lug~O*_6!k1$M1m24Phe^*rmyY1s657j2mu z!Bt`ClnF|7?F3{PJzq?^pg~$oZMy#o)>bPg>NoZOI9f_vsKP&w?b$p-Bxlv^0^bsn zCByZC2hYQzBt65}Ud?nxh3ADMh&^j2jU!!7QYufvr*Bmbn38PZL(6`kIn+jO$<d_+ zu2Q&8v+pjwRv|>?BSn9ZgOI*qFnoXy(SdE+eMf7U*2Uz{V3SXwoS`oS_83FIVJx%o zJ4WeXJUV%X>mfWt{NM>@pD+AK79H53?<jef-w~SaW4MZG`p#n<ACWXhI^-E??9wX# zGRRW&5z@JbkLh%eq}^bDVqPIxj&>4V9Q*Xw$w(cv{RB5D4GDIcc8u1D1bc=B1_>nO z0qOEiCcVI_uN4H&dpe(z>@)HZ_B?%0RuWuXdYU`K8zJn@pW#i0AJF>@DN6Is^X8ch z6ZXPHy=qO-(>qPC+6*QLZ8O(+BiA?%aGyf<lE&xwg2H`CJ|r+-@)b!M*-t3A-N-&w z&;Ec6eC%J7*&Mzh6Iq2Utsz>6l25RjjE0_K?GeV4bC1A&BC%hNelNWNLOX;$40sqv ceX|C}A&(iX9<LLFq@a5)4pE?0*0c!x4USn#@c;k- literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/ShoppingListEntryService.class b/api/target/classes/no/freshify/api/service/ShoppingListEntryService.class new file mode 100644 index 0000000000000000000000000000000000000000..f32a5b75909ce012b75509aeb5dcf0e57347309c GIT binary patch literal 9166 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 br@Sva)S$XYf7z+-rECkw?B+S)2s(ZUH0|q# literal 0 HcmV?d00001 diff --git a/api/target/classes/no/freshify/api/service/UserService.class b/api/target/classes/no/freshify/api/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..006ca0eb9a2516841f003748eee55a173cf5f8d0 GIT binary patch literal 2196 zcmb7EZBrXn6n^d!SO`mqiJ?NP&^O2nuvP0@)2e_(iy^6`jn=9&m*gfaU3N3O8!CUn zU!ybjg*u~tbH?A~IG($^EMXa#I+@Acd+#~VIp=xKxqtur@^=7t@WU7s45>(H7{&<0 zRm;{pj&OI3&VkN*hVBYy-)IT_0ev)rZ-!K#c3YxnyM|{w2MncZ+|P+_eb-~-auTB$ zQ<2m#4vnyO`99Z8ZguslZFL#ceQx$ey~B{rZxpI0ugl{|VNyj}!)wSe6ka(l!)V8_ z+N%e5+YI^q0B(JISG2rx7^?3Xre5!PhHY_^l6@UH6;m26;0=b1pUnvqh7sFYH(kLn ze>SRLUl>Tm48u%3@jbgOOrI+$$t4YM;w{29?QT~%6uD|UUEMW1H+P9Ac~&099MLC* znX_zfu4DJD_BgKKs)}nGu4A4d9d}|#JmHSTkQ>ak;W>uYEf<<9@(g-BHSuFh_=NcB z)oiaKL#-d3Cb58`h7uMj-`j>|cpozi<qJ)z)v^X1HyFkP^4IscVaE7BiXKREf?Qwj zcQm{!$=6)IFIKE}#q7H~Nh0Yz4e#Rv!tM%B(hz7nE4wCM!ZEu(<VPBAq0EpZ&V?re z#}kwsHAOQ?Q&LnxC8dvBF}O|QQ>>_1)v$)o7%s%guJBec9%GbXAR5E<LE_g;?z+@@ zaZgGuu|^HSFj+M$QS0w*3+F!HHtB>qp~cN6cMQ1?4-?*w;S%_%!ikpn{1Uig&=9Z< ziXtbO;nFF;0m2w28Xj*w-sHV7S~Aj}Vx~8Rw_~^Oafj~_mku4JB0)mEZwwY4>3xn! z48tO5mCV4ThMuHb%MsiYQgnt}`SY?rw-*Sh-)l!mVLJq{%co(_e$)z0f@;`(rzI+e zR4FY%8UgvsvT+!uxB8Z6?1`q~8l>EcMN`Y=J41}+gBIw?IqXOxpV-c0-6cAO?H%-l z9zvCInHv8Nz1<2j^2zqU=&7J}1We8YhOkb%pJ+|cx?KDfZ1x4zLrf@O&yf8S)3v3) zFhv&^GqZ=dtl&2+JbaGAA4@-z#}F#?KSk(37CHJ&)9xC*fQy*H=X5$pHiV2XaF<s3 zwSg}wy0olflWuEtItum=7F9Z{(=I{x3%EyL!;H*9+pn-iWyoYJv?{b_WU{40EJc~h zgcLs^SstiRnZQ(F9VL)K1NZ4Zgl~`u!vi$QOv10yD&bQh{M!nMggEq-0q9f&o$@P+ zpsPOg*Z&iG{?(zsi4=SkDwr$IKEuu0v5p@q@P!I^N%>+FN&XVawKyP9E-E4y3N(Vr zP@pp;DdAzrSv}+|TYQe&#f<U-pFG9IV(BT^FT}xMY>mWCV*=VhmDwnE)^F2@z+o~~ Q@U0K=2;b2vh5a7*57{sLMF0Q* literal 0 HcmV?d00001 diff --git a/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMapperImpl.java b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMapperImpl.java new file mode 100644 index 0000000..b0120a8 --- /dev/null +++ b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMapperImpl.java @@ -0,0 +1,43 @@ +package no.freshify.api.model.mapper; + +import java.util.ArrayList; +import java.util.List; +import javax.annotation.processing.Generated; +import no.freshify.api.model.Household; +import no.freshify.api.model.dto.HouseholdDTO; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-04-28T10:55:48+0200", + comments = "version: 1.4.2.Final, compiler: javac, environment: Java 17.0.6 (Oracle Corporation)" +) +public class HouseholdMapperImpl extends HouseholdMapper { + + @Override + public HouseholdDTO toHouseholdDTO(Household household) { + if ( household == null ) { + return null; + } + + HouseholdDTO householdDTO = new HouseholdDTO(); + + householdDTO.setId( household.getId() ); + householdDTO.setName( household.getName() ); + + return householdDTO; + } + + @Override + public List<HouseholdDTO> toHouseholdDTO(List<Household> household) { + if ( household == null ) { + return null; + } + + List<HouseholdDTO> list = new ArrayList<HouseholdDTO>( household.size() ); + for ( Household household1 : household ) { + list.add( toHouseholdDTO( household1 ) ); + } + + return list; + } +} diff --git a/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.java b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.java new file mode 100644 index 0000000..1b60356 --- /dev/null +++ b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/HouseholdMemberMapperImpl.java @@ -0,0 +1,60 @@ +package no.freshify.api.model.mapper; + +import java.util.ArrayList; +import java.util.List; +import javax.annotation.processing.Generated; +import no.freshify.api.model.HouseholdMember; +import no.freshify.api.model.User; +import no.freshify.api.model.dto.HouseholdMemberDTO; +import no.freshify.api.model.dto.UserFull; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-04-28T10:55:48+0200", + comments = "version: 1.4.2.Final, compiler: javac, environment: Java 17.0.6 (Oracle Corporation)" +) +public class HouseholdMemberMapperImpl extends HouseholdMemberMapper { + + @Override + public HouseholdMemberDTO toHouseholdMemberDTO(HouseholdMember householdMember) { + if ( householdMember == null ) { + return null; + } + + HouseholdMemberDTO householdMemberDTO = new HouseholdMemberDTO(); + + householdMemberDTO.setUserType( householdMember.getRole() ); + householdMemberDTO.setId( householdMember.getId() ); + householdMemberDTO.setUser( userToUserFull( householdMember.getUser() ) ); + + return householdMemberDTO; + } + + @Override + public List<HouseholdMemberDTO> householdMemberDTOS(List<HouseholdMember> householdMembers) { + if ( householdMembers == null ) { + return null; + } + + List<HouseholdMemberDTO> list = new ArrayList<HouseholdMemberDTO>( householdMembers.size() ); + for ( HouseholdMember householdMember : householdMembers ) { + list.add( toHouseholdMemberDTO( householdMember ) ); + } + + return list; + } + + protected UserFull userToUserFull(User user) { + if ( user == null ) { + return null; + } + + UserFull userFull = new UserFull(); + + userFull.setId( user.getId() ); + userFull.setFirstName( user.getFirstName() ); + userFull.setEmail( user.getEmail() ); + + return userFull; + } +} diff --git a/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ItemMapperImpl.java b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ItemMapperImpl.java new file mode 100644 index 0000000..a27343a --- /dev/null +++ b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ItemMapperImpl.java @@ -0,0 +1,99 @@ +package no.freshify.api.model.mapper; + +import java.util.ArrayList; +import java.util.List; +import javax.annotation.processing.Generated; +import no.freshify.api.exception.IllegalItemParameterException; +import no.freshify.api.model.Item; +import no.freshify.api.model.ItemType; +import no.freshify.api.model.dto.InventoryItem; +import no.freshify.api.model.dto.ItemTypeDTO; +import no.freshify.api.model.dto.UpdateInventoryItem; +import org.mapstruct.factory.Mappers; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-04-28T10:55:48+0200", + comments = "version: 1.4.2.Final, compiler: javac, environment: Java 17.0.6 (Oracle Corporation)" +) +public class ItemMapperImpl extends ItemMapper { + + private final UserMapper userMapper = Mappers.getMapper( UserMapper.class ); + + @Override + public InventoryItem toItemDto(Item item) { + if ( item == null ) { + return null; + } + + InventoryItem inventoryItem = new InventoryItem(); + + inventoryItem.setId( item.getId() ); + inventoryItem.setLastChanged( item.getLastChanged() ); + inventoryItem.setBought( item.getBought() ); + inventoryItem.setRemaining( item.getRemaining() ); + inventoryItem.setSuggested( item.getSuggested() ); + inventoryItem.setStatus( item.getStatus() ); + inventoryItem.setType( item.getType() ); + inventoryItem.setAddedBy( userMapper.toUserFull( item.getAddedBy() ) ); + + return inventoryItem; + } + + @Override + public List<InventoryItem> toItemDtos(List<Item> items) { + if ( items == null ) { + return null; + } + + List<InventoryItem> list = new ArrayList<InventoryItem>( items.size() ); + for ( Item item : items ) { + list.add( toItemDto( item ) ); + } + + return list; + } + + @Override + public ItemTypeDTO toItemTypeDTO(ItemType itemType) { + if ( itemType == null ) { + return null; + } + + ItemTypeDTO itemTypeDTO = new ItemTypeDTO(); + + itemTypeDTO.setId( itemType.getId() ); + itemTypeDTO.setName( itemType.getName() ); + + return itemTypeDTO; + } + + @Override + public List<ItemTypeDTO> toItemTypeDTO(List<ItemType> itemTypes) { + if ( itemTypes == null ) { + return null; + } + + List<ItemTypeDTO> list = new ArrayList<ItemTypeDTO>( itemTypes.size() ); + for ( ItemType itemType : itemTypes ) { + list.add( toItemTypeDTO( itemType ) ); + } + + return list; + } + + @Override + public Item toItem(UpdateInventoryItem updateInventoryItem) throws IllegalItemParameterException { + if ( updateInventoryItem == null ) { + return null; + } + + Item item = new Item(); + + item.setId( updateInventoryItem.getItemId() ); + item.setStatus( updateInventoryItem.getState() ); + item.setRemaining( updateInventoryItem.getRemaining() ); + + return item; + } +} diff --git a/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.java b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.java new file mode 100644 index 0000000..67f5c33 --- /dev/null +++ b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/ShoppingListEntryMapperImpl.java @@ -0,0 +1,96 @@ +package no.freshify.api.model.mapper; + +import java.util.ArrayList; +import java.util.List; +import javax.annotation.processing.Generated; +import no.freshify.api.model.ItemType; +import no.freshify.api.model.ShoppingListEntry; +import no.freshify.api.model.dto.ShoppingListEntryEditRequest; +import no.freshify.api.model.dto.ShoppingListEntryRequest; +import no.freshify.api.model.dto.ShoppingListEntryResponse; +import org.mapstruct.factory.Mappers; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-04-28T10:55:48+0200", + comments = "version: 1.4.2.Final, compiler: javac, environment: Java 17.0.6 (Oracle Corporation)" +) +public class ShoppingListEntryMapperImpl extends ShoppingListEntryMapper { + + private final UserMapper userMapper = Mappers.getMapper( UserMapper.class ); + + @Override + public ShoppingListEntryResponse toShoppingListEntryResponse(ShoppingListEntry shoppingListEntry) { + if ( shoppingListEntry == null ) { + return null; + } + + ShoppingListEntryResponse shoppingListEntryResponse = new ShoppingListEntryResponse(); + + shoppingListEntryResponse.setId( shoppingListEntry.getId() ); + shoppingListEntryResponse.setCount( shoppingListEntry.getCount() ); + shoppingListEntryResponse.setSuggested( shoppingListEntry.getSuggested() ); + shoppingListEntryResponse.setChecked( shoppingListEntry.getChecked() ); + shoppingListEntryResponse.setType( shoppingListEntry.getType() ); + shoppingListEntryResponse.setAddedBy( userMapper.toUserFull( shoppingListEntry.getAddedBy() ) ); + + return shoppingListEntryResponse; + } + + @Override + public List<ShoppingListEntryResponse> toShoppingListEntryResponse(List<ShoppingListEntry> shoppingListEntries) { + if ( shoppingListEntries == null ) { + return null; + } + + List<ShoppingListEntryResponse> list = new ArrayList<ShoppingListEntryResponse>( shoppingListEntries.size() ); + for ( ShoppingListEntry shoppingListEntry : shoppingListEntries ) { + list.add( toShoppingListEntryResponse( shoppingListEntry ) ); + } + + return list; + } + + @Override + public ShoppingListEntry fromShoppingListEntryRequest(ShoppingListEntryRequest shoppingListEntryRequest) { + if ( shoppingListEntryRequest == null ) { + return null; + } + + ShoppingListEntry shoppingListEntry = new ShoppingListEntry(); + + shoppingListEntry.setType( shoppingListEntryRequestToItemType( shoppingListEntryRequest ) ); + shoppingListEntry.setCount( shoppingListEntryRequest.getCount() ); + shoppingListEntry.setSuggested( shoppingListEntryRequest.getSuggested() ); + + return shoppingListEntry; + } + + @Override + public ShoppingListEntry fromShoppingListEntryEditRequest(ShoppingListEntryEditRequest shoppingListEntryEditRequest) { + if ( shoppingListEntryEditRequest == null ) { + return null; + } + + ShoppingListEntry shoppingListEntry = new ShoppingListEntry(); + + shoppingListEntry.setId( shoppingListEntryEditRequest.getId() ); + shoppingListEntry.setCount( shoppingListEntryEditRequest.getCount() ); + shoppingListEntry.setSuggested( shoppingListEntryEditRequest.getSuggested() ); + shoppingListEntry.setChecked( shoppingListEntryEditRequest.getChecked() ); + + return shoppingListEntry; + } + + protected ItemType shoppingListEntryRequestToItemType(ShoppingListEntryRequest shoppingListEntryRequest) { + if ( shoppingListEntryRequest == null ) { + return null; + } + + ItemType itemType = new ItemType(); + + itemType.setId( shoppingListEntryRequest.getItemTypeId() ); + + return itemType; + } +} diff --git a/api/target/generated-sources/annotations/no/freshify/api/model/mapper/UserMapperImpl.java b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/UserMapperImpl.java new file mode 100644 index 0000000..81fe332 --- /dev/null +++ b/api/target/generated-sources/annotations/no/freshify/api/model/mapper/UserMapperImpl.java @@ -0,0 +1,75 @@ +package no.freshify.api.model.mapper; + +import javax.annotation.processing.Generated; +import no.freshify.api.model.User; +import no.freshify.api.model.dto.CreateUser; +import no.freshify.api.model.dto.UpdateUser; +import no.freshify.api.model.dto.UserFull; +import no.freshify.api.model.dto.UserId; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2023-04-28T10:55:48+0200", + comments = "version: 1.4.2.Final, compiler: javac, environment: Java 17.0.6 (Oracle Corporation)" +) +public class UserMapperImpl extends UserMapper { + + @Override + public User fromCreateUser(CreateUser user) { + if ( user == null ) { + return null; + } + + User user1 = new User(); + + user1.setPassword( encodePassword( user.getPassword() ) ); + user1.setFirstName( user.getFirstName() ); + user1.setEmail( user.getEmail() ); + + return user1; + } + + @Override + public UserFull toUserFull(User user) { + if ( user == null ) { + return null; + } + + UserFull userFull = new UserFull(); + + userFull.setId( user.getId() ); + userFull.setFirstName( user.getFirstName() ); + userFull.setEmail( user.getEmail() ); + + return userFull; + } + + @Override + public UserId toUserId(User user) { + if ( user == null ) { + return null; + } + + UserId userId = new UserId(); + + userId.userId = user.getId(); + + return userId; + } + + @Override + public User toUser(UpdateUser user) { + if ( user == null ) { + return null; + } + + User user1 = new User(); + + user1.setId( user.getId() ); + user1.setFirstName( user.getFirstName() ); + user1.setEmail( user.getEmail() ); + user1.setPassword( user.getPassword() ); + + return user1; + } +} diff --git a/api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..755ff56 --- /dev/null +++ b/api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,67 @@ +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\mapper\HouseholdMemberMapper.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\ShoppingListEntryNotFoundException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\UserController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\GlobalExceptionHandler.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\HouseholdMemberAlreadyExistsException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\ItemTypeDTO.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\ShoppingListEntry.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\ItemType.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\ItemRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\ItemService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\UserNotFoundException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\AuthenticationService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\HouseholdMemberRole.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\InventoryItem.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\InvalidItemCountException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\mapper\HouseholdMapper.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\UserAuthentication.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\HouseholdMemberController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\ItemTypeNotFoundException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\JwtTokenFilter.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\CreateUser.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\ItemStatus.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\ShoppingListEntryResponse.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\UserRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\PermissionEvaluatorImpl.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\ShoppingListEntryRequest.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\UserDoesNotBelongToHouseholdException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\WebSecurityConfiguration.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\ShoppingListEntryService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\UserTypeRequest.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\HouseholdService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\UserFull.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\ShoppingListController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\IllegalItemStatusException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\UserService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\HouseholdMemberRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\JwtUserDetailsService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\mapper\ItemMapper.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\ShoppingListEntryRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\IllegalItemParameterException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\LoginUser.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\ItemTypeService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\ItemNotFoundException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\UpdateUser.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\Household.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\InvalidHouseholdMemberRoleException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\ItemDoesNotBelongToHouseholdException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\FreshifyApiApplication.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\HouseholdMemberKey.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\HouseholdMemberDTO.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\User.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\mapper\ShoppingListEntryMapper.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\Item.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\HouseholdRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\service\HouseholdMemberService.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\HouseholdController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\UserDetailsImpl.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\HouseholdMember.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\repository\ItemTypeRepository.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\ItemTypeController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\ShoppingListEntryEditRequest.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\controller\InventoryController.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\HouseholdNotFoundException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\exception\ShoppingListEntryAlreadyExistsException.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\security\CookieFactory.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\dto\HouseholdDTO.java +C:\Users\matsl\SmartMat\smartmat-backend\api\src\main\java\no\freshify\api\model\mapper\UserMapper.java diff --git a/api/target/test-classes/application-test.properties b/api/target/test-classes/application-test.properties new file mode 100644 index 0000000..b27d78a --- /dev/null +++ b/api/target/test-classes/application-test.properties @@ -0,0 +1,8 @@ +spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=create-drop + +jwt.secret=abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz \ No newline at end of file diff --git a/api/target/test-classes/no/freshify/api/FreshifyAPIApplicationTests.class b/api/target/test-classes/no/freshify/api/FreshifyAPIApplicationTests.class new file mode 100644 index 0000000000000000000000000000000000000000..ff7da82404a049bc5e08874e4b33da49e5009aa5 GIT binary patch literal 629 zcmb7BO;5r=5S@hriXezzG4a4rCA#tA#gC+#keD<|gmCe+En8SDyUlis`m;Qlc<=}K zql~k)2aU$W9^Q0j-kW{1`}Y3w3IM0DS%m@=E8x_i1Z4uvDVsAIF*&B!{*(uXK>0*S zVa^B?cXo#rSRl}miiVme6A?aA77N<V6SsHi#&IM9W`vRho|uGybD>6@K*JM~U!^mj z>jCp4th788uxQA%uz6l|%tWAQ-}}cI#{_DDl7>GRPq7iow{B8t#EcI`B5<}Vr81c( z>}`8WkLfhUr4VCbxXzZac5za*uTmZGuCNx{e{6POuZqA?HZF;^kmFFZ8NXNhj`~U& zYH%XWjnRI_ILCT^(BZGbZyGl+V$OS7h3F<hbEP?pQuO6m8nmH;uV+7t_<lfO5&tMg zVk>*kK%TO8716c<2}_8zPXfj|W&q3BEo9;jW|sFuSpOo#3(tfNB-*h}j0IT9um!f- Q!h99u8g|!jfh4f;0q{qg(EtDd literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/HouseholdControllerTest.class b/api/target/test-classes/no/freshify/api/controller/HouseholdControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c8b6fd6d0d8d1ee1e7452def3f630b435654c90b GIT binary patch literal 9866 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 btDO6_8z516O<w2kH}=Sz@|HiCmaqRG_{z## literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/HouseholdMemberControllerTest.class b/api/target/test-classes/no/freshify/api/controller/HouseholdMemberControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..44c226b387b29e76b7394483a566ee98af11388d GIT binary patch literal 10804 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 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/InventoryControllerTest.class b/api/target/test-classes/no/freshify/api/controller/InventoryControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..dab2eb22727a8ed72e7ecabbf31f8bcb985c9347 GIT binary patch literal 10791 zcmc&)3wTuJnSQ?zIbk>=CJJgn!qtGnfQm(;U;+VxA)y390WC~sPLhGiOq@9rNVT^0 zR<HG16|J>uy<2P13_;Y|+IDx_?Y7(7?z-33?cP`0?e2DW+im-P=bSlnW-=3k>$Bx~ zm~+m5`R=#>`}2)ozx*12i{-@-sxZMowTTljQ80CHWH1s=M3TMXj_$oy)D}#<D4vYl zs{|7o7Iqn^5zI=a!aZp#(--d<3P%Rw;r>+2N`yD0vKgx{m57C4V8SF!hH2nL6H{=K z;M~$Z(Nxk-rxFP(9d1nyT1h*V9$Mp%ZM8B)J*h7bQZT!%6haBs#t=?Mt${idr{Gk< zlmaVlsbsIf7>p#cR!5JZu3_WCw&H2-HZa}9X*gYQLdLRNW4f+%)xxeCypOPzzWO4D zXPP(@vxtRz+avv!;MCymPCFe>_BN^nXA90K&&#%ql@6ia72Z4(^RYlsO{t~@Gb-?} zdq{jerq^I0Nw-PaCHj4~iF1^o8WPmfABiUnED@Yp9&@X0^=};-utHeuVqa$BT%5<< zac@RYUx9-BUQ)4Gskk67ADyVrL!D{h!itRR$`Dq#s4p^cF=%hqin=o6x`!xNV7mS^ znP|ouSNw`nFt_1Y^e*h0gchtbu-?Q5w35Th!s)alb~ZzkY;EsqY2VthWrtwS7zo_; z4t<xJXu~FMr6TfR=8r|3w|8NeGS*>YGd>_Nx!X55!MsWU{57;S-QQ_qE4B$j+}{+7 zS+V9JdT^!Pjy0)~ZWlC^N+V-Mv+1}!6xLO1Et@u#Y3(0KsI~1du@k#!f4#2j)Hamy zuzFl>;zQU?v*I$xC<Uh!t@Qk)1`#eAh-5PRQ)vd2dPGgcbmwI5-0Y9{pw~d3i8%Js z;T)IF+VMnqjYgKJ9Zw}yXIB4!J=7N0kmA$jEYmUSs0#^=e>AooL7&yI(HMvT9&O_v zDd133n~ao+0bD^I)TKQE3Koqrqe_BqG(dJvF0i>FlIhzN83-Zmy3U}9{Ww4bY3qtC z13_~tMs1(uQtVK})r~dyFzrFTOFgBP;$4g#lkpK;ZQ!FOK8BAAPAnkd76$);ETy+1 zC>}RK1O?=c1U2ss)!<s%Ml_X8+96zz8w`9x!}N`LZk&wMnzXH6jdjx+T7xjWadLk% zV{(D8rgS>us5OL}T>ft}@k!iHjsyI=dY>AQfur@wxD$67xZA`%_*6by_zEM#kr*>T zQ4G(sx6{CVg0shTkEX2M$D|gIM$`yHxEBZ2#2yf=YG_NPd&8LlO$a?{rV5()zOb+J zXew=m)j(pdhXuWjKCO22X%i3OGbB1vgoRml9H5ISqxF9lj~IB=#AEoJVD+(S)68uh zu*02RIMA%k?+wiSs=N>#)Eg39Oy_>r5F01s2|Q`wDHBiQ8Nr3`8WPP+!(WNCmXAjh z#hW|@JZIwbc;0j5PAfeak22%TFXPD0l%qm#83q0VzG&c(i5Kw_)0;BYpNj5_+o^C< zx;NWTv)L4}qkUGI&Td4KLvH!P@@r!VIUF`HV&Vv1W{Mkaf}`-c5mO^}^N`jwv$Xap z-RG84x`^bxf>#Z^X5veDo$eMSZ<9+VQ}ccrw_s(NaNz1Y&rrtBc6Zax!yU=q6rY{m zH&y!;ykX$0CcdU<<^|DI+C<w@r`lrK*>qC<;P*`YKK_7Jt6wMjx+oV^UD@~vvY?P} z;tvgc%fuhy+hx;U`Hie*dg95L53hO1e^o)B7Zi?@N-D|S-`1#1{jrJf;(Lr?`2g+n zG<rW3rluFxT1aDgfu$edhX(${#Gm5N1ZS1%yTU#q)%5KFbM0krWqZjlbjbd56Muof zq_rv8KFO6`LN^!4eF1-M;&1RHjk`&vEY?R(oOklVngsKGV=yClkvN36@V5qjV&d=c z_hYz20GE1HET#jF`IZXCbp)LzzA+|MQU7S-pYYEFsK&l&Fe+G5Hr8oH9^P+tGsLF{ z6P6uTH{yEc;eTbW3-{#@IpJmDc>X99!aMk>fuEW9H~d_%rd;S71=!1ac?4U$A|M;r z$jo3;J&@8GC=(Q}SJdnZ$UC3s#>Y(%=?2>#P^FT~V&pWD|G<A5_=So8!hf@LF2_$F zcZWAwv3SI-;HNfi-rUx@rfF+yNBi!LogM9r6J=>C-pCO4OZ>{f|C;zUek0ge4%e8n ztH=h;+sS@O+odpFK7*9dQ$7X0I||g-L`<oY2|N>|oHIHLv;ob$i`$~9{%}tuV_WG1 z{fY42NOWH&l?=xsc7#DV<{jzX<&7aZK_(hvm{KE?Sk4^BUY61Oc@VI=^g!K|aZO0D zAZS;<5f%K{Gc~G5CY$8pMEZ^=PQjkwW^d(tD!7oGBvTDJ*_2wT6Pz<HtMFWvgi^vi zsWhX;zVbRBrOpxu7$+}VtV}jxH@Qa_>gZINX2^6?PLtCGP2-}Oof(2C1Ofdj6ciIP z-br?Ch0<&kBOW~WRO-@~2S)<mCo>G0Y08<xUc)8FLtr_8dg{+~>=RrtUh0YnYMd;y zWsV_pO_?Y2Sr3nk9v6fsa~>BX$ym#Q0jK%3cihSjNSUeQ`0+N@$XPsg&0Df->E%mo z=JF-+n5uuFDU0N69)|bQl{ZK1KF0z_Io1Cqemmx}(F0#3&kPm3Se6(PHf5<S6Eu&D zv9xP}<w5cs=rrO48-gzH$BS`cD58?0JCDK86`gC|?0m>_Q!bGAQ=hD9TwBw&$yjOK zUB&#-A{Uyn(rHxKDK{9^$VDtPT^y_+w2z`1!Yi`Ml+|*Hw%+3X7PIUUJ-sRy`677G zO2>P=lVG?j@Ue+~Q!Tiq*_1W1mc3SIDeIpPlo8Ewz${-Y$vRWk%LX2Xw93m@8d~g- zYL=_z>zzV%>Ou7n$t1l;Hkxv&w9#@iEbp23Q%U#0%?4G$NPXoxLqP!VNV_Q=TH;I~ zQ8mI&SB)!V748b`V2vkRP1z=0g6Up$s+DO|pz>zmY1lXp^2;;mRC_h@LBVO|Yq9V$ zR%5c$lwC^aME1HZ+fv`WT(j7R1TEtYR-R)x$KxbRq(IQf(2Do4&Arxv9;^2&!Fndz z{`&oKyRSYTTUoy>B;67<BxZ^w>}4NUPAH3*EM=VTbcshEUlJ~2hL-V`^qCSDw&kX{ z0#h-&M~Z45DY|MTLBz^iYph0in4FZh*riU=iYBf;a!~(05R$ZH46)fNl5ElC#M)H0 zJK^-$*9L9f9i}Ar(;YPuSnTl1kSQP5_HOmI&X%=G*;S@|L=Oz1>;P*cODR(gJH4-; z*9hBRv$r`jW2m7<*wH$(g2806y}hjZLvp>`U<g}X4+&dcJIjSOzwc8f?>ap^zt7^; zB3@mwnWg;ZbSi3PGAXU?_m|I9K6t0CRNBlKU!KZW_~kHD)4!CPO}RyG)wTewRB&f` zQYtc77VbE6Xr49|PQ|jF2JuOrZM_8H>c(Pry+iIa<Sw<YyNeo;&8bwviqIyfHS7$U zmp9%hIDHE{nGE+`@l2eC*py7BXl-u0c|}>Nb`xNR#d%aOy225ELzp^A?T@Fe7{M+t zzcrPz!;bVcqxfk>S#Bm&?wiyZ?@jW8B2AZA9_Vzk)W0YYhCPoCjCg^06=AFo?9&kL zZOnI##|cLvRj*-QqrBVVNvl2E-)*J0MjUUgZA(QXiLOXGuHW8ZwcQt|{hmK6e(TX- z>>EPj(yO{G`_pqA$?eVZsxrJcJHWV-cCIFyEmrMTOC;LI#WPfhyaXxAeY-oeQS~B* zgO&qPYrxT>A?$^^t!AeM;m_!Ol)CX~Oj`+?IA$u2^`-f>fMk}=yFtDJ8O{nf{!~~o zr<9LQ*QRNI1w^6FR5l&8*2OhW&hQ~=3UH;W1TWEqELeLCyNl39sg9m_FHNkdm$BXI zW-CKMk@uy?sY7mQf7h7RZ^(>GlNTEaFvQ}FJX8Of3B2NlU|CrdD#Eaun6|RD_8+tu zPJ1Y=453u(G-k8QQ$-k4_{&xgMDF3&L_R;oXO$kpOUJY!85p})*J-bK)EIkwqsG`k z8#TrYqfukLQFq|-e%N{Prq+4#+SGaS4v2g1(|5U__<1Mde;?#GFAq3pP&T~u=gb5A z3iC_&JYmsc$QPZh5Av7O{GBhK=CA24kcULKi#*KPD%~v4p+@Iq!J?xub{xi}VT2aF zgivS%Q*)T6ueE37FoV<eoSrj`xg4A8PM@W(wGBBe;`CxphljD0V@uuX^YyiMc@FRA z^a@U|97ZF@8r|vD`l?HExI|wMVQmf@y}?ip?cVF$9JUZZ*A9O3{e$k~vf4fFOZNz@ z!`L^BBp0QL#U4hMQ`y=f{u20=M{v~yY<GsPsUE>~-uF@5#MQS9<5o`T|LhUmQN@Kv zaj)V^9>)E{cyI&{^W(uIc)SV)>2~w)4S;ntv-Oz9JLp;1h()**%XwqG3hih`2XAjT z<8o|4A3BlY*VWjD8+m1UH?~uaJMac}v2lGFe#BKj!*2WvdnANzIUO;X538U#S>S5U zH{#DaT6~0BoZx8jX;eE}RFOVAf-mGSJc6VAn0o|YR+e7E*E#Iy^c(I>$e;O+v*G*h z@KS&H&Ds?s_^a2kB8MNlbB+GoKh*xqgjZ2Dg0~Oh-*fn%MZ69nj$3n5os&>bri{ob zIXUBq)K{TS7C39Afh$xUIXTChIJYp-n3MB!vZ658SeR3#=O>hvXRAl#;t^?j9XXd* zhd+Ptn?9#H{vCh(2QHsF_@+PjR)EXx1@*4uU!;I{)6=mR%dn3MPVf>t2^%SVlvlym z^ZiEp_XAYyiyZwnviLD?aDTx&+><aQ^LSCa3RebHxY|?Uql8Ok$z#4UA9s}bgs;pd zFg9`Q9THkuYj4&Xj(Uuow0P<nk=9Wfl1-)B*jx}Sg}x;(*!NydU-yMvtdXGb3p@mb zzl2@|iunv)XkUnH=u6kqQ?8?!ug7h;fme#3;8oX6_&#pN+qk75WS#_^2q%?<{A6Cp z>}5M1gXhN<GEJr+=gv`XP$%16Y3?YN@`zkkC%bbJaSVMd^9%^17*~mzs_jZ|!9W*a z5@mEdWpoE+bQhz~-Ha~x&`9saRk#laaX*vS!GLU@KZb0c%F9Ns^`gm4$|hSU`}j~x zDTL8F=|4qMBXUJ>Xz-96pa=UyW0-C+r=?OY1RlAvbS@uw<m#fplPwo`93_10y;Oo9 zE9A<6xi(`eRq+u2DB?3X3lC!@9$~P5l#$^vD(G>JJb`EMBrlI2XRLS%uhD?Ng=g^- zJSVI$WCrh}{Uj|jkD;cgeKmd8Q<LVw|CgX&C)YUEj<<>N!4bJGCpQ(T;k}Iiw|QZT zLFD#AjQZVXg?7|Y(}$Q9USw8yiCJNo4tE%X7-6_N!f^C5-SIG8@hElu3N`&I-sJC3 z@g>%qUzXGG6<LZmqy=A<-S}ES>wCu3dX+pwyjAk7lQZTr=|9H|vUC?DDxVjvP`|KK NUSRF#4rb)gZvozv6P^G7 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/ItemTypeControllerTest.class b/api/target/test-classes/no/freshify/api/controller/ItemTypeControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0b0e6171ed85786e96679b355ab31cdd991c8960 GIT binary patch literal 5016 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 Q`)lX$H~hUa=;0s#0e8d<zyJUM literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/ShoppingListControllerTest.class b/api/target/test-classes/no/freshify/api/controller/ShoppingListControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ef8229b855334901623acd7e829b730a5c88962e GIT binary patch literal 12848 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 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/controller/UserControllerTest.class b/api/target/test-classes/no/freshify/api/controller/UserControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5c64597077dd4bb3f277635c18062d5c429e39b6 GIT binary patch literal 12545 zcmcIqd4L>cmH)k&AvNh#Ak1JQfshlJBxE{(K*9iFGD*n9nIvR}34w&9rn_dQXL`Dt z>h3whAqXf41_6~z<r3r;2y`ZdKmbLSRdiiER@}n{mDN35kHy_p+}~GKU0r?5k?8)@ z)%Bh4{oeV#uip6J`4<74Ew6@9fl3WkIu64m!L(juzzD~UM0a>YXRjGa3nrZvOT^OW z2rBCqc4(*;%uHC}F567?#JYyVMlu%ex1we|d_l^zL(ot;8B?HZn5yG&93fazJUn70 z(zX?ko3=Bj$$xD(Q{1pB!-WLLwiM6HZ_^OMk*Lv7tK%qqNN{+b>=rB0Ezkyxc*fk& zC8(`ix3HzKo3k~{(D7j$EjTP?rkkT`T=A%d9o0C7<fKWJnlVeqahNTr=8V<-Ml3G) zP;gRP+Kwf<8y0q`!E<%YQ-gI5UK6uZ>GejxsX7+uI9_#3VaG-zl^V3{sD={-b;aza z%t*$LrH37mR+(w;m}>4%#?>kdbu7YSQs3=TUsG3>$t61K5hlqT=8=3<!AOs0wdBb< zPEliZjxC`0BRWn~9aGqmqd0^!uuQ{p9cQ9}I5+@j(y@5BNeMQRj#-J6V6xetOb@rj zlvsTdonfktayS8JE6t;JZ3#lDgxC;}hezhbTk?A>>`>}>u8u~mBo9irJS+u^N>pq# z%o{YU5-c85M2(qrkC{lvB8K8VgeI&}yqzaFr>@1ayThrZQjjj2nn0=dh5gMUmTiU= zWl>kkL5WkJ6a&pV*5RYnbfaJw!6_41x{xx$-iq}aHt5)h^93u$r%hR`Ig}2!c`B() zmhWq=cvP8ch??Ow3C^a19rB6|Q_zNX4HxL>z-GbnLtaU6BrU9vbHQm7kwoDnPXJqV zT!f1~4Qey(fmp;89A8F*oGwR%-Y^2b4VP%xu49KXq*}#PzZL0=rLAzQ`=qTHiD6gI zL+C_ALsW+eda(JWT350K6@xNR9(d)jXXs0V29@(oCFB<P)NSa|5koJX-XK+3aAt4~ zHy|{)(#?^dN@qGdsny{PiEfL}Ht(H+jH6#eLWiXmToB}Wv`N$?WkQ?GbjGFuT?$)6 zN=F(QhJ)Y&jdpjYpSIR&q$541O;1xv^eB!Xy-jhtSCX4|{vHPk-$5Ni;EYhjHjT8Y zkaO5A#yWt{!m+^9a2c5_KRZe>H~HIyuoIQ)XO{Yzt9}+J3%^>&$8ilqmx8u+AR?$Q zYey;^g$K<}x(|CGZl)a#;`oMYT*rXm_>mAkiR(4opyN}xQP5P*ib~e8%}X<CZKaW1 zZ<G7FG80oqPKc|Lmh$7NAjY0vU0e!sc_%RDrfbvbq%s*YRk(S>WPBRCG~BG?Gq^=C zuN*%;oE>g8qcNj>I7!o-*0^zFOLJ3Wd-I0%+t;;iSWo$s1+;J?jrBHsR>S9Xd>*$8 z)|K1q(Ac2!a2#nO?NVr$cSc3@{Dpy>f;)BGg}WK(EhockHIhlC{7YIQR)4t5NTp4C zs6QU=H6nc}D-n(wX@eFX^%6pNI8pi{zNFzE9rxlsM#h7f%T!>Hd5zhjQnbdDt3rYk zf_mlqn!NFPs;0#AfQ~QYL7IvOr(j2LvhVEva-t)@U%|r~9?|hA9uu52p`|@bBB4aM z%d-0gedT3dqEJN!FhM2QWTrClbfcSok>)4xq=v8RcnVJo8Ye_E^Lj3kcLM4y?`9{Z z(ndN%XRvCNC||;ew_ckw&!sQ790}ZwXEi*hBa1zPa}S2Vatktu#!{}QWk!GcL`f{5 zih*k{p4YHX#|zlc{Axl(xl4G!JFz^vdMN3fpL!=O@c`6blr7E}OVBOYml5D4y6FY= zv8WRL%Q{}ct4#iTX~r9kbdRHbB?k59_-;p4)_Kbpz?h<NzmC^5d_%|U_$$H63E^nF z+E;!_MmOhJCs-Raci&e`XomtSiP&G$Iv3QN>O5DCZ_!0BsPD?3*S6u?I=+Ly;nwL` zze&ZfuWK&MfCfxE*5xJr;f}ydD^JBlVH^Hd$6NRwPtwj%CLQOOA>Rp2xvXmJHOr<n zyYT}ZKU8KEq77Jyu6QiMW9t+6k#d%A3sz6m96T8~34MZ*IG~m(0`~VzU{$&_$A~kh zi4M;(hj^Ath47E~Ck;Q*@y~eYAe~Lwt%z63IZ+ph`{2BL0r`$JeyZbV_&EidFbOl` zo`=iCuveMYzv%ddN~<cFa#!PDxs;<m8vebYfZ`IW;?=Ko{3m|RaY=)RzwuM3gJUt6 zw~d}cDPQ|r9lui=QWZ;W=u-{v>-fE=GV87M8Y`2CR^xw|8aP>GIBs=Y8M62XDpiZs z-EBta@Leg@2Ri;Fpok)t)fZ#7b+GZE$(dIm9V(Yp2&Sszmu1Ixy2og#lEXBaq>Cmj zJsnhtD7Obm?l*=SyGe3$&<Z`sJ=>n3-}M4ngC?Odlm82nOro4KMo1<z`RC7!YB`)5 zlrRU?+bs1nSN$yDu}5lkIZ9a8(s-zG>shS5t>dvpX6W)^Vbx02V%*c7s$I=iHLmh! z4>gGC^AtHomt$p?;E1GGbXuK=&_U4v&MBJ}=Zh2eaFPd@+_Z461mw+cm?E=fjwW+; znJ4oFXO;896J3nbF&(m)VFjhr)MMCf>O7K&m<1;~Pi)n4JTY;nMiqfHQ#nzWI>$_t z)LBBiME#tsP&`SOCC=e5;|oR;9?VNl+V1I3o!_Ybv4jFMB=t&y^-5;-&dE(aqRVM= zI;&ttL2ahhNEqD;;HI$wE}RuEtUh>)P{o!BmX3|Bsv;H6o+4)or=F$D*}@uI*$mK^ z%|z&+YX}UZ5p|W%Zu~`^(pDi+qvSSYPSNCC!G<x}575Q(n^S*Du+o-O*FqZFtv)jm zk`=O&B|2#moETI$FQX`Ps8zK%S*^<&VOg(8-s<S;6or<S*rLx{Ar;<?hLAMNI!!*R zON+EJ#V9uAv8U5zcAE*)ri*dd60A8Sp_F8X)v|#us&_D5Ei4mG@nb?PQ7vr@34=Dv zv~!eW(BuMU1^ETqdu(ga=!~11Y#ycj;PX@@x0Obe8GKX~QjK_O^-#o2s&Z<zY$4#y zbPl%7w0aK9Hn}k&>5z+6rFAxIPO?pxOJqA!a8*fi=uq|7V3O+-=P6<?@Q+rNQpXfA zbm>%)^6*&df`lSjMJO{`Ep)##^JHb{Aqr^2k<z70xANwb<AlpO^wt0p)1_DX1T*@L zK9dO$tHzsS=^p;$5i5~qrnw-fl1@cDnD}{~FC_hv(8OYSSdxN^#x#+V<3lcWX!Gj2 z-htISd~RgDXQORJ%v8!!1)#x0Qmb+ljY>$lor(W#V(XF;bvZOhkOa4sC*|PQo#3H5 z2a*D3^!!RWh5=m$Wr#^&k3~i3VRhX13FWRD+$!$cqOtS_JLNJ>F4yG>xw7oNQ2B|D zA7D-1+nNH)-+krpLuw!rtCp(;6&G(~(k|ENa;?hPtJE=3MaNI*@=29rgm|fEdT9&8 z=?%I##l%T&bG6*WV4x!69JhgnaP+1O&9>j{h^1mQ{>DVY;<4Yo3R+e+2zHuABE_Op zByHKeOY|qGIA#sTXygqn+LxbdS?RDNaAm*+_4JiomGi2anBXwuX^ADw^_l)o({5Kj ziS?%zD`Lbu3_GUYy~e6^PmGv_OPqJazn^r1iaM;gx0mg#mU0_)gP5W1&2z}?&G5D~ z+?z?V!eu+Rqbp68e$3TIq=$p2D~j{Q;O%Xhh_Wx1ze@JaCm;FoTp{H9M7rI(3*4^X zqi#=?-IWsK(LAGw3^L^$80pMZ&w07*(z#2>6IoZLQ>j4i@DL!NMh#`w!~;WqzQcV! z8_su(#eIG}xj)idHkQawrepPzvvL<Qc^Lg1E++@4VSCV@(;pYG*c{DobF|l!x3GMl z!`Ld{Uh*BGHY;OC%r!BkcQX`Lh5A#kf+mko<ES_zjzvA}igjn0<OQq$o6SxZ>)Tyb zTwJ0=oK*g<ofxb?<V}@zDwT1_@qz{y3>ncVIi=#KD*1T<&xa?M-9iBwR+OnbMO8E# zFd1jMh*65GOj}9IPNi)l*=jP*MpH*jl4nEmoMbiGqoU>rV`Dzoh$RM?%!S=}NTL`> z*SP*fa7QqNdIQ}>*BXf^x8sd~)t5<*eb-ztQI+n?3=bw4enF~)$R;BmZ=+-2N%wgk z@7#=v=h_$Olf0L(A3Nw2^yUN;JLe+Hq_wlUcYMj3<@nL$Wx;V{59L|QWgc^R`&2=3 zsc%7e1;qgIX}(S3a~Gc#>b9Vyjd!7ewwu*B75hrscrYqyWAa?m#<OX0o4T<tY2z0q z4o$oa=W{AmjNh$r)Mxk>=9}<&*rGj<r`0gIg}?0P?_#-?zq&g>Zj;aQP2_Xzt#Bs4 zjB2NEaM3<!TlQe`a|kVZ7NO7xre!f*{jHgq#j&|Rb8>&?bHWK*)LRyH?&Bo)vDAH> zI)c;p;H>Acf+L&M$Q66A`Z=r}K?`5j?!~4G<jFk&lSx`LWwH*_$>nUcppG~8Cu0LK zKOeokAs;|{fSo~?9bamncUZfftW_%3#731P-w(Lkg(KLSg)xF|*^9mkY*uYG+6a;d zpk*<@4z`5czJ1t9Brb1RteUboDT^z-ze}^Y())XA79V5(RW;XE?nlK4KJg50%Hmcw z-LW`}FJy6l77vZ!@hqO%i;)V{yy%WQ;4WI1#n;^SHwxOhnb-c!f_CogwmXzpjo{4@ zeD?r4UA~GM1B`9XBfN$m4*?hQ)1fU`N=%nwD?irQhV{6FEjxGvZt(7zcf|a^6A|2q zC?4Ql{62KyP4wU$j`$-lwUt6mcailJY8hU`klaDVx|4lXeBR|t<qM8fzUWKkXiq9n z6Nd|3EXcExjC%Qh5y1Byphxg`H9yYcADovW!18oB9V2+xMYlYVXYvCtAc13$#C$?l z4;#yo!YX9YP9@z+2s`=T<Xw9b!?+Tc;dWfk>!>RN;63euHy^vk0q;vW@NhprSW;HK zLxJb3bRIbV^A+;FnqOA!$G>f<^q6bQ;y-dK`I~V-$Scip+!44MGw2|f;#z+HbPd0K zx(;ht5Z;dK1LnBHGsn?X;2xig2Rtqe#f3**v2jj_jsH4GHg4j#Z@cJGZl><<LIZEr z&%>?M_S*t%7~`;Uug^wGX*$7K?x6nPo*O8HSSj8A=9F#(f2<X$%u1z8cOK>GbmyRs zOv4@2sypfU?jnhI2gq7J4q5l*$dVge1Cy!yWb&3hG9~B6>awCQu9c}-Il_HRb00@4 zDU3)>R;Cvi;i6|{CRJ>&99IE$)XD<ibLNC2CyeU!Tn!u7=`GI6!klNT$$30BF3L3) z8LCSs8)asd=L2PSj>@93zVXW9fEQekT0(sf!`{98cOPcbsOHko)!{*`z(d%KhtZ8k z`1#JGG~tJ7!jItwJkF6%@VfR%db+3ZHsjW>@r>x$oi}Ki>WYY;iXJ9Q<o+?d;RC*~ z_EYf8L1gtlsi&}(=7e=pR!;T<jhsS$Ppy?RRJf8e_R4ZcBKu^87k|CLd+Hu(%*jYr z`Qx*~kW2Zk&-IP!I%;L3r^SD+Tz#t^H<-z(z97%^Np@INQeNeEHv66Ar%2MSCkzOA z9aw9^9twGcLf*>{Sobl^y}%@5KYiItH2MRyu$QR<FH!Wb;90ziZ{llsmzTHi;~R1m zUY9VhZ&%@sfPh!~0zO;5EDw$$;D>wxpH5$=lFT>D3Ak1^Wk(Ti)qZK;Qn^n$w$#dn zd*q_Fy|UF!Tdo>kO0vUoFmyh(63KZV1?SjUdtpyXq4on}3DRyXe3M9jn@E3$=JZ|0 zhPP-&-(!6EK4aipOdWo}==eh>**~J;y-j)i7~kTBYCe&8Glwi*8wc61_{g$G>$u<D z%73}~Mi*z6x-nek^*%2>fUDr|v1#py#Itf~p~D{6W4UV`Y?@X;UqDe8@$>=wgbMl& zQ;2uzf!<;E|5N6=KSLjW&S3i<zsLFop2062xZFg3w+q*(+1A53kno}h(h!B82@)|( zm%s$wcL{lnJ~l2!j$U1rm5=AbuVj2P-C3|nfYW(Y5#U#tMbEhmzri_tHsZI;@_)x% z^nIpGzYlOYG!BQ4_#D3EaX8G43)JAcqG(n|4di-GDys$#i#G;L2N&j8L}!r2>q=Ps z1BLkkh5086^8@wqHCjcmRVta~RRvfa9+Sl?d6aNf$YV|-J)cLK$EoeF^Yj^!C*(=` pp08dcPw}|tHm3N={xh6#IH&Ap=U(S`pX_H_i0?1T0eJ;S{~tv)1$Y1e literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/security/TestAuthenticationService.class b/api/target/test-classes/no/freshify/api/security/TestAuthenticationService.class new file mode 100644 index 0000000000000000000000000000000000000000..6af0ee0647cb483bdd99752f74279fe1153b7f50 GIT binary patch literal 7437 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 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/security/TestCookieFactory.class b/api/target/test-classes/no/freshify/api/security/TestCookieFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..43c03095113427a23d6bf99088660aec3abac8fb GIT binary patch literal 1183 zcma)6+foxj5IvIwHZBW+1rx3kyg)*b6|WCbt0+o*S+Po}_&kIm8CZ63GK+<O<%?22 z_yK;DWzQzaO(^rwv)wb@=k%GL{QCXlCxBOY;Ua^qgPeyx^fL_a@gp8YJZ=T=xA#QT zF!aBau{5t4vXyEhk356h7Ez==D;@2)a53P(^Du}ZhWS_pyIOSGa`!mkhcf7hW}>Az z4%U>~mtvhajnc;q#g;IuiD@e>zi=Z}+}&qbsf1?~HjS2Xt6rthKG%j*Ieiof6SR#v z?3JwNG0ZS{p_mIFqYlPA+(waM>V|X%hp24u1Hmv>u}G)=_rP6@W5U6thbc@ml$CA; zdkHB*_D~w3(>_-_M9ucmVeokBy!n*yh}?zq9d$*mpM&W|strr}j)z&xI8U4!JW7Ps zch19I++!G`;94ZOKGkYA<$IGd4;bKJfno95i`fz#bLnz&Yift&D1<T=8_B`8&|7>v zqKF@=CXX6iOY8T7In$QZ=2H0o5Os!0L%46R8G=5e_C;**u3QJrV>2BkhM613f??uA z5*v9S8nPpa?rIz>lg=8koeuwfk5&z0=l9rMklWo<iEfH@X{9J$(QVms#T@48McH2# z%)TkI74iaF=`zr__#NykePmE2Yqx<s7Rh?u1E^t%Jcfs~n@N+~_K{L-(s#nz32wdf z3rpWHa)MHg))`vQDi#S87@+eW)g8hJ3Yfrfics!W=^<oM!g5M1Powt;D}?fxaxJGP zDTAkf8GNKY+g9lW<<KwGy6FCW`nU-1BS*)^$QJ1@p+t5(g)Vl}d(b(Irhx1c;4{k2 G;Q1fr%O3#% literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/security/TestPermissionEvaluator.class b/api/target/test-classes/no/freshify/api/security/TestPermissionEvaluator.class new file mode 100644 index 0000000000000000000000000000000000000000..1d8300e7613e46acada0cc524e52aa66175478fe GIT binary patch literal 3121 zcmbVO30D(W6#iaV2EvFGv@MH@RwWBMN{beww5Xw?K`en-s9lCIkildIXThfXzVGcH zX-@%L&gl>6kLu~YGua4<<TU4G-pqUNF5h?WyZ8O`?_YldxPqU92%t$qvy2wB3UsZh z8>*63ja6l4X-!Kz0<D*ILwCjnnnK}}gf@Y5hN-Mrnw`;C@`}2yE4G$)E#1j0cQh-f z+qP~R@eMWWs*Y(*<<_%7NN8$D2V@BcWOU--<CM&4wo^lqK+pPK^#WrF(^^&RbxSu^ zS1dKBJv6QRWtY@+TC?q1p2Z|QA<$P1CTA{dS!LeVtRT94w-3oUj3)(}U78gbNYs~! z1@Sa`CG^SY$ACa*nb3r3tO`g>j5f1Ea6&i3iQUU2-G!qvj$u%s#nzmuW!_i4E1YV> z33A6FrdZ;nj8ix*&_)vRoT_I94p#~#9VREn;R^{ItL^;_lh9?%>~au8KJ2KBVVn_Y z&lHygj@Q9nk|qd4I4a?sz^Q!<O>4O&W?A73d{!XT(EeLmK8O)C@#BJwi%eA~0WWzl zMF>VPCgTz>wbK#@lV=rNW^S(toC)oR!*`C15p68_f{Yh2As|<p5;(c9qJsQ28P^e~ z_!s=4IMfqmcS))pFX4uSDH%6$OCa13JF{k1BhbnDJMr21WPDa2+89z6q}VB#mT?<1 zzN5ajv-KP;QSOuFsR*Y!@G@p4BxTHDzIXy$N6#t=-KK&PFe&+ow{q(Hr6yK54W+Fy zE*W=ayn+R)Or<3BjoCEit0?c6@G9Z0=BZSjnAZu{$!Lb7r&Will!Vu6q}?uo>zYFc z%J$3HJ-oq%@=XDy9w%P#svYALTEr5|rUk}Bk1tti)6x`|oL%;9d&Q{WhnE)}&}6KD zs!6B13y;7^1FCm(5NpG58`k)wxKv=-ZU?f+NibxXSQohXKMSnDfsAUGOSypA2=XfT zd@glUNotm^X7#t#CCb!_>?u^YikV_QEe2u1mf*;6u^}+XK-OGpXY^dx9nJFE*Mv=& zIUOjcf~xm1XSsBYnnR0RYTpu|!1=!bt9)0+d#ta+-#n>iZST<OtA^^h7QK&EWx(ae z4q<FOMpmy;2NF1#&<*Xj%O!G-Aq#XT%(R+KsYC;P7bcsXj81-!>@iTv;yV45EOCc% zDZs5cuM!Ik?a|_Q!>WT$qD}X;yg;O}{ai%_dS_iacsVVl+dBC_VHl?4okDW|gqOB^ zLvvMIp~DbY(-~55g!|o%%8Z&ctz<E2xi8m_FB3rGeYM0VjJ#<Ow>^bLqvGm8*^o3{ zE3HlHO#cAuDQ9!(hI5t+8IDt}3Q&%;pqno^^cLVF>Wy@H@J8yU-be)v0`Gh8ACLq^ z0<HA?kY>iwL~lS>WE&!~18HF!?VAYx=I#E7o_u8k*=Qy!AJd!c@5d+jl)eN$BV7U3 zB|7=uMRUKBo-WeUy@{U4ALt1_!c$u~!mr)Ox9|)t57BaX6A_w=_{(Q^pwQ&`#12Mi zd~SN!pC2uZ&qs&15R0<F7RGt(*}~Q6@0i>|A`*RsJDW(6=Ea2_+*{yf`lq(>`Zm-} zESK?Ir5g<B*3^Ms;;D}s^Z+6_f>CbO7(|@7oyG~w<0KW)Q&_@jtkEUo0m8`B&R-Dq zco_7t7I?UVyZ9Vm5Fc^O;7fc(oP14onCEY36!^Bt6ZKh+0nkex2I;@dNV_xL`k%Pp zf=75zcGf5V9JzbGg8bfs(V~IxJOkhFYv5r$1EXZ%!oCK6C>fY4Am}e5IE1{9p=jcr VY7Cc%>R5$|{+bwmBqRa+^dEXPR=fZJ literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/HouseholdMemberServiceTest.class b/api/target/test-classes/no/freshify/api/service/HouseholdMemberServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..afae0c8b06694eb5c2ca9eeb8692dc4753937061 GIT binary patch literal 6011 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 U@6YW0jbljy{5$@Me`D?c060gZt^fc4 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/HouseholdServiceTest.class b/api/target/test-classes/no/freshify/api/service/HouseholdServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1b4a09b42abb644de9bd26fdbea81197c68d1024 GIT binary patch literal 9526 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 LQ}S{71e*UJX#qEk literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/ItemServiceTest.class b/api/target/test-classes/no/freshify/api/service/ItemServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c126661d868e8f663f7d407529cfefb0d5904542 GIT binary patch literal 5687 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 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/ItemTypeServiceTest.class b/api/target/test-classes/no/freshify/api/service/ItemTypeServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8157f03d9cd91caaaa2cb6c9c14b1422d4b44986 GIT binary patch literal 4215 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 XBmYNVf8p2Pxt1na|G>ZSZw!A7s-ah> literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/ShoppingListEntryServiceTest.class b/api/target/test-classes/no/freshify/api/service/ShoppingListEntryServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..fd50609a1f2ee4acdf27b57bb1c8a9be9274c3be GIT binary patch literal 9544 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 literal 0 HcmV?d00001 diff --git a/api/target/test-classes/no/freshify/api/service/UserServiceTest.class b/api/target/test-classes/no/freshify/api/service/UserServiceTest.class new file mode 100644 index 0000000000000000000000000000000000000000..846b67ffbfc553b4fb1ad1d919dec802a9a5727c GIT binary patch literal 4596 zcmbVP`+F0|6+J5(3*-U2BB6C+f|D3y*#rRzO%oAX+t|b)<HRxolD6qu8rci0U1hav zaN9I}Bz-^9=FwNuCVju#w86;q`}*bQe*K&J^~~;CT0QJQf3S9EX6N2>&pr3f_}~A% z^)CQV;8p@Lbj8svume3B`mgA#dfL>j<@Eg06<KgK^qe#-!#$;;Yc!QlU?+CPkr3#G z(6FcRdDga;HN;nS)06Wh4SPq=rn1e;nO)d}zBu{?K7^!(LzbN`IkLK9l-AOE#Yk7B zvuYG%`T}2a!TX}DDhwWHW{bqvYBGVlaCaR01U`(9Xt>XImeXasaMf__^jz?quq@lv zUBkAj8g|(gX{iOiKQtP#7KEFLVxI6^d&;z{QeQG<CXRbF+|vrVY!{{J15RK7T`I!; z0{7v7hHeE~!(evnJsGv>et`$@poSe)>8cp_Mqw#hGpW3?dr)8mhe*1zyC5rel|edd z8phi^IQ3N@TI1tPFH#tbV_e`c9@3C%#kS>64LeJQRh(Q?5J#gBo0;=m!%WXt6y3VX z_|iBU$1#E9c$lGeNDqm+wjwPJk9Ra0-BESDr6ogY(^|Iq%!OmRIf0MH@u<MZR8&b{ zcTGq%#OzWp9tZPyQc(FsGkiO?H6&cZTad2jSSk%47x)AwH1w)8<N}pyIM|j0uC|Jq zICo-7;54SGM3bq_t8(#6>udsN@MIjb0%vhf!-K7v>0pl_mZf`vD?wTgsG4it*H9?k z&*6L=^8!!dX$?av{wp4<o4*yqm5yJ96IB`v%SGt^VETDaH(4=<I;5yW4Y5s}Ku%y0 z7bt64uDDd`zR|F@n)1SQT-1<m1ud@^q^}`gzvpdt#`dh@^yX}m&FiwjGkBIQM_!i& z&n1ib(YD|_kfu5c%e-^!CC@6T(9_etQNQpNYo8MMG@jEC^0Bz$*w@HMF3QK0NwP9` zU^v=qe2c!jozPhlE>WslEeI6B*m{HFn=b2y*;0Qw*I_MecCKc2m8g~lR$#Di)U^^? zIT}S@x6+!5h<+5Hs{$s<WTL9C$_cADV|vvU4I@!o%^e|fnoxmfU<*|6JnO39NZpl6 zzJBp<<M;zqeFjwl*SG0ailI&AYE|HxDy9URv<zISj<hE5S$vMtbd9oP8jp<527=f; zIaZ}(l#GIZXr%Lz!5rH?gGl2AfiK`io=pCyl=sse2=KLVdp4t52<cO7e@WoW_)0y1 zpv>>?;3}0*Lc?VR?W+P`!`B&|B?(R)b9WM)hJgjoQpDtqs=<S=>G(`Gg{02W3^z1Q z&RXi;;2*JE>z*QG8v3$^CC_{1CFv|Gm9s}@?SgLRb;nTSaI)K7F_@3`bZ=G1!Kvw0 zG(50H;Z4et?Z|1putGF_s;tgLTV@aMAD+o8Mxx$a2w-pvV}9@8Eu+Ou&<^Sb7+li_ zVY#sp`o)`!bj+~oSe$CdRHPvMi3@c#hhLno>sZ5nwWTr924ck2%S%Olc-zm0kHzs0 z59Y>At=@^)?jsf=thIO=K1%j-w&xV&jG<C{mn!L8<NkI;8Ry+?(ze~I>*$p^>8{wt zYF`h2o51hz`#Am}@JIZKS#01itX2D}OlSQdxI-`Lh2Xx^TaJ$Y6Rn1DQ{do9-71>0 zI-Irbt6nA3PJ3jgY2)HrMMgir{l&oL_IsnH9$KE#O*6*>IMa`wz8&~$g7=KS3H-tz z{auazA@Fl`K^L=@B_02$k<~cXdGlzatW)%H)TrC-KV>%ysKWj97~>h+&0pR**;&59 zQ4gQr<TIu&K#{p``E$JU@|jdudp>))&i^R*`)!Ug=;9l&d+a8(u|y5=8`%9WCt~;x zf7L%B;Kpv=hQG@<5qymA;T4WFe4mD5zM+NC(BN1NdoPat69boT;@%q=9DC3I+r5sV zhTSAB0{aQ%0Qxb6dl^{6{$OZ-GqfN0zFwuTF5j2Or^0oDwukw*djq2})Nn-ks^O6h zJQl-64o<1Xbxf{fCac!QYsj{OI7k?Wc;`;x5sdjD_65d65Qnh~uMwt(*XgpG&wQQp zH+*0}tdnqwI~AKFbk+o{hJ^rBGCy_;mq4(eyx2gphXDacNb*q}#KRFPMp~!{JpQQe z@dbKRd(+9!s0fG0H?Y*1it%-n<`fBsn@HHl8~~5f$YUfTLs30JAg6o?LxJfKLKjK; zF@C}TM?y+sEkyjZ4$C1dm7(Jy5rZ4J62to#2$R&5p}}=nTc&4{s7^CEGdRX;gVIQl zp5q~^R6RYLY6&QM^Z&-;Y>DL@vCI+6Jh41=2Uy-BmO#0$@Tqw5b46}$L%CiZj^eVr zhU+za{(Yo^-CvBMA)_Fdi$s}ct}ao~&)^)MjUdg|MLqNZqW)PEe@fIR!(7%eH;ekE zK-B7^8eZNKV^I0eQR+ISE~&VZk1yyfC)?%TA5;C6tf_W&iu@@o{dChPZZA?wLC0D` z9|{q>{h{5>5`LRj*~7QBI@4zL7_A=P&MMLUlIUXi6@Ja9QtEFw_h<Ztf5F?ke0z^; N3C3{)H?e_%{{d59sO$g$ literal 0 HcmV?d00001 diff --git a/docs/swagger.yaml b/docs/swagger.yaml index d4582d5..cafa083 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -205,6 +205,48 @@ paths: description: User already exists in the household '401': description: Access denied +<<<<<<< Updated upstream +======= + '404': + description: Household not found + /household/{id}/waste: + get: + tags: + - household + summary: Returns a list of household waste + description: Returns a list of household waste sorted by either number of items wasted or percentage of items wasted + parameters: + - name: id + in: path + description: ID of household to get waste from + required: true + schema: + type: integer + format: int64 + - name: sort_by + in: query + description: Sort by either number of items wasted or percentage of items wasted + required: false + schema: + type: string + enum: + - number_of_items_wasted + - percentage_of_items_wasted + - name: limit + in: query + description: The number of items to return + schema: + type: integer + maximum: 50 + responses: + '200': + description: A list of household waste sorted by either number of items wasted or percentage of items wasted + '400': + description: Invalid ID supplied + '404': + description: Household waste not found + /household/{id}/users/{userId}: +>>>>>>> Stashed changes delete: tags: - household -- GitLab From 9fea574379c27b1cd5177540daf1bcf1e05510fc Mon Sep 17 00:00:00 2001 From: Mats Lading <mjlading@stud.ntnu.no> Date: Fri, 28 Apr 2023 12:03:33 +0200 Subject: [PATCH 4/6] docs: add swagger docs for getting the waste in a houeshold --- docs/swagger.yaml | 365 ++++++++++++++++++++++++++-------------------- 1 file changed, 207 insertions(+), 158 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 0f58217..1b21546 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -7,12 +7,12 @@ info: MySQL database. The API is documented using Swagger. The API is hosted using Apache. Some useful links: - - [The GitLab repository](https://gitlab.stud.idi.ntnu.no/idatt2106-v23-10/smartmat-backend) + - [The GitLab repository](https://gitlab.stud.idi.ntnu.no/idatt2106-v23-10/smartmat-backend) contact: email: vkbugge@hotmail.com license: name: MIT License - url: 'https://opensource.org/licenses/MIT' + url: "https://opensource.org/licenses/MIT" version: 1.0.0 servers: - url: http://localhost:8080 @@ -41,7 +41,7 @@ paths: schema: type: string responses: - '200': + "200": description: successful operation content: application/json: @@ -51,9 +51,9 @@ paths: userId: type: integer format: int64 - '400': + "400": description: No email provided - '404': + "404": description: User not found post: tags: @@ -66,15 +66,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateUser' + $ref: "#/components/schemas/CreateUser" responses: - '201': + "201": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/UserFull' - '409': + $ref: "#/components/schemas/UserFull" + "409": description: User already exists put: tags: @@ -87,15 +87,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UpdateUser' + $ref: "#/components/schemas/UpdateUser" responses: - '200': + "200": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/UserFull' - '404': + $ref: "#/components/schemas/UserFull" + "404": description: User not found /user/loggedin: get: @@ -105,13 +105,13 @@ paths: description: Returns the details of the logged in user, the details are extracted from the jwt token cookie. operationId: getUserById responses: - '200': + "200": description: Returns the details of the logged in user content: application/json: schema: - $ref: '#/components/schemas/UserFull' - '404': + $ref: "#/components/schemas/UserFull" + "404": description: User not found /user/{id}: get: @@ -129,13 +129,13 @@ paths: type: integer format: int64 responses: - '200': + "200": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/UserFull' - '404': + $ref: "#/components/schemas/UserFull" + "404": description: User not found delete: tags: @@ -152,11 +152,11 @@ paths: type: integer format: int64 responses: - '204': + "204": description: successful operation - '401': + "401": description: Access denied - '404': + "404": description: User not found /user/{id}/households: get: @@ -175,18 +175,18 @@ paths: type: integer format: int64 responses: - '200': - description: successful operation - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Household' - '401': - description: Access denied - '404': - description: User not found + "200": + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Household" + "401": + description: Access denied + "404": + description: User not found /user/login: post: tags: @@ -199,15 +199,15 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/LoginUser' + $ref: "#/components/schemas/LoginUser" responses: - '200': + "200": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/UserFull' - '401': + $ref: "#/components/schemas/UserFull" + "401": description: User could not be logged in /user/logout: post: @@ -217,9 +217,9 @@ paths: description: Logs out a user operationId: logoutUser responses: - '200': + "200": description: successful operation - '401': + "401": description: User could not be logged out /household: post: @@ -233,14 +233,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateHousehold' + $ref: "#/components/schemas/CreateHousehold" responses: - '201': + "201": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/Household' + $ref: "#/components/schemas/Household" /household/{id}/users: get: tags: @@ -257,7 +257,7 @@ paths: type: integer format: int64 responses: - '200': + "200": description: successful operation content: application/json: @@ -267,15 +267,15 @@ paths: type: object properties: id: - $ref: '#/components/schemas/HouseholdMemberKey' + $ref: "#/components/schemas/HouseholdMemberKey" user: - $ref: '#/components/schemas/UserFull' + $ref: "#/components/schemas/UserFull" userType: - $ref: '#/components/schemas/HouseholdUserType' - '401': + $ref: "#/components/schemas/HouseholdUserType" + "401": description: Access denied - '404': - description: Household not found + "404": + description: Household not found put: tags: - household @@ -297,18 +297,18 @@ paths: schema: $ref: "#/components/schemas/UpdateHouseholdUserType" responses: - '200': + "200": description: The updated household member content: application/json: schema: - $ref: '#/components/schemas/HouseholdMember' - '400': + $ref: "#/components/schemas/HouseholdMember" + "400": description: Illegal household member role/User does not belong to household - '401': + "401": description: Access denied - '404': - description: Household not found/user not found + "404": + description: Household not found/user not found post: tags: - household @@ -334,14 +334,14 @@ paths: type: integer format: int64 responses: - '201': + "201": description: successful operation - '409': + "409": description: User already exists in the household - '401': + "401": description: Access denied - '404': - description: Household not found + "404": + description: Household not found /household/{id}/users/{userId}: delete: tags: @@ -365,12 +365,49 @@ paths: type: integer format: int64 responses: - '204': + "204": description: successful operation - '404': + "404": description: User not found/Household not found/User does not belong to household - '401': + "401": description: Access denied + /household/{id}/waste: + get: + tags: + - household + summary: Returns a list of household waste + description: Returns a list of household waste sorted by either number of items wasted or percentage of items wasted. The list is sorted in descending order. + parameters: + - name: id + in: path + description: ID of household to get waste from + required: true + schema: + type: integer + format: int64 + - name: sort_by + in: query + description: Sort by either number of items wasted or percentage of items wasted + required: true + schema: + $ref: "#/components/schemas/ItemSortMethod" + - name: limit + in: query + description: The number of items to return (maximum 50) + schema: + type: integer + maximum: 50 + - name: time_period + in: query + description: Time period for the waste data (WEEK, MONTH, YEAR, ALL) + required: false + schema: + $ref: "#/components/schemas/TimePeriod" + responses: + "200": + description: successful operation + "404": + description: Household not found /household/{id}: delete: tags: @@ -387,11 +424,11 @@ paths: type: integer format: int64 responses: - '204': + "204": description: successful operation - '404': + "404": description: Household not found - '401': + "401": description: Access denied get: tags: @@ -408,17 +445,17 @@ paths: type: integer format: int64 responses: - '200': + "200": description: successful operation content: application/json: schema: - $ref: '#/components/schemas/Household' - '404': + $ref: "#/components/schemas/Household" + "404": description: Household not found put: tags: - - household + - household summary: Update household description: Updates the household's attributes. Can only be done by a superuser operationId: updateHousehold @@ -435,18 +472,18 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Household' + $ref: "#/components/schemas/Household" responses: - '200': - description: successful operation - '404': - description: Household not found - '401': - description: Access denied + "200": + description: successful operation + "404": + description: Household not found + "401": + description: Access denied /household/{id}/shoppinglist: get: tags: - - shopping list + - shopping list summary: Get the shopping list of a household description: Gets a shopping list with item id from shopping list operationId: getShoppingList @@ -459,19 +496,19 @@ paths: type: integer format: int64 responses: - '200': + "200": description: household ShoppingList items content: application/json: schema: type: array items: - $ref: '#/components/schemas/ShoppingListEntry' - '401': + $ref: "#/components/schemas/ShoppingListEntry" + "401": description: Unauthorized - '404': + "404": description: Household not found - post: + post: tags: - shopping list summary: Add item to shopping list @@ -490,19 +527,19 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/CreateShoppingListEntry' + $ref: "#/components/schemas/CreateShoppingListEntry" responses: - '201': + "201": description: Successful operation content: application/json: schema: - $ref: '#/components/schemas/ShoppingListEntry' - '401': + $ref: "#/components/schemas/ShoppingListEntry" + "401": description: Unauthorized response - '409': + "409": description: Item already exists in shopping list - '404': + "404": description: Item type or household does not exist put: tags: @@ -522,16 +559,16 @@ paths: description: ItemType and count to change in shopping list content: application/json: - schema: - $ref: '#/components/schemas/UpdateShoppingListEntry' + schema: + $ref: "#/components/schemas/UpdateShoppingListEntry" responses: - '204': + "204": description: Successful operation - '400': + "400": description: Invalid operation. More items are removed than in shopping list. - '401': + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Shopping list entry not found /household/{id}/shoppinglist/{listEntryId}: delete: @@ -556,11 +593,11 @@ paths: type: integer format: int64 responses: - '204': + "204": description: Successful operation - '404': + "404": description: Shopping list or shopping list entry not found. - '401': + "401": description: Unauthorized response, user is not validated or does not have access /household/{id}/shoppinglist/buy: post: @@ -578,13 +615,13 @@ paths: type: integer format: int64 responses: - '200': + "200": description: Successful operation - '400': + "400": description: Invalid operation. More items are removed than in shopping list. - '401': + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Item not found in shopping list /household/{id}/inventory: post: @@ -617,19 +654,19 @@ paths: type: integer format: int64 responses: - '201': + "201": description: Returns a list of the newly added items. content: application/json: schema: - $ref: '#/components/schemas/InventoryItems' - '401': + $ref: "#/components/schemas/InventoryItems" + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Household not found/User not found/Item type not found get: tags: - - inventory + - inventory summary: Gets all items from inventory description: Gets all items of a specific inventory operationId: getInventoryItems @@ -642,17 +679,17 @@ paths: type: integer format: int64 responses: - '200': + "200": description: item found content: application/json: schema: type: array items: - $ref: '#/components/schemas/Item' - '401': + $ref: "#/components/schemas/Item" + "401": description: Unauthorized - '404': + "404": description: Household not found put: tags: @@ -675,13 +712,13 @@ paths: schema: $ref: "#/components/schemas/UpdateItem" responses: - '200': + "200": description: Successful operation - '400': + "400": description: The given item status is not a valid status for item/item does not belong to household - '401': + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Item not found/household not found /household/{id}/inventory/{itemId}: delete: @@ -693,7 +730,7 @@ paths: parameters: - name: id in: path - description: ID of household's inventory to delete the item from + description: ID of household's inventory to delete the item from required: true schema: type: integer @@ -706,11 +743,11 @@ paths: type: integer format: int64 responses: - '200': + "200": description: Successful operation - '401': + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Item not found/household not found /household/{id}/inventory/suggest: post: @@ -743,15 +780,15 @@ paths: type: integer format: int64 responses: - '201': + "201": description: Returns a list of the newly added suggestions. content: application/json: schema: - $ref: '#/components/schemas/InventoryItems' - '401': + $ref: "#/components/schemas/InventoryItems" + "401": description: Unauthorized response, user is not validated or does not have access - '404': + "404": description: Household not found/User not found/Item type not found /itemtype: get: @@ -774,7 +811,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/ItemType' + $ref: "#/components/schemas/ItemType" 404: description: No item types found components: @@ -882,19 +919,31 @@ components: format: int32 example: 1 type: - $ref: '#/components/schemas/ItemType' + $ref: "#/components/schemas/ItemType" suggested: type: boolean checked: example: false type: boolean addedBy: - $ref: '#/components/schemas/UserFull' + $ref: "#/components/schemas/UserFull" ItemState: type: string enum: - INVENTORY - USED + ItemSortMethod: + type: string + enum: + - COUNT + - PERCENTAGE + TimePeriod: + type: string + enum: + - WEEK + - MONTH + - YEAR + - ALL UpdateItem: type: object properties: @@ -916,7 +965,7 @@ components: type: integer example: 123 state: - $ref: '#/components/schemas/ItemState' + $ref: "#/components/schemas/ItemState" remaining: type: number format: double @@ -928,36 +977,36 @@ components: suggested: type: boolean type: - $ref: '#/components/schemas/ItemType' + $ref: "#/components/schemas/ItemType" addedBy: - $ref: '#/components/schemas/UserFull' + $ref: "#/components/schemas/UserFull" InventoryItems: type: array items: - properties: - id: - type: integer - example: 123 - state: - $ref: '#/components/schemas/ItemState' - remaining: - type: number - format: double - example: 1 - lastChanged: - type: string - format: date - example: "2020-01-01" - addedDate: - type: string - format: date - example: "2020-01-01" - suggested: - type: boolean - type: - $ref: '#/components/schemas/ItemType' - addedBy: - $ref: '#/components/schemas/UserFull' + properties: + id: + type: integer + example: 123 + state: + $ref: "#/components/schemas/ItemState" + remaining: + type: number + format: double + example: 1 + lastChanged: + type: string + format: date + example: "2020-01-01" + addedDate: + type: string + format: date + example: "2020-01-01" + suggested: + type: boolean + type: + $ref: "#/components/schemas/ItemType" + addedBy: + $ref: "#/components/schemas/UserFull" HouseholdUserType: type: string enum: @@ -970,7 +1019,7 @@ components: type: integer example: 123 type: - $ref: '#/components/schemas/HouseholdUserType' + $ref: "#/components/schemas/HouseholdUserType" HouseholdMemberKey: type: object properties: @@ -984,11 +1033,11 @@ components: type: object properties: id: - $ref: '#/components/schemas/HouseholdMemberKey' + $ref: "#/components/schemas/HouseholdMemberKey" user: - $ref: '#/components/schemas/UserFull' + $ref: "#/components/schemas/UserFull" type: - $ref: '#/components/schemas/HouseholdUserType' + $ref: "#/components/schemas/HouseholdUserType" Household: type: object properties: -- GitLab From 2e6d5d66160d85dc24cc0833b5e89d1789be1fa1 Mon Sep 17 00:00:00 2001 From: Mats Lading <mjlading@stud.ntnu.no> Date: Fri, 28 Apr 2023 12:07:35 +0200 Subject: [PATCH 5/6] docs: take in two dates for time interval instead of enum --- docs/swagger.yaml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 1b21546..6ec84a0 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -397,12 +397,18 @@ paths: schema: type: integer maximum: 50 - - name: time_period + - name: start_date in: query - description: Time period for the waste data (WEEK, MONTH, YEAR, ALL) + description: Start date for the time interval (YYYY-MM-DD) required: false schema: - $ref: "#/components/schemas/TimePeriod" + type: string + - name: end_date + in: query + description: End date for the time interval (YYYY-MM-DD) + required: false + schema: + type: string responses: "200": description: successful operation -- GitLab From 31cf0a7d590c1ded12114db471f72f83d35f6857 Mon Sep 17 00:00:00 2001 From: Mats Lading <mjlading@stud.ntnu.no> Date: Fri, 28 Apr 2023 15:36:40 +0200 Subject: [PATCH 6/6] fix: add id back to householdDTO, so create household works --- api/src/main/java/no/freshify/api/model/dto/HouseholdDTO.java | 1 + 1 file changed, 1 insertion(+) diff --git a/api/src/main/java/no/freshify/api/model/dto/HouseholdDTO.java b/api/src/main/java/no/freshify/api/model/dto/HouseholdDTO.java index 7b1ba35..9d7cf05 100644 --- a/api/src/main/java/no/freshify/api/model/dto/HouseholdDTO.java +++ b/api/src/main/java/no/freshify/api/model/dto/HouseholdDTO.java @@ -6,5 +6,6 @@ import lombok.Setter; @Getter @Setter public class HouseholdDTO { + private Long id; private String name; } -- GitLab