summaryrefslogtreecommitdiff
path: root/school/node_modules/pronote-api/src/data/id.js
blob: 2c3c2d3483f7869f5db42bae2724520b3df923e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const { h64 } = require('xxhashjs');

function withId(obj, fields, extraData)
{
    const result = {};
    for (const field of fields) {
        result[field] = obj[field];
    }

    if (extraData) {
        result.__extraData = extraData;
    }

    return {
        id: h64(JSON.stringify(result), 0).toString(16),
        ...obj
    };
}

function checkDuplicates(objs)
{
    for (const obj of objs) {
        const duplicates = objs.filter(o => o.id === obj.id);

        if (duplicates.length > 1) {
            duplicates.forEach((d, i) => d.id = d.id.substring(0, d.id.length - 1) + i);
        }
    }

    return objs;
}

module.exports = { withId, checkDuplicates };