46 lines
826 B
TypeScript
46 lines
826 B
TypeScript
|
import {defineStore} from 'pinia';
|
||
|
|
||
|
export interface Bundle {
|
||
|
id: number;
|
||
|
label: string;
|
||
|
presentation: string;
|
||
|
lastQuizzDate: string;
|
||
|
numberOfQuizzes: number;
|
||
|
}
|
||
|
|
||
|
export interface QuestionCreation {
|
||
|
label: string;
|
||
|
description: string;
|
||
|
axeId: number;
|
||
|
index: number;
|
||
|
}
|
||
|
|
||
|
export interface BundleCreationRequest {
|
||
|
label: string;
|
||
|
presentation: string;
|
||
|
questions: QuestionCreation[];
|
||
|
}
|
||
|
|
||
|
export const useBundleStore = defineStore('bundle', {
|
||
|
state: () => ({
|
||
|
selectedBundle: ref<Bundle>()
|
||
|
}),
|
||
|
actions: {
|
||
|
|
||
|
findAll(): Bundle[] {
|
||
|
return useApi("bundles");
|
||
|
},
|
||
|
|
||
|
setCurrentBundle(bundle: Bundle) {
|
||
|
this.selectedBundle = bundle;
|
||
|
},
|
||
|
|
||
|
create(request: BundleCreationRequest) {
|
||
|
return useApi("bundles", {
|
||
|
method: "POST",
|
||
|
body: request
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
});
|