var Connection = require ('./connection'); module.exports = new Class ({ Extends: Vn.Object ,Tag: 'db-query' ,Properties: { /** * The connection used to execute the statement. **/ conn: { type: Connection ,set: function (x) { this._conn = x; this.onChange (); } ,get: function () { return this._conn; } }, /** * The model query. **/ query: { type: String ,set: function (x) { this._stmt = new Sql.String ({query: x}); this.onChange (); } ,get: function () { return this._stmt.render (null); } }, /** * The model select statement. **/ stmt: { type: Sql.Stmt ,set: function (x) { this._stmt = x; this.onChange (); } ,get: function () { return this._stmt; } }, /** * The batch used to execute the statement. **/ batch: { type: Sql.Batch ,set: function (x) { this.link ({_batch: x}, {'changed': this.onChange}); this.onChange (); } ,get: function () { return this._batch; } }, /** * Wether to execute automatically de query que it's ready. **/ autoLoad: { type: Boolean, value: false } } ,initialize: function (props) { this.parent (props); } ,appendChild: function (child) { if (child.nodeType === Node.TEXT_NODE) this.query = child.textContent; } ,loadXml: function (builder, node) { this.parent (builder, node); var query = node.firstChild.nodeValue; if (query) this.query = query; } ,execute: function () { this._conn.execStmt (this._stmt, this.onQueryDone.bind (this), this._batch); } ,onQueryDone: function (resultSet) { this.signalEmit ('ready', resultSet); } ,onChange: function () { if (this.autoLoad && this._conn && this._stmt && this._batch) this.execute (); } });