import {defineStore} from 'pinia' import {FLIGHT_DETAIL, FLIGHTS_LIST} from "src/graphql/queries/flights"; import {EDIT_FLIGHT, CREATE_FLIGHT, DELETE_FLIGHT} from "src/graphql/mutations/flight"; import {deleteFromItems, mutate, query, updateInItems} from "stores/helpers"; import {ref} from "vue"; import {DELETE_AIRCRAFT} from "src/graphql/mutations/aircrafts"; export const useFlightsStore = defineStore('Flights', () => { const flight = ref(null); const flights = ref([]); const isMutationRunning = ref(false); const isQueryRunning = ref(false); const fetchDetail = (id, username) => { return query({ isQueryRunning, query: FLIGHT_DETAIL, variables: {username, id}, }).then(item => flight.value = item); }; const fetch = (username = undefined) => { return query({ isQueryRunning, query: FLIGHTS_LIST, variables: {username} }).then(items => flights.value = items); } const create = (input) => { return mutate({ isMutationRunning, mutation: CREATE_FLIGHT, variables: {input}, }).then(item => { flights.value.push(item); return item; }) } const update = (id, input) => { return mutate({ isMutationRunning, mutation: EDIT_FLIGHT, variables: {id, input} }).then(item => { updateInItems(flights.value, 'id', item); flight.value = item; }) } const destroy = (id) => { return mutate({ isMutationRunning, mutation: DELETE_FLIGHT, variables: {id} }).then(item => deleteFromItems(flights.value, 'id', item)) } return { flight, flights, isMutationRunning, isQueryRunning, fetchDetail, fetch, create, update, destroy } // // actions: { // create(formData) { // delete formData['id']; // return apolloWrapper.mutate(CREATE_FLIGHT, {input: formData}).then(({data}) => { // const flightId = data.createFlight.id; // // // pitomy ohack kvuli tomu, ze se mi nedari dostat z API rovnou informace o nove vytvorenem letadle // this.fetchDetail(flightId).then(flight => { // this.items.push(flight); // }) // // return data.createFlight; // }) // }, // update(id, formData) { // this.isMutationRunning = true; // return apolloWrapper.mutate(EDIT_FLIGHT, {id: id, input: formData}).then(({data}) => { // const flight = data.editFlight; // updateInItems(this.items, "id", flight); // // return flight; // }).finally(() => this.isMutationRunning = false); // }, // fetchDetail(id, username = null) { // if (typeof id !== "number") { // id = parseInt(id); // } // return apolloWrapper.query(FLIGHT_DETAIL, {id, username}).then(result => result.data.flight); // }, // fetch(username = null) { // return apolloWrapper // .query(FLIGHTS_LIST, {username}) // .then((resp) => { // const data = resp.data; // this.items = data.flights; // return data.flights; // }).catch(err => console.log(err)); // }, // delete(id) { // return apolloWrapper.mutate(DELETE_FLIGHT, {id}).then(({data}) => { // // const idx = this.items.indexOf(this.items.find(f => f.id === id)); // this.items.splice(idx, 1); // // return data.deleteFlight; // }) // }, // }, });