Skip to content

Commit

Permalink
work on endpoints for user answer
Browse files Browse the repository at this point in the history
  • Loading branch information
MaHaWo committed Oct 21, 2024
1 parent 662c688 commit b99acb0
Show file tree
Hide file tree
Showing 7 changed files with 134 additions and 17 deletions.
25 changes: 25 additions & 0 deletions frontend/src/lib/client/schemas.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -623,6 +623,31 @@ export const MilestoneTextPublicSchema = {
title: 'MilestoneTextPublic'
} as const;

export const UserAnswerPublicSchema = {
properties: {
id: {
type: 'integer',
title: 'Id'
},
user_question_id: {
type: 'integer',
title: 'User Question Id'
},
answer: {
type: 'string',
title: 'Answer'
}
},
type: 'object',
required: ['id', 'user_question_id', 'answer'],
title: 'UserAnswerPublic',
description: `External data model for UserAnswers
Parameters
----------
SQLModel : Pydantic model basic sqlmodel pydantic type`
} as const;

export const UserCreateSchema = {
properties: {
email: {
Expand Down
37 changes: 37 additions & 0 deletions frontend/src/lib/client/services.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ import type {
UpdateMilestoneAnswerData,
UpdateMilestoneAnswerError,
UpdateMilestoneAnswerResponse,
GetCurrentUserAnswersError,
GetCurrentUserAnswersResponse,
UpdateCurrentUserAnswersData,
UpdateCurrentUserAnswersError,
UpdateCurrentUserAnswersResponse,
AuthCookieLoginData,
AuthCookieLoginError,
AuthCookieLoginResponse,
Expand Down Expand Up @@ -664,6 +669,38 @@ export const updateMilestoneAnswer = <ThrowOnError extends boolean = false>(
});
};

/**
* Get Current User Answers
*/
export const getCurrentUserAnswers = <ThrowOnError extends boolean = false>(
options?: Options<unknown, ThrowOnError>
) => {
return (options?.client ?? client).get<
GetCurrentUserAnswersResponse,
GetCurrentUserAnswersError,
ThrowOnError
>({
...options,
url: '/users/user-answers/{user_id}'
});
};

/**
* Update Current User Answers
*/
export const updateCurrentUserAnswers = <ThrowOnError extends boolean = false>(
options: Options<UpdateCurrentUserAnswersData, ThrowOnError>
) => {
return (options?.client ?? client).put<
UpdateCurrentUserAnswersResponse,
UpdateCurrentUserAnswersError,
ThrowOnError
>({
...options,
url: '/usersuser_answers/{user_id}'
});
};

/**
* Auth:Cookie.Login
*/
Expand Down
28 changes: 28 additions & 0 deletions frontend/src/lib/client/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,19 @@ export type MilestoneTextPublic = {
help?: string;
};

/**
* External data model for UserAnswers
*
* Parameters
* ----------
* SQLModel : Pydantic model basic sqlmodel pydantic type
*/
export type UserAnswerPublic = {
id: number;
user_question_id: number;
answer: string;
};

export type UserCreate = {
email: string;
password: string;
Expand Down Expand Up @@ -514,6 +527,21 @@ export type UpdateMilestoneAnswerResponse = MilestoneAnswerPublic;

export type UpdateMilestoneAnswerError = HTTPValidationError;

export type GetCurrentUserAnswersResponse = UserAnswerPublic;

export type GetCurrentUserAnswersError = unknown;

export type UpdateCurrentUserAnswersData = {
body: UserAnswerPublic;
query: {
milestone_answer_session_id: number;
};
};

export type UpdateCurrentUserAnswersResponse = unknown;

export type UpdateCurrentUserAnswersError = HTTPValidationError;

export type AuthCookieLoginData = {
body: Body_auth_cookie_login_auth_login_post;
};
Expand Down
39 changes: 37 additions & 2 deletions frontend/src/lib/components/UserDataInput.svelte
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
<script lang="ts">
import { goto } from '$app/navigation';
import {
getCurrentUserAnswers,
getUserQuestions,
usersCurrentUser
} from '$lib/client/services.gen';
import AlertMessage from '$lib/components/AlertMessage.svelte';
import DataInput from '$lib/components/DataInput/DataInput.svelte';
import { users, type UserData } from '$lib/stores/userStore';
import { preventDefault } from '$lib/util';
import { Button, Card, Heading } from 'flowbite-svelte';
import { onMount } from 'svelte';
import { _ } from 'svelte-i18n';
function validate(): boolean {
Expand Down Expand Up @@ -36,11 +42,40 @@
}
let userData: UserData;
let userID: string;
let userID: number | undefined;
// this can, but does not have to, come from a database later.
export let data: any[];
onMount(async () => {
const currentUser = await usersCurrentUser();
if (currentUser.error) {
showAlert = true;
alertMessage = 'current user could not be found. log out and try again';
} else {
userID = currentUser?.data?.id;
const otherData = await getUserQuestions();
if (otherData.error) {
showAlert = true;
alertMessage =
'questionaire could not be retrieved. Execute the proper rituals to apeace the machine spirits';
} else {
}
const currentAnswers = await getCurrentUserAnswers();
if (currentAnswers.error) {
showAlert = true;
alertMessage =
'answers could not be retrieved. Execute the proper rituals to apeace the machine spirits';
} else {
console.log('data from backend: ', otherData, currentAnswers);
}
}
});
let missingValues = data.map(() => false);
let showAlert: boolean = true;
Expand Down Expand Up @@ -108,7 +143,7 @@
/>
{/each}
<Button
class="dark:bg-primay-700 w-full bg-primary-700 text-center text-sm text-white hover:bg-primary-800 hover:text-white dark:hover:bg-primary-800"
class="dark:bg-primay-700 bg-primary-700 hover:bg-primary-800 dark:hover:bg-primary-800 w-full text-center text-sm text-white hover:text-white"
type="submit">{$_('userData.submitButtonLabel')}</Button
>
</form>
Expand Down
2 changes: 1 addition & 1 deletion mondey_backend/openapi.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions mondey_backend/src/mondey_backend/routers/questions.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ def get_user_questions(
user_questions = session.exec(
select(UserQuestion).order_by(col(UserQuestion.order))
).all()

return user_questions

return router
19 changes: 5 additions & 14 deletions mondey_backend/src/mondey_backend/routers/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,26 +155,15 @@ def update_milestone_answer(
session.commit()
return milestone_answer

return router

# userquestion endpoints: TODO: replace milestone naming with final database name
# Endpoints for answers to user question
@router.get("/user-answers/{user_id}", response_model=UserAnswerPublic)
def get_current_user_answers(
session: SessionDep,
current_active_user: CurrentActiveUserDep,
milestone_answer_session_id: int,
answer: MilestoneAnswerPublic,
session: SessionDep, current_active_user: CurrentActiveUserDep
):
# TODO: check if there is answer data for the curernt user in the database,
# if not, create it and return the new empty struct
# else return the found stuff
milestone_answer_session = session.get(
MilestoneAnswerSession, milestone_answer_session_id
)
if (
milestone_answer_session is None
or milestone_answer_session.user_id != current_active_user.id
):
if False:
raise HTTPException(401)
else:
print("normal operation: get_current_user_answers")
Expand All @@ -198,3 +187,5 @@ def update_current_user_answers(
raise HTTPException(401)
else:
print("normal operation: update_current_user_answers")

return router

0 comments on commit b99acb0

Please sign in to comment.