47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
import _ from 'lodash';
|
|
import { Document } from '../models';
|
|
import presentDocument from './document';
|
|
|
|
async function present(ctx, collection, includeRecentDocuments = false) {
|
|
ctx.cache.set(collection.id, collection);
|
|
|
|
const data = {
|
|
id: collection.id,
|
|
url: collection.getUrl(),
|
|
name: collection.name,
|
|
description: collection.description,
|
|
type: collection.type,
|
|
createdAt: collection.createdAt,
|
|
updatedAt: collection.updatedAt,
|
|
};
|
|
|
|
if (collection.type === 'atlas')
|
|
data.navigationTree = collection.navigationTree;
|
|
|
|
if (includeRecentDocuments) {
|
|
const documents = await Document.findAll({
|
|
where: {
|
|
atlasId: collection.id,
|
|
},
|
|
limit: 10,
|
|
order: [['updatedAt', 'DESC']],
|
|
});
|
|
|
|
const recentDocuments = [];
|
|
await Promise.all(
|
|
documents.map(async document => {
|
|
recentDocuments.push(
|
|
await presentDocument(ctx, document, {
|
|
includeCollaborators: true,
|
|
})
|
|
);
|
|
})
|
|
);
|
|
data.recentDocuments = _.orderBy(recentDocuments, ['updatedAt'], ['desc']);
|
|
}
|
|
|
|
return data;
|
|
}
|
|
|
|
export default present;
|