const Model = require('flitter-orm/src/model/Model')
const uuid = require('uuid/v4')

/*
 * ColumnDef Model
 * -------------------------------------------------------------
 * Put some description here!
 */
class ColumnDef extends Model {
    static get schema() {
        // Return a flitter-orm schema here.
        return {
            headerName: String,
            field: String,
            DatabaseId: String,
            UUID: { type: String, default: () => uuid() },
            Type: { type: String, default: 'text' }, // text, number for now
            additionalData: { type: String, default: '{}' }
        }
    }
    
    // Static and instance methods can go here
    data_get(key) {
        return JSON.parse(this.additionalData ? this.additionalData : '{}')[key]
    }

    data_set(key, value) {
        const json = JSON.parse(this.additionalData ? this.additionalData : '{}')
        json[key] = value
        this.additionalData = JSON.stringify(json)
    }

    data() {
        return JSON.parse(this.additionalData ? this.additionalData : '{}')
    }

    to_api_object() {
        return {
            name: this.headerName,
            uuid: this.UUID,
            database_id: this.DatabaseId,
            type: this.Type,
            metadata: this.data()
        }
    }
}

module.exports = exports = ColumnDef
