edit ledger
This commit is contained in:
+46
-17
@@ -1,34 +1,63 @@
|
||||
import {CreateCombiningLedgerCommand, CreateMainLedgerCommand, FindAll200ResponseInner} from "@/generated/mammon";
|
||||
import {
|
||||
CombiningLedgerResponse,
|
||||
CombiningLedgerResponseTypeEnum,
|
||||
CreateCombiningLedgerRequest,
|
||||
CreateMainLedgerRequest,
|
||||
LedgerResponseTypeEnum,
|
||||
MainLedgerResponse,
|
||||
MainLedgerResponseTypeEnum,
|
||||
UpdateCombiningLedgerRequest,
|
||||
UpdateMainLedgerRequest
|
||||
} from "@/generated/mammon";
|
||||
import {defineStore} from "pinia";
|
||||
import {ref} from "vue";
|
||||
import {ref, triggerRef} from "vue";
|
||||
import {ledgerControllerApi} from "@/mammon";
|
||||
|
||||
export const MAIN_LEDGER = "MAIN";
|
||||
export const COMBINING_LEDGER = "COMBINING";
|
||||
export const LedgerTypes = LedgerResponseTypeEnum;
|
||||
|
||||
export type LedgerType = typeof MAIN_LEDGER | typeof COMBINING_LEDGER;
|
||||
export type Ledger = FindAll200ResponseInner;
|
||||
export type LedgerType = LedgerResponseTypeEnum;
|
||||
export type MainLedger = MainLedgerResponse & {type: MainLedgerResponseTypeEnum}
|
||||
export type CombiningLedger = CombiningLedgerResponse & {type: CombiningLedgerResponseTypeEnum}
|
||||
export type Ledger = MainLedger | CombiningLedger;
|
||||
|
||||
export const isMain = (ledger: Ledger): ledger is MainLedger => {
|
||||
return ledger.type === LedgerTypes.Main;
|
||||
}
|
||||
export const isCombining = (ledger: Ledger): ledger is CombiningLedger => {
|
||||
return ledger.type === LedgerTypes.Combining;
|
||||
}
|
||||
|
||||
export const useLedgersStore = defineStore('ledgers', () => {
|
||||
const ledgers = ref<Ledger[]>([]);
|
||||
|
||||
const createMain = (ledger: CreateMainLedgerCommand) => ledgerControllerApi.createMainLedger(ledger).then(response => {
|
||||
const ledger = response.data;
|
||||
|
||||
const addLedger = (ledger: Ledger) => {
|
||||
ledgers.value.push(ledger);
|
||||
triggerRef(ledgers);
|
||||
return ledger;
|
||||
});
|
||||
};
|
||||
|
||||
const createCombining = (ledger: CreateCombiningLedgerCommand) => ledgerControllerApi.createCombiningLedger(ledger).then(response => {
|
||||
const ledger = response.data;
|
||||
const replaceLedger = (ledger: Ledger) => {
|
||||
const index = ledgers.value.findIndex(l => l.ledgerId === ledger.ledgerId);
|
||||
|
||||
ledgers.value.push(ledger);
|
||||
if (index !== -1) {
|
||||
ledgers.value[index] = ledger;
|
||||
}
|
||||
triggerRef(ledgers);
|
||||
return ledger;
|
||||
});
|
||||
};
|
||||
|
||||
const refresh = () => ledgerControllerApi.findAll().then(response => ledgers.value = response.data);
|
||||
const findById = (ledgerId: number): Ledger | undefined => ledgers.value.find(l => l.ledgerId === ledgerId);
|
||||
const findAllById = (ledgerIds: number[]): Ledger[] => ledgerIds.map(findById).filter((x): x is Ledger => x !== undefined)
|
||||
|
||||
const createMain = (ledger: CreateMainLedgerRequest) => ledgerControllerApi.createMainLedger(ledger).then(response => addLedger(response.data as Ledger));
|
||||
const createCombining = (ledger: CreateCombiningLedgerRequest) => ledgerControllerApi.createCombiningLedger(ledger).then(response => addLedger(response.data as Ledger));
|
||||
const updateMain = (ledgerId: number, ledger: UpdateMainLedgerRequest) => ledgerControllerApi.updateMainLedger(ledgerId, ledger).then(response => replaceLedger(response.data as Ledger));
|
||||
const updateCombining = (ledgerId: number, ledger: UpdateCombiningLedgerRequest) => ledgerControllerApi.updateCombiningLedger(ledgerId, ledger).then(response => replaceLedger(response.data as Ledger));
|
||||
|
||||
const refresh = () => ledgerControllerApi.findAll().then(response => ledgers.value = response.data as Ledger[]);
|
||||
|
||||
refresh();
|
||||
|
||||
return {ledgers, createMain, createCombining, refresh};
|
||||
})
|
||||
return {ledgers, findById, findAllById, createMain, createCombining, updateMain, updateCombining, refresh};
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user