All files Courses.js

100% Statements 81/81
100% Branches 57/57
100% Functions 41/41
100% Lines 81/81

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 821x 1x 1x 1x 40x 40x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 10x 10x 10x 10x 10x 10x 10x 10x 5x 5x 5x 5x 5x 5x 5x 5x 10x 10x 1x 1x 15x 15x 15x 15x 15x 15x 15x 15x 10x 10x 10x 10x 10x 10x 10x 5x 5x 5x 5x 5x 5x 5x 5x 10x 10x 15x 15x 1x  
export default class Courses {
    #client;
 
    constructor(client) {
        this.#client = client;
    }
 
    get(id = null)  { return id ? this.#client.get(`/courses/${id}`) : this.#client.get('/courses'); }
    create(data)    { return this.#client.put('/courses', data); }
    edit(id, data)  { return this.#client.patch(`/courses/${id}`, data); }
    delete(id)      { return this.#client.del(`/courses/${id}`); }
 
    dates(courseId) {
        const base = `/courses/${courseId}/dates`;
        return {
            get:    (id = null) => id ? this.#client.get(`${base}/${id}`) : this.#client.get(base),
            create: (data)      => this.#client.put(base, data),
            edit:   (id, data)  => this.#client.patch(`${base}/${id}`, data),
            delete: (id)        => this.#client.del(`${base}/${id}`),
        };
    }
 
    sessions(courseId) {
        const base = `/courses/${courseId}/sessions`;
        return {
            get:    (id = null) => id ? this.#client.get(`${base}/${id}`) : this.#client.get(base),
            create: (data)      => this.#client.put(base, data),
            edit:   (id, data)  => this.#client.patch(`${base}/${id}`, data),
            delete: (id)        => this.#client.del(`${base}/${id}`),
        };
    }
 
    premiums(courseId) {
        const client = this.#client;
        const base = `/courses/${courseId}/premiums`;
        return {
            get:    (id = null) => id ? client.get(`${base}/${id}`) : client.get(base),
            create: (data)      => client.put(base, data),
            edit:   (id, data)  => client.patch(`${base}/${id}`, data),
            delete: (id)        => client.del(`${base}/${id}`),
            items:  (premiumId) => {
                const iBase = `${base}/${premiumId}/items`;
                return {
                    get:    (id = null) => id ? client.get(`${iBase}/${id}`) : client.get(iBase),
                    create: (data)      => client.put(iBase, data),
                    edit:   (id, data)  => client.patch(`${iBase}/${id}`, data),
                    delete: (id)        => client.del(`${iBase}/${id}`),
                };
            },
        };
    }
 
    levels(courseId) {
        const client = this.#client;
        const base = `/courses/${courseId}/levels`;
        return {
            get:    (id = null) => id ? client.get(`${base}/${id}`) : client.get(base),
            create: (data)      => client.put(base, data),
            edit:   (id, data)  => client.patch(`${base}/${id}`, data),
            delete: (id)        => client.del(`${base}/${id}`),
            lessons: (levelId) => {
                const lBase = `${base}/${levelId}/lessons`;
                return {
                    get:    (id = null) => id ? client.get(`${lBase}/${id}`) : client.get(lBase),
                    create: (data)      => client.put(lBase, data),
                    edit:   (id, data)  => client.patch(`${lBase}/${id}`, data),
                    delete: (id)        => client.del(`${lBase}/${id}`),
                    materials: (lessonId) => {
                        const mBase = `${lBase}/${lessonId}/materials`;
                        return {
                            get:    (id = null) => id ? client.get(`${mBase}/${id}`) : client.get(mBase),
                            create: (data)      => client.put(mBase, data),
                            edit:   (id, data)  => client.patch(`${mBase}/${id}`, data),
                            delete: (id)        => client.del(`${mBase}/${id}`),
                        };
                    },
                };
            },
        };
    }
}