|
1 | 1 | import { ref } from 'vue' |
2 | 2 | import { ensure } from './utils/ensure' |
3 | | -import type { CollectionItemBase, CollectionSource, DatabaseAdapter } from '@nuxt/content' |
| 3 | +import type { CollectionInfo, CollectionItemBase, CollectionSource, DatabaseAdapter } from '@nuxt/content' |
4 | 4 | import type { ContentDatabaseAdapter } from '../types/content' |
5 | 5 | import { getCollectionByFilePath, generateIdFromFsPath, generateRecordDeletion, generateRecordInsert, generateFsPathFromId, getCollectionById } from './utils/collection' |
6 | 6 | import { createCollectionDocument, normalizeDocument } from './utils/document' |
@@ -89,7 +89,7 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH |
89 | 89 | return localDatabaseAdapter!(collection) |
90 | 90 | } |
91 | 91 |
|
92 | | - function useContentCollections() { |
| 92 | + function useContentCollections(): Record<string, CollectionInfo> { |
93 | 93 | return Object.fromEntries( |
94 | 94 | Object.entries(useContent().collections).filter(([, collection]) => { |
95 | 95 | if (!collection.source.length || collection.source.some((source: CollectionSource) => source.repository || (source as unknown as { _custom: boolean })._custom)) { |
@@ -197,12 +197,19 @@ export function useStudioHost(user: StudioUser, repository: Repository): StudioH |
197 | 197 | return normalizeDocument(fsPath, item as DatabaseItem) |
198 | 198 | }, |
199 | 199 | list: async (): Promise<DatabaseItem[]> => { |
200 | | - const collections = Object.keys(useContentCollections()).filter(c => c !== 'info') |
201 | | - const contents = await Promise.all(collections.map(async (collection) => { |
202 | | - return await useContentCollectionQuery(collection).all() as DatabaseItem[] |
| 200 | + const collections = Object.values(useContentCollections()).filter(collection => collection.name !== 'info') |
| 201 | + const documentsByCollection = await Promise.all(collections.map(async (collection) => { |
| 202 | + const documents = await useContentCollectionQuery(collection.name).all() as DatabaseItem[] |
| 203 | + |
| 204 | + return documents.map((document) => { |
| 205 | + const source = getCollectionSourceById(document.id, collection.source) |
| 206 | + const fsPath = generateFsPathFromId(document.id, source!) |
| 207 | + |
| 208 | + return normalizeDocument(fsPath, document) |
| 209 | + }) |
203 | 210 | })) |
204 | 211 |
|
205 | | - return contents.flat() |
| 212 | + return documentsByCollection.flat() |
206 | 213 | }, |
207 | 214 | create: async (fsPath: string, content: string) => { |
208 | 215 | const collections = useContentCollections() |
|
0 commit comments