refactor: documents interfaces
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -6,11 +6,11 @@ import { ref, computed, readonly } from 'vue'
|
||||
import { defineStore } from 'pinia'
|
||||
import { collectionService } from '../services/collectionService'
|
||||
import type {
|
||||
SourceSelector,
|
||||
CollectionIdentifier,
|
||||
ServiceIdentifier,
|
||||
ListFilter,
|
||||
ListSort,
|
||||
CollectionMutableProperties,
|
||||
CollectionDeleteResponse,
|
||||
} from '../types'
|
||||
import { CollectionObject } from '../models/collection'
|
||||
|
||||
@@ -71,7 +71,7 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
}
|
||||
|
||||
// Actions
|
||||
async function list(sources?: SourceSelector, filter?: ListFilter, sort?: ListSort): Promise<Record<string, CollectionObject>> {
|
||||
async function list(sources?: (ServiceIdentifier | CollectionIdentifier)[], filter?: ListFilter, sort?: ListSort): Promise<Record<string, CollectionObject>> {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.list({ sources, filter, sort })
|
||||
@@ -101,7 +101,7 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
async function fetch(provider: string, service: string | number, identifier: string | number): Promise<CollectionObject> {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.fetch({ provider, service, collection: identifier })
|
||||
const response = await collectionService.fetch({ targets: [`${provider}:${service}:${identifier}`] })
|
||||
const key = identifierKey(response.provider, response.service, response.identifier)
|
||||
_collections.value[key] = response
|
||||
|
||||
@@ -115,10 +115,10 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
}
|
||||
}
|
||||
|
||||
async function extant(sources: SourceSelector) {
|
||||
async function extant(targets: CollectionIdentifier[]) {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.extant({ sources })
|
||||
const response = await collectionService.extant({ targets })
|
||||
console.debug('[Documents Manager][Store] - Successfully checked collection availability')
|
||||
return response
|
||||
} catch (error: any) {
|
||||
@@ -137,7 +137,10 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
): Promise<CollectionObject> {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.create({ provider, service, collection, properties })
|
||||
const target: CollectionIdentifier | undefined = collection !== null && collection !== undefined && collection !== ''
|
||||
? `${provider}:${service}:${collection}`
|
||||
: undefined
|
||||
const response = await collectionService.create({ provider, service: String(service), target, properties })
|
||||
const key = identifierKey(response.provider, response.service, response.identifier)
|
||||
_collections.value[key] = response
|
||||
|
||||
@@ -159,7 +162,7 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
): Promise<CollectionObject> {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.update({ provider, service, identifier, properties })
|
||||
const response = await collectionService.update({ target: `${provider}:${service}:${identifier}`, properties })
|
||||
const key = identifierKey(response.provider, response.service, response.identifier)
|
||||
_collections.value[key] = response
|
||||
|
||||
@@ -173,17 +176,18 @@ export const useCollectionsStore = defineStore('documentsCollectionsStore', () =
|
||||
}
|
||||
}
|
||||
|
||||
async function remove(provider: string, service: string | number, identifier: string | number): Promise<CollectionDeleteResponse> {
|
||||
async function remove(provider: string, service: string | number, identifier: string | number): Promise<{ success: boolean }> {
|
||||
transceiving.value = true
|
||||
try {
|
||||
const response = await collectionService.delete({ provider, service, identifier })
|
||||
if (response.success) {
|
||||
const response = await collectionService.delete({ target: `${provider}:${service}:${identifier}` })
|
||||
const success = response.disposition === 'deleted' || response.disposition === 'moved'
|
||||
if (success) {
|
||||
const key = identifierKey(provider, service, identifier)
|
||||
delete _collections.value[key]
|
||||
}
|
||||
|
||||
console.debug('[Documents Manager][Store] - Successfully deleted collection:', `${provider}:${service}:${identifier}`)
|
||||
return response
|
||||
return { success }
|
||||
} catch (error: any) {
|
||||
console.error('[Documents Manager][Store] - Failed to delete collection:', error)
|
||||
throw error
|
||||
|
||||
Reference in New Issue
Block a user