多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.3 KiB

const jobsState = createGlobalState(() => {
const baseJobs = ref<Record<string, JobType[]>>({})
return { baseJobs }
})
interface JobType {
id: string
job: string
status: string
result: Record<string, any>
fk_user_id: string
fk_workspace_id: string
base_id: string
created_at: Date
updated_at: Date
extension_id: string
}
export const useJobs = createSharedComposable(() => {
const { baseJobs } = jobsState()
const { $api } = useNuxtApp()
const { base } = storeToRefs(useBase())
const activeBaseJobs = computed(() => {
if (!base.value || !base.value.id) {
return null
}
return baseJobs.value[base.value.id]
})
const jobList = computed<JobType[]>(() => {
return activeBaseJobs.value || []
})
const getJobsForBase = (baseId: string) => {
return baseJobs.value[baseId] || []
}
const loadJobsForBase = async (baseId?: string) => {
if (!baseId) {
baseId = base.value.id
if (!baseId) {
return
}
}
const jobs: JobType[] = await $api.jobs.list(baseId, {})
if (baseJobs.value[baseId]) {
baseJobs.value[baseId] = jobs || baseJobs.value[baseId]
} else {
baseJobs.value[baseId] = jobs || []
}
}
return {
jobList,
loadJobsForBase,
getJobsForBase,
}
})