31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import {ruleBookApi, ruleScriptApi} from "@/mammon";
|
|
import {RuleBookResponse, UpdateRuleBookRequest} from "@/generated/mammon";
|
|
import {isAxiosError} from "axios";
|
|
import {defineStore} from "pinia";
|
|
import {ref} from "vue";
|
|
|
|
export type RuleBook = RuleBookResponse;
|
|
|
|
export const useRuleBookStore = defineStore('rule-book', () => {
|
|
const ruleBook = ref<RuleBook | null>(null);
|
|
|
|
const refresh = () => ruleBookApi.findRuleBook()
|
|
.then(response => ruleBook.value = response.data)
|
|
.catch(error => {
|
|
if (isAxiosError(error) && error.response?.status === 404) {
|
|
ruleBook.value = null;
|
|
return;
|
|
}
|
|
throw error;
|
|
});
|
|
|
|
const update = (request: UpdateRuleBookRequest) => ruleBookApi.updateRuleBook(request)
|
|
.then(response => ruleBook.value = response.data);
|
|
|
|
refresh();
|
|
|
|
return {ruleBook, update};
|
|
})
|
|
|
|
export const fetchScriptDefinitions = (): Promise<string> =>
|
|
ruleScriptApi.getScriptDefinitions({responseType: 'text'}).then(response => response.data); |