UNPKG

payload-kanban-board

Version:
30 lines (29 loc) 1.18 kB
import { LexoRank } from 'lexorank'; /** * Generates the initial 'Lexorank'/orderRank based on the last known document in the same status. */ const generateOrderRank = async ({ data, req })=>{ const { payload, collection } = req// Type assertion ; // Skip if no collection, or if kanbanOrderRank already exists, or no kanbanStatus if (!collection || data.kanbanOrderRank || !data.kanbanStatus) { return data; } // Fetch the last document with the same kanbanStatus, sorted by kanbanOrderRank const collectionData = await payload.find({ collection: collection.slug, where: { kanbanStatus: { equals: data.kanbanStatus } }, sort: '-kanbanOrderRank', limit: 1 }); const lastOrderRank = collectionData.docs[0]?.kanbanOrderRank ?? null; const lastRank = lastOrderRank && typeof lastOrderRank === 'string' ? LexoRank.parse(lastOrderRank) : LexoRank.min(); const nextRank = lastRank.genNext().genNext(); data.kanbanOrderRank = nextRank.toString(); return data; }; export default generateOrderRank; //# sourceMappingURL=generateOrderRank.js.map