invy/frontend/src/api/api.js
2025-12-31 01:59:48 +02:00

83 lines
2.3 KiB
JavaScript

import axios from 'axios'
const API_BASE_URL = window.ENV?.VITE_API_URL || import.meta.env.VITE_API_URL || 'http://localhost:8000'
const api = axios.create({
baseURL: API_BASE_URL,
headers: {
'Content-Type': 'application/json',
},
})
// Guest API calls
export const getGuests = async () => {
const response = await api.get('/guests/')
return response.data
}
export const getGuest = async (id) => {
const response = await api.get(`/guests/${id}`)
return response.data
}
export const createGuest = async (guest) => {
const response = await api.post('/guests/', guest)
return response.data
}
export const updateGuest = async (id, guest) => {
const response = await api.put(`/guests/${id}`, guest)
return response.data
}
export const deleteGuest = async (id) => {
const response = await api.delete(`/guests/${id}`)
return response.data
}
export const deleteGuestsBulk = async (guestIds) => {
const response = await api.post('/guests/bulk-delete', guestIds)
return response.data
}
export const undoImport = async (owner) => {
const response = await api.delete(`/guests/undo-import/${encodeURIComponent(owner)}`)
return response.data
}
export const getOwners = async () => {
const response = await api.get('/guests/owners/')
return response.data
}
export const searchGuests = async ({ query = '', rsvpStatus = '', mealPreference = '', owner = '' }) => {
const params = new URLSearchParams()
if (query) params.append('query', query)
if (rsvpStatus) params.append('rsvp_status', rsvpStatus)
if (mealPreference) params.append('meal_preference', mealPreference)
if (owner) params.append('owner', owner)
const response = await api.get(`/guests/search/?${params.toString()}`)
return response.data
}
export const importGoogleContacts = async (accessToken) => {
const response = await api.post('/import/google', null, {
params: { access_token: accessToken }
})
return response.data
}
// Public endpoints for guest self-service
export const getGuestByPhone = async (phoneNumber) => {
const response = await api.get(`/public/guest/${encodeURIComponent(phoneNumber)}`)
return response.data
}
export const updateGuestByPhone = async (phoneNumber, guestData) => {
const response = await api.put(`/public/guest/${encodeURIComponent(phoneNumber)}`, guestData)
return response.data
}
export default api