MCPcopy
hub / github.com/sequelize/sequelize / _run

Method _run

lib/dialects/mssql/query.js:47–116  ·  view source on GitHub ↗
(connection, sql, parameters, errStack)

Source from the content-addressed store, hash-verified

45 }
46
47 async _run(connection, sql, parameters, errStack) {
48 this.sql = sql;
49 const { options } = this;
50
51 const complete = this._logQuery(sql, debug, parameters);
52
53 const query = new Promise((resolve, reject) => {
54 // TRANSACTION SUPPORT
55 if (sql.startsWith('BEGIN TRANSACTION')) {
56 return connection.beginTransaction(error => error ? reject(error) : resolve([]), options.transaction.name, connection.lib.ISOLATION_LEVEL[options.isolationLevel]);
57 }
58 if (sql.startsWith('COMMIT TRANSACTION')) {
59 return connection.commitTransaction(error => error ? reject(error) : resolve([]));
60 }
61 if (sql.startsWith('ROLLBACK TRANSACTION')) {
62 return connection.rollbackTransaction(error => error ? reject(error) : resolve([]), options.transaction.name);
63 }
64 if (sql.startsWith('SAVE TRANSACTION')) {
65 return connection.saveTransaction(error => error ? reject(error) : resolve([]), options.transaction.name);
66 }
67
68 const rows = [];
69 const request = new connection.lib.Request(sql, (err, rowCount) => err ? reject(err) : resolve([rows, rowCount]));
70
71 if (parameters) {
72 _.forOwn(parameters, (value, key) => {
73 const paramType = this.getSQLTypeFromJsType(value, connection.lib.TYPES);
74 request.addParameter(key, paramType.type, value, paramType.typeOptions);
75 });
76 }
77
78 request.on('row', columns => {
79 rows.push(columns);
80 });
81
82 connection.execSql(request);
83 });
84
85 let rows, rowCount;
86
87 try {
88 [rows, rowCount] = await query;
89 } catch (err) {
90 err.sql = sql;
91 err.parameters = parameters;
92
93 throw this.formatError(err, errStack);
94 }
95
96 complete();
97
98 if (Array.isArray(rows)) {
99 rows = rows.map(columns => {
100 const row = {};
101 for (const column of columns) {
102 const typeid = column.metadata.type.id;
103 const parse = parserStore.get(typeid);
104 let value = column.value;

Callers 1

runMethod · 0.95

Calls 8

getSQLTypeFromJsTypeMethod · 0.95
formatErrorMethod · 0.95
formatResultsMethod · 0.95
_logQueryMethod · 0.80
commitTransactionMethod · 0.80
rollbackTransactionMethod · 0.80
getMethod · 0.65
parseFunction · 0.50

Tested by

no test coverage detected