Structures for atlases

This commit is contained in:
Jori Lallo
2016-06-22 00:01:57 -07:00
parent cbdf6b517d
commit db16e71c5e
5 changed files with 198 additions and 224 deletions

View File

@ -30,28 +30,37 @@ const Atlas = sequelize.define('atlas', {
// },
},
instanceMethods: {
// buildUrl() {
// const slugifiedTitle = slug(this.title);
// return `${slugifiedTitle}-${this.urlId}`;
// }
async buildStructure() {
// TODO
const getNodeForDocument = async (document) => {
const children = await Document.findAll({ where: {
parentDocumentId: document.id,
atlasId: this.id,
}});
let childNodes = []
await Promise.all(children.map(async (child) => {
console.log(child.id)
childNodes.push(await getNodeForDocument(child));
}));
return {
name: document.title,
id: document.id,
url: document.getUrl(),
children: childNodes,
};
}
const rootDocument = await Document.findOne({ where: {
parentDocumentForId: null,
parentDocumentId: null,
atlasId: this.id,
}});
return {
name: rootDocument.title,
id: rootDocument.id,
url: rootDocument.getUrl(),
children: null,
}
return await getNodeForDocument(rootDocument);
}
}
});
Atlas.hasMany(Document, { as: 'documents', foreignKey: 'atlasId' });
Atlas.hasOne(Document, { as: 'parentDocument', foreignKey: 'parentDocumentForId', constraints: false });
export default Atlas;