"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
Object.defineProperty(exports, "CustomGcodeService", {
    enumerable: true,
    get: function() {
        return CustomGcodeService;
    }
});
const _models = require("../../models");
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
class CustomGcodeService {
    toDto(document) {
        return {
            id: document.id,
            name: document.name,
            description: document.description,
            gcode: [
                ...document.gcode
            ]
        };
    }
    async get(gcodeScriptId) {
        const document = await _models.CustomGcode.findById(gcodeScriptId);
        if (!document) throw new _runtimeexceptions.NotFoundException(`Custom GCode script with provided id does not exist`);
        return document;
    }
    async list() {
        return _models.CustomGcode.find();
    }
    async create(gcodeScript) {
        return _models.CustomGcode.create(gcodeScript);
    }
    async delete(gcodeScriptId, throwIfNotFound) {
        const gcode = await this.get(gcodeScriptId);
        await _models.CustomGcode.findByIdAndDelete(gcode.id);
    }
    async update(gcodeScriptId, updatedData) {
        const customGcode = await this.get(gcodeScriptId);
        customGcode.name = updatedData.name;
        customGcode.description = updatedData.description;
        customGcode.gcode = updatedData.gcode;
        return await customGcode.save();
    }
}

//# sourceMappingURL=custom-gcode.service.js.map