Source: model.js

const Logger = require('../../logger.js');
const DataTypes = require('./types.js');

/**
 * @class Model
 * @classdesc The Model class is used to create a model instance.
 * @param {string} name - The name of the model
 * @param {object} properties - The properties of the model
 * @param {boolean} dummy - Whether or not the model is a dummy model
 */
class Model {
    constructor(name, properties, dummy = false) {
        this.name = name;
        this.properties = properties;
        this.dummy = dummy;

        if (dummy)
            Logger.Database(`Model ${name} is dummy: ${dummy}`);
        
        Logger.Database(`Model ${name} created, with properties: ${JSON.stringify(properties)}`);
    }

    /**
     * @function property
     * @description Gets a property from the model
     * @param {string} name - The name of the target property
     */
    property(name, referer = "") {
        if (this.dummy)
        {
            if (this.properties[name]) {
                this.properties[name].referers.push(referer);
            }
            this.properties[name] = {
                type: DataTypes.INHERET,
                referers: [referer],
                constraints: [],
                dummy: true
            }
            return "UNRESOVLED PROPERTY";
        }
        return this.property[name];
    }
}

module.exports = Model;