File: /var/dev/farhangmoaser/web/models/longText.js
"use strict";
var md5 = require('md5');
var uuid = require('uuid');
// var mysql = require('../connectors/mysql').client();
class LongTextModel {
	/**
	 * Constructor
	 * @param  {object} conn db connection from db pool.
	 * @param  {Object} data values for table fields.
	 *                       At least on of `title` or `id` must be set.
	 */
	constructor(conn, data) {
		this.data = data;
		this.conn = conn;
	}
	field(key, value) {
		if(arguments.length==0) return;
		if(arguments.length==1)
			return this.data[key];
		
		if(value===undefined)
			delete this.data[key];
		else
			this.data[key] = value;
	}
	fields(){
		return this.data;
	}
	save() {
		if(this.data.id) return this.update();
		else return this.add();
	}
	update() {
		var self = this;
		return new Promise(function(resolve, reject){
			if(!self.data.hasOwnProperty('id'))
				return reject('id is required.');
			self.conn.query("UPDATE long_text SET ? where ?", [{content: self.data.content}, {id: self.data.id}], function(err, result){
				if(err) return reject('db error.');
				resolve(self);
			});
		});
	}
	add() {
		var self = this;
		return new Promise(function(resolve, reject){
			if(!self.data.content)
				return reject('content field is required.');
			self.conn.query(`INSERT INTO long_text SET ?`, {content: self.data.content}, function(err, result){
				if(err) return reject('db error.');
				self.data.id = result.insertId;
				resolve(self);
			});
		});
	}
	load() {
		var self = this;
		return new Promise(function(resolve, reject){
			if(self.data.hasOwnProperty('id')) {
				if(!self.data.id) return resolve(self);
				self.conn.query(`SELECT * FROM long_text WHERE ?`, {id: self.data.id}, function(err, rows, fields){
					if (err) return reject(err.message);
					self.data = rows[0];
					resolve(self);
				});
			}else
				return reject('At least on of the id and title fields must be provided.');
		});
	}
	remove() {
		var self = this;
		return new Promise(function(resolve, reject){
			if(!self.data.hasOwnProperty('id')) return reject('id is required.');
			self.conn.query(`DELETE FROM long_text WHERE ?`, {id: self.data.id}, function(err, rows, fields){
				if(err) return reject(err.message);
				resolve(self);
			});
		});
	}
}
module.exports = LongTextModel;