sonamu 0.5.5 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/api/decorators.d.ts +1 -0
  2. package/dist/api/decorators.d.ts.map +1 -1
  3. package/dist/api/decorators.js +1 -1
  4. package/dist/api/decorators.js.map +1 -1
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +1 -1
  7. package/dist/api/sonamu.js.map +1 -1
  8. package/dist/bin/build-config.d.ts +4 -0
  9. package/dist/bin/build-config.d.ts.map +1 -1
  10. package/dist/bin/build-config.js +1 -1
  11. package/dist/bin/build-config.js.map +1 -1
  12. package/dist/bin/cli-wrapper.js +1 -1
  13. package/dist/bin/cli-wrapper.js.map +1 -1
  14. package/dist/database/db.d.ts +3 -0
  15. package/dist/database/db.d.ts.map +1 -1
  16. package/dist/database/db.js +1 -1
  17. package/dist/database/db.js.map +1 -1
  18. package/dist/database/puri-wrapper.d.ts +22 -10
  19. package/dist/database/puri-wrapper.d.ts.map +1 -1
  20. package/dist/database/puri-wrapper.js +1 -1
  21. package/dist/database/puri-wrapper.js.map +1 -1
  22. package/dist/database/puri.d.ts +91 -65
  23. package/dist/database/puri.d.ts.map +1 -1
  24. package/dist/database/puri.js +1 -1
  25. package/dist/database/puri.js.map +1 -1
  26. package/dist/database/puri.types.d.ts +28 -42
  27. package/dist/database/puri.types.d.ts.map +1 -1
  28. package/dist/database/transaction-context.d.ts +3 -3
  29. package/dist/database/transaction-context.d.ts.map +1 -1
  30. package/dist/database/transaction-context.js.map +1 -1
  31. package/dist/templates/service.template.d.ts.map +1 -1
  32. package/dist/templates/service.template.js +1 -1
  33. package/dist/templates/service.template.js.map +1 -1
  34. package/dist/types/types.d.ts +1 -1
  35. package/dist/types/types.d.ts.map +1 -1
  36. package/dist/types/types.js.map +1 -1
  37. package/package.json +1 -2
  38. package/src/api/decorators.ts +14 -5
  39. package/src/api/sonamu.ts +21 -20
  40. package/src/bin/build-config.ts +7 -3
  41. package/src/bin/cli-wrapper.ts +31 -12
  42. package/src/database/db.ts +44 -9
  43. package/src/database/puri-wrapper.ts +104 -26
  44. package/src/database/puri.ts +434 -543
  45. package/src/database/puri.types.ts +99 -200
  46. package/src/database/transaction-context.ts +4 -4
  47. package/src/templates/service.template.ts +10 -1
  48. package/src/types/types.ts +1 -1
  49. package/dist/entity/migrator.d.ts +0 -135
  50. package/dist/entity/migrator.d.ts.map +0 -1
  51. package/dist/entity/migrator.js +0 -2
  52. package/dist/entity/migrator.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"DB",{enumerable:true,get:function(){return DB}});var _knex=/*#__PURE__*/_interop_require_default(require("knex"));var _path=/*#__PURE__*/_interop_require_default(require("path"));var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _api=require("../api");var _soexceptions=require("../exceptions/so-exceptions");var _async_hooks=require("async_hooks");var _transactioncontext=require("./transaction-context");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var DBClass=/*#__PURE__*/function(){"use strict";function DBClass(){_class_call_check(this,DBClass);_define_property(this,"wdb",void 0);_define_property(this,"rdb",void 0);_define_property(this,"transactionStorage",new _async_hooks.AsyncLocalStorage)}_create_class(DBClass,[{key:"runWithTransaction",value:function runWithTransaction(callback){return this.transactionStorage.run(new _transactioncontext.TransactionContext,callback)}},{key:"getTransactionContext",value:function getTransactionContext(){var _this_transactionStorage_getStore;return(_this_transactionStorage_getStore=this.transactionStorage.getStore())!==null&&_this_transactionStorage_getStore!==void 0?_this_transactionStorage_getStore:new _transactioncontext.TransactionContext}},{key:"readKnexfile",value:function readKnexfile(){return _async_to_generator(function(){var dbConfigPath,_knexfileModule_default,knexfileModule,_knexfileModule_default_default,_ref,config,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:dbConfigPath=_path.default.join(_api.Sonamu.apiRootPath,"/dist/configs/db.js");_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,Promise.resolve(dbConfigPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))})];case 2:knexfileModule=_state.sent();config=(_ref=(_knexfileModule_default_default=(_knexfileModule_default=knexfileModule.default)===null||_knexfileModule_default===void 0?void 0:_knexfileModule_default.default)!==null&&_knexfileModule_default_default!==void 0?_knexfileModule_default_default:knexfileModule.default)!==null&&_ref!==void 0?_ref:knexfileModule;return[2,this.generateDBConfig(config)];case 3:e=_state.sent();return[3,4];case 4:throw new _soexceptions.ServiceUnavailableException("다음 경로에서 DB설정 파일을 찾을 수 없습니다: ".concat(dbConfigPath,". 먼저 빌드(yarn build)를 수행해주세요."))}})}).call(this)}},{key:"getDB",value:function getDB(which){var dbConfig=_api.Sonamu.dbConfig;var instanceName=which==="w"?"wdb":"rdb";if(!this[instanceName]){var config;var _process_env_NODE_ENV;switch((_process_env_NODE_ENV=process.env.NODE_ENV)!==null&&_process_env_NODE_ENV!==void 0?_process_env_NODE_ENV:"development"){case"development":case"staging":var _dbConfig_development_slave;config=which==="w"?dbConfig["development_master"]:(_dbConfig_development_slave=dbConfig["development_slave"])!==null&&_dbConfig_development_slave!==void 0?_dbConfig_development_slave:dbConfig["development_master"];break;case"production":var _dbConfig_production_slave;config=which==="w"?dbConfig["production_master"]:(_dbConfig_production_slave=dbConfig["production_slave"])!==null&&_dbConfig_production_slave!==void 0?_dbConfig_production_slave:dbConfig["production_master"];break;case"test":config=dbConfig["test"];break;default:throw new Error("현재 ENV ".concat(process.env.NODE_ENV,"에는 설정 가능한 DB설정이 없습니다."))}this[instanceName]=(0,_knex.default)(config)}return this[instanceName]}},{key:"destroy",value:function destroy(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!(this.wdb!==undefined))return[3,2];return[4,this.wdb.destroy()];case 1:_state.sent();this.wdb=undefined;_state.label=2;case 2:if(!(this.rdb!==undefined))return[3,4];return[4,this.rdb.destroy()];case 3:_state.sent();this.rdb=undefined;_state.label=4;case 4:return[2]}})}).call(this)}},{key:"generateDBConfig",value:function generateDBConfig(config){var _config_defaultOptions,_config_defaultOptions1,_config_defaultOptions2,_config_environments,_config_environments1,_config_environments2,_config_environments3,_config_environments4;var defaultKnexConfig=_lodash.default.merge({client:"mysql2",pool:{min:1,max:5},migrations:{extension:"js",directory:"./dist/migrations"},connection:_object_spread({database:config.database},(_config_defaultOptions=config.defaultOptions)===null||_config_defaultOptions===void 0?void 0:_config_defaultOptions.connection)},config.defaultOptions);var test=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_test")},(_config_defaultOptions1=config.defaultOptions)===null||_config_defaultOptions1===void 0?void 0:_config_defaultOptions1.connection)});var fixture_local=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_fixture_local")},(_config_defaultOptions2=config.defaultOptions)===null||_config_defaultOptions2===void 0?void 0:_config_defaultOptions2.connection)});var devMasterOptions=(_config_environments=config.environments)===null||_config_environments===void 0?void 0:_config_environments.development;var devSlaveOptions=(_config_environments1=config.environments)===null||_config_environments1===void 0?void 0:_config_environments1.development_slave;var development_master=_lodash.default.merge({},defaultKnexConfig,devMasterOptions);var development_slave=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,devSlaveOptions);var fixture_remote=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,{connection:{database:"".concat(config.database,"_fixture_remote")}},(_config_environments2=config.environments)===null||_config_environments2===void 0?void 0:_config_environments2.remote_fixture);var _config_environments_production;var prodMasterOptions=(_config_environments_production=(_config_environments3=config.environments)===null||_config_environments3===void 0?void 0:_config_environments3.production)!==null&&_config_environments_production!==void 0?_config_environments_production:{};var _config_environments_production_slave;var prodSlaveOptions=(_config_environments_production_slave=(_config_environments4=config.environments)===null||_config_environments4===void 0?void 0:_config_environments4.production_slave)!==null&&_config_environments_production_slave!==void 0?_config_environments_production_slave:{};var production_master=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions);var production_slave=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions,prodSlaveOptions);return{test:test,fixture_local:fixture_local,fixture_remote:fixture_remote,development_master:development_master,development_slave:development_slave,production_master:production_master,production_slave:production_slave}}}]);return DBClass}();var DB=new DBClass;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"DB",{enumerable:true,get:function(){return DB}});var _knex=/*#__PURE__*/_interop_require_default(require("knex"));var _path=/*#__PURE__*/_interop_require_default(require("path"));var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _api=require("../api");var _soexceptions=require("../exceptions/so-exceptions");var _async_hooks=require("async_hooks");var _transactioncontext=require("./transaction-context");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var DBClass=/*#__PURE__*/function(){"use strict";function DBClass(){_class_call_check(this,DBClass);_define_property(this,"wdb",void 0);_define_property(this,"rdb",void 0);_define_property(this,"transactionStorage",new _async_hooks.AsyncLocalStorage);_define_property(this,"testTransaction",null)}_create_class(DBClass,[{key:"runWithTransaction",value:function runWithTransaction(callback){return this.transactionStorage.run(new _transactioncontext.TransactionContext,callback)}},{key:"getTransactionContext",value:function getTransactionContext(){var _this_transactionStorage_getStore;return(_this_transactionStorage_getStore=this.transactionStorage.getStore())!==null&&_this_transactionStorage_getStore!==void 0?_this_transactionStorage_getStore:new _transactioncontext.TransactionContext}},{key:"readKnexfile",value:function readKnexfile(){return _async_to_generator(function(){var dbConfigPath,_knexfileModule_default,knexfileModule,_knexfileModule_default_default,_ref,config,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:dbConfigPath=_path.default.join(_api.Sonamu.apiRootPath,"/dist/configs/db.js");_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,Promise.resolve(dbConfigPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))})];case 2:knexfileModule=_state.sent();config=(_ref=(_knexfileModule_default_default=(_knexfileModule_default=knexfileModule.default)===null||_knexfileModule_default===void 0?void 0:_knexfileModule_default.default)!==null&&_knexfileModule_default_default!==void 0?_knexfileModule_default_default:knexfileModule.default)!==null&&_ref!==void 0?_ref:knexfileModule;return[2,this.generateDBConfig(config)];case 3:e=_state.sent();return[3,4];case 4:throw new _soexceptions.ServiceUnavailableException("다음 경로에서 DB설정 파일을 찾을 수 없습니다: ".concat(dbConfigPath,". 먼저 빌드(yarn build)를 수행해주세요."))}})}).call(this)}},{key:"getDB",value:function getDB(which){var dbConfig=_api.Sonamu.dbConfig;if(process.env.NODE_ENV==="test"){if(this.testTransaction){return this.testTransaction}else if(this.wdb){return this.wdb}else{this["wdb"]=(0,_knex.default)(_object_spread_props(_object_spread({},dbConfig["test"]),{pool:{min:1,max:1}}));return this["wdb"]}}var instanceName=which==="w"?"wdb":"rdb";if(!this[instanceName]){var config;var _process_env_NODE_ENV;switch((_process_env_NODE_ENV=process.env.NODE_ENV)!==null&&_process_env_NODE_ENV!==void 0?_process_env_NODE_ENV:"development"){case"development":case"staging":var _dbConfig_development_slave;config=which==="w"?dbConfig["development_master"]:(_dbConfig_development_slave=dbConfig["development_slave"])!==null&&_dbConfig_development_slave!==void 0?_dbConfig_development_slave:dbConfig["development_master"];break;case"production":var _dbConfig_production_slave;config=which==="w"?dbConfig["production_master"]:(_dbConfig_production_slave=dbConfig["production_slave"])!==null&&_dbConfig_production_slave!==void 0?_dbConfig_production_slave:dbConfig["production_master"];break;default:throw new Error("현재 ENV ".concat(process.env.NODE_ENV,"에는 설정 가능한 DB설정이 없습니다."))}this[instanceName]=(0,_knex.default)(config)}return this[instanceName]}},{key:"destroy",value:function destroy(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!(this.wdb!==undefined))return[3,2];return[4,this.wdb.destroy()];case 1:_state.sent();this.wdb=undefined;_state.label=2;case 2:if(!(this.rdb!==undefined))return[3,4];return[4,this.rdb.destroy()];case 3:_state.sent();this.rdb=undefined;_state.label=4;case 4:return[2]}})}).call(this)}},{key:"generateDBConfig",value:function generateDBConfig(config){var _config_defaultOptions,_config_defaultOptions1,_config_defaultOptions2,_config_environments,_config_environments1,_config_environments2,_config_environments3,_config_environments4;var defaultKnexConfig=_lodash.default.merge({client:"mysql2",pool:{min:1,max:5},migrations:{extension:"js",directory:"./dist/migrations"},connection:_object_spread({database:config.database},(_config_defaultOptions=config.defaultOptions)===null||_config_defaultOptions===void 0?void 0:_config_defaultOptions.connection)},config.defaultOptions);var test=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_test")},(_config_defaultOptions1=config.defaultOptions)===null||_config_defaultOptions1===void 0?void 0:_config_defaultOptions1.connection)});var fixture_local=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_fixture_local")},(_config_defaultOptions2=config.defaultOptions)===null||_config_defaultOptions2===void 0?void 0:_config_defaultOptions2.connection)});var devMasterOptions=(_config_environments=config.environments)===null||_config_environments===void 0?void 0:_config_environments.development;var devSlaveOptions=(_config_environments1=config.environments)===null||_config_environments1===void 0?void 0:_config_environments1.development_slave;var development_master=_lodash.default.merge({},defaultKnexConfig,devMasterOptions);var development_slave=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,devSlaveOptions);var fixture_remote=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,{connection:{database:"".concat(config.database,"_fixture_remote")}},(_config_environments2=config.environments)===null||_config_environments2===void 0?void 0:_config_environments2.remote_fixture);var _config_environments_production;var prodMasterOptions=(_config_environments_production=(_config_environments3=config.environments)===null||_config_environments3===void 0?void 0:_config_environments3.production)!==null&&_config_environments_production!==void 0?_config_environments_production:{};var _config_environments_production_slave;var prodSlaveOptions=(_config_environments_production_slave=(_config_environments4=config.environments)===null||_config_environments4===void 0?void 0:_config_environments4.production_slave)!==null&&_config_environments_production_slave!==void 0?_config_environments_production_slave:{};var production_master=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions);var production_slave=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions,prodSlaveOptions);return{test:test,fixture_local:fixture_local,fixture_remote:fixture_remote,development_master:development_master,development_slave:development_slave,production_master:production_master,production_slave:production_slave}}},{key:"createTestTransaction",value:function createTestTransaction(){return _async_to_generator(function(){var db,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:db=this.getDB("w");_=this;return[4,db.transaction()];case 1:_.testTransaction=_state.sent();return[2,this.testTransaction]}})}).call(this)}},{key:"clearTestTransaction",value:function clearTestTransaction(){return _async_to_generator(function(){var _this_testTransaction;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(_this_testTransaction=this.testTransaction)===null||_this_testTransaction===void 0?void 0:_this_testTransaction.rollback()];case 1:_state.sent();this.testTransaction=null;return[2]}})}).call(this)}}]);return DBClass}();var DB=new DBClass;
2
2
  //# sourceMappingURL=db.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/db.ts"],"sourcesContent":["export type DBPreset = \"w\" | \"r\";\nimport knex, { Knex } from \"knex\";\nimport path from \"path\";\nimport _ from \"lodash\";\nimport { Sonamu } from \"../api\";\nimport { ServiceUnavailableException } from \"../exceptions/so-exceptions\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { TransactionContext } from \"./transaction-context\";\n\ntype MySQLConfig = Omit<Knex.Config, \"connection\"> & {\n connection?: Knex.MySql2ConnectionConfig;\n};\n\nexport type SonamuDBBaseConfig = {\n // 기본 데이터베이스 이름\n database: string;\n\n // 모든 환경에 적용될 기본 Knex 옵션\n defaultOptions?: MySQLConfig;\n\n // 환경별 설정\n environments?: {\n development?: MySQLConfig;\n development_slave?: MySQLConfig;\n production?: MySQLConfig;\n production_slave?: MySQLConfig;\n remote_fixture?: MySQLConfig;\n };\n};\n\nexport type SonamuDBConfig = {\n development_master: Knex.Config;\n development_slave: Knex.Config;\n test: Knex.Config;\n fixture_local: Knex.Config;\n fixture_remote: Knex.Config;\n production_master: Knex.Config;\n production_slave: Knex.Config;\n};\n\nclass DBClass {\n private wdb?: Knex;\n private rdb?: Knex;\n\n public transactionStorage = new AsyncLocalStorage<TransactionContext>();\n\n public runWithTransaction<T>(callback: () => Promise<T>): Promise<T> {\n return this.transactionStorage.run(new TransactionContext(), callback);\n }\n\n public getTransactionContext(): TransactionContext {\n return this.transactionStorage.getStore() ?? new TransactionContext();\n }\n\n async readKnexfile(): Promise<SonamuDBConfig> {\n const dbConfigPath: string = path.join(\n Sonamu.apiRootPath,\n \"/dist/configs/db.js\"\n );\n try {\n const knexfileModule = await import(dbConfigPath);\n const config =\n knexfileModule.default?.default ??\n knexfileModule.default ??\n knexfileModule;\n return this.generateDBConfig(config);\n } catch {}\n\n throw new ServiceUnavailableException(\n `다음 경로에서 DB설정 파일을 찾을 수 없습니다: ${dbConfigPath}. 먼저 빌드(yarn build)를 수행해주세요.`\n );\n }\n\n getDB(which: DBPreset): Knex {\n const dbConfig = Sonamu.dbConfig;\n\n const instanceName = which === \"w\" ? \"wdb\" : \"rdb\";\n\n if (!this[instanceName]) {\n let config: Knex.Config;\n switch (process.env.NODE_ENV ?? \"development\") {\n case \"development\":\n case \"staging\":\n config =\n which === \"w\"\n ? dbConfig[\"development_master\"]\n : dbConfig[\"development_slave\"] ?? dbConfig[\"development_master\"];\n break;\n case \"production\":\n config =\n which === \"w\"\n ? dbConfig[\"production_master\"]\n : dbConfig[\"production_slave\"] ?? dbConfig[\"production_master\"];\n break;\n case \"test\":\n config = dbConfig[\"test\"];\n break;\n default:\n throw new Error(\n `현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`\n );\n }\n this[instanceName] = knex(config);\n }\n\n return this[instanceName]!;\n }\n\n async destroy(): Promise<void> {\n if (this.wdb !== undefined) {\n await this.wdb.destroy();\n this.wdb = undefined;\n }\n if (this.rdb !== undefined) {\n await this.rdb.destroy();\n this.rdb = undefined;\n }\n }\n\n private generateDBConfig(config: SonamuDBBaseConfig): SonamuDBConfig {\n const defaultKnexConfig: Partial<MySQLConfig> = _.merge(\n {\n client: \"mysql2\",\n pool: {\n min: 1,\n max: 5,\n },\n migrations: {\n extension: \"js\",\n directory: \"./dist/migrations\",\n },\n connection: {\n database: config.database,\n ...config.defaultOptions?.connection,\n },\n },\n config.defaultOptions\n );\n\n // 로컬 환경 설정\n const test: MySQLConfig = _.merge({}, defaultKnexConfig, {\n connection: {\n database: `${config.database}_test`,\n ...config.defaultOptions?.connection,\n },\n });\n\n const fixture_local = _.merge({}, defaultKnexConfig, {\n connection: {\n database: `${config.database}_fixture_local`,\n ...config.defaultOptions?.connection,\n },\n });\n\n // 개발 환경 설정\n const devMasterOptions = config.environments?.development;\n const devSlaveOptions = config.environments?.development_slave;\n const development_master = _.merge({}, defaultKnexConfig, devMasterOptions);\n const development_slave = _.merge(\n {},\n defaultKnexConfig,\n devMasterOptions,\n devSlaveOptions\n );\n // NOTE: fixture remote는 default connection의 DB를 override해선 안됨.\n const fixture_remote = _.merge({}, defaultKnexConfig, devMasterOptions, {\n connection: {\n database: `${config.database}_fixture_remote`,\n },\n }, config.environments?.remote_fixture);\n\n // 프로덕션 환경 설정\n const prodMasterOptions = config.environments?.production ?? {};\n const prodSlaveOptions = config.environments?.production_slave ?? {};\n const production_master = _.merge({}, defaultKnexConfig, prodMasterOptions);\n const production_slave = _.merge(\n {},\n defaultKnexConfig,\n prodMasterOptions,\n prodSlaveOptions\n );\n\n return {\n test,\n fixture_local,\n fixture_remote,\n development_master,\n development_slave,\n production_master,\n production_slave,\n };\n }\n}\nexport const DB = new DBClass();\n"],"names":["DB","DBClass","wdb","rdb","transactionStorage","AsyncLocalStorage","runWithTransaction","callback","run","TransactionContext","getTransactionContext","getStore","readKnexfile","dbConfigPath","knexfileModule","config","path","join","Sonamu","apiRootPath","default","generateDBConfig","ServiceUnavailableException","getDB","which","dbConfig","instanceName","process","env","NODE_ENV","Error","knex","destroy","undefined","defaultKnexConfig","_","merge","client","pool","min","max","migrations","extension","directory","connection","database","defaultOptions","test","fixture_local","devMasterOptions","environments","development","devSlaveOptions","development_slave","development_master","fixture_remote","remote_fixture","prodMasterOptions","production","prodSlaveOptions","production_slave","production_master"],"mappings":"oGAiMaA,4CAAAA,8DAhMc,iEACV,mEACH,4BACS,oCACqB,wDACV,+CACC,klIAiCnC,IAAA,AAAMC,qBAAN,iCAAMA,iCAAAA,SACJ,sBAAQC,MAAR,KAAA,GACA,sBAAQC,MAAR,KAAA,GAEA,sBAAOC,qBAAqB,IAAIC,8BAAiB,gBAJ7CJ,UAMGK,IAAAA,2BAAP,SAAOA,mBAAsBC,QAA0B,EACrD,OAAO,IAAI,CAACH,kBAAkB,CAACI,GAAG,CAAC,IAAIC,sCAAkB,CAAIF,SAC/D,IAEOG,IAAAA,8BAAP,SAAOA,4BACE,kCAAP,MAAO,CAAA,kCAAA,IAAI,CAACN,kBAAkB,CAACO,QAAQ,YAAhC,2CAAA,kCAAsC,IAAIF,sCAAkB,AACrE,IAEMG,IAAAA,qBAAN,SAAMA,yDACEC,aAOFC,wBAFIA,eAEJA,gCAAAA,KADIC,gFANFF,aAAuBG,aAAI,CAACC,IAAI,CACpCC,WAAM,CAACC,WAAW,CAClB,wEAGuB,SAAM,gBAAON,6EAAP,sBAAvBC,eAAiB,cACjBC,OACJD,CAAAA,KAAAA,CAAAA,iCAAAA,wBAAAA,eAAeM,OAAO,UAAtBN,wCAAAA,wBAAwBM,OAAO,UAA/BN,yCAAAA,gCACAA,eAAeM,OAAO,UADtBN,cAAAA,KAEAA,eACF,SAAO,IAAI,CAACO,gBAAgB,CAACN,mDAG/B,MAAM,IAAIO,yCAA2B,CACnC,AAAC,+BAA2C,OAAbT,aAAa,mCAEhD,iBAEAU,IAAAA,cAAAA,SAAAA,MAAMC,KAAe,EACnB,IAAMC,SAAWP,WAAM,CAACO,QAAQ,CAEhC,IAAMC,aAAeF,QAAU,IAAM,MAAQ,MAE7C,GAAI,CAAC,IAAI,CAACE,aAAa,CAAE,CACvB,IAAIX,WACIY,sBAAR,OAAQA,CAAAA,sBAAAA,QAAQC,GAAG,CAACC,QAAQ,UAApBF,+BAAAA,sBAAwB,eAC9B,IAAK,cACL,IAAK,cAIGF,4BAHNV,OACES,QAAU,IACNC,QAAQ,CAAC,qBAAqB,CAC9BA,CAAAA,4BAAAA,QAAQ,CAAC,oBAAoB,UAA7BA,qCAAAA,4BAAiCA,QAAQ,CAAC,qBAAqB,CACrE,KACF,KAAK,iBAIGA,2BAHNV,OACES,QAAU,IACNC,QAAQ,CAAC,oBAAoB,CAC7BA,CAAAA,2BAAAA,QAAQ,CAAC,mBAAmB,UAA5BA,oCAAAA,2BAAgCA,QAAQ,CAAC,oBAAoB,CACnE,KACF,KAAK,OACHV,OAASU,QAAQ,CAAC,OAAO,CACzB,KACF,SACE,MAAM,IAAIK,MACR,AAAC,UAA8B,OAArBH,QAAQC,GAAG,CAACC,QAAQ,CAAC,yBAErC,CACA,IAAI,CAACH,aAAa,CAAGK,GAAAA,aAAI,EAAChB,OAC5B,CAEA,OAAO,IAAI,CAACW,aAAa,AAC3B,IAEMM,IAAAA,gBAAN,SAAMA,2HACA,CAAA,IAAI,CAAC9B,GAAG,GAAK+B,SAAQ,EAArB,YACF,SAAM,IAAI,CAAC/B,GAAG,CAAC8B,OAAO,WAAtB,aACA,CAAA,IAAI,CAAC9B,GAAG,CAAG+B,oCAET,CAAA,IAAI,CAAC9B,GAAG,GAAK8B,SAAQ,EAArB,YACF,SAAM,IAAI,CAAC9B,GAAG,CAAC6B,OAAO,WAAtB,aACA,CAAA,IAAI,CAAC7B,GAAG,CAAG8B,4CAEf,iBAEQZ,IAAAA,yBAAR,SAAQA,iBAAiBN,MAA0B,MAcxCA,uBAUFA,wBAOAA,wBAKkBA,qBACDA,sBAarBA,sBAGuBA,sBACDA,sBArDzB,IAAMmB,kBAA0CC,eAAC,CAACC,KAAK,CACrD,CACEC,OAAQ,SACRC,KAAM,CACJC,IAAK,EACLC,IAAK,CACP,EACAC,WAAY,CACVC,UAAW,KACXC,UAAW,mBACb,EACAC,WAAY,gBACVC,SAAU9B,OAAO8B,QAAQ,GACtB9B,uBAAAA,OAAO+B,cAAc,UAArB/B,uCAAAA,uBAAuB6B,UAAU,CAExC,EACA7B,OAAO+B,cAAc,EAIvB,IAAMC,KAAoBZ,eAAC,CAACC,KAAK,CAAC,CAAC,EAAGF,kBAAmB,CACvDU,WAAY,gBACVC,SAAU,AAAC,GAAkB,OAAhB9B,OAAO8B,QAAQ,CAAC,WAC1B9B,wBAAAA,OAAO+B,cAAc,UAArB/B,wCAAAA,wBAAuB6B,UAAU,CAExC,GAEA,IAAMI,cAAgBb,eAAC,CAACC,KAAK,CAAC,CAAC,EAAGF,kBAAmB,CACnDU,WAAY,gBACVC,SAAU,AAAC,GAAkB,OAAhB9B,OAAO8B,QAAQ,CAAC,oBAC1B9B,wBAAAA,OAAO+B,cAAc,UAArB/B,wCAAAA,wBAAuB6B,UAAU,CAExC,GAGA,IAAMK,kBAAmBlC,qBAAAA,OAAOmC,YAAY,UAAnBnC,qCAAAA,qBAAqBoC,WAAW,CACzD,IAAMC,iBAAkBrC,sBAAAA,OAAOmC,YAAY,UAAnBnC,sCAAAA,sBAAqBsC,iBAAiB,CAC9D,IAAMC,mBAAqBnB,eAAC,CAACC,KAAK,CAAC,CAAC,EAAGF,kBAAmBe,kBAC1D,IAAMI,kBAAoBlB,eAAC,CAACC,KAAK,CAC/B,CAAC,EACDF,kBACAe,iBACAG,iBAGF,IAAMG,eAAiBpB,eAAC,CAACC,KAAK,CAAC,CAAC,EAAGF,kBAAmBe,iBAAkB,CACtEL,WAAY,CACVC,SAAU,AAAC,GAAkB,OAAhB9B,OAAO8B,QAAQ,CAAC,kBAC/B,CACF,GAAG9B,sBAAAA,OAAOmC,YAAY,UAAnBnC,sCAAAA,sBAAqByC,cAAc,MAGZzC,gCAA1B,IAAM0C,kBAAoB1C,CAAAA,iCAAAA,sBAAAA,OAAOmC,YAAY,UAAnBnC,sCAAAA,sBAAqB2C,UAAU,UAA/B3C,yCAAAA,gCAAmC,CAAC,MACrCA,sCAAzB,IAAM4C,iBAAmB5C,CAAAA,uCAAAA,sBAAAA,OAAOmC,YAAY,UAAnBnC,sCAAAA,sBAAqB6C,gBAAgB,UAArC7C,+CAAAA,sCAAyC,CAAC,EACnE,IAAM8C,kBAAoB1B,eAAC,CAACC,KAAK,CAAC,CAAC,EAAGF,kBAAmBuB,mBACzD,IAAMG,iBAAmBzB,eAAC,CAACC,KAAK,CAC9B,CAAC,EACDF,kBACAuB,kBACAE,kBAGF,MAAO,CACLZ,KAAAA,KACAC,cAAAA,cACAO,eAAAA,eACAD,mBAAAA,mBACAD,kBAAAA,kBACAQ,kBAAAA,kBACAD,iBAAAA,gBACF,CACF,YAvJI3D,WAyJC,IAAMD,GAAK,IAAIC"}
1
+ {"version":3,"sources":["../../src/database/db.ts"],"sourcesContent":["export type DBPreset = \"w\" | \"r\";\nimport knex, { Knex } from \"knex\";\nimport path from \"path\";\nimport _ from \"lodash\";\nimport { Sonamu } from \"../api\";\nimport { ServiceUnavailableException } from \"../exceptions/so-exceptions\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport { TransactionContext } from \"./transaction-context\";\n\ntype MySQLConfig = Omit<Knex.Config, \"connection\"> & {\n connection?: Knex.MySql2ConnectionConfig;\n};\n\nexport type SonamuDBBaseConfig = {\n // 기본 데이터베이스 이름\n database: string;\n\n // 모든 환경에 적용될 기본 Knex 옵션\n defaultOptions?: MySQLConfig;\n\n // 환경별 설정\n environments?: {\n development?: MySQLConfig;\n development_slave?: MySQLConfig;\n production?: MySQLConfig;\n production_slave?: MySQLConfig;\n remote_fixture?: MySQLConfig;\n };\n};\n\nexport type SonamuDBConfig = {\n development_master: Knex.Config;\n development_slave: Knex.Config;\n test: Knex.Config;\n fixture_local: Knex.Config;\n fixture_remote: Knex.Config;\n production_master: Knex.Config;\n production_slave: Knex.Config;\n};\n\nclass DBClass {\n private wdb?: Knex;\n private rdb?: Knex;\n\n public transactionStorage = new AsyncLocalStorage<TransactionContext>();\n\n public runWithTransaction<T>(callback: () => Promise<T>): Promise<T> {\n return this.transactionStorage.run(new TransactionContext(), callback);\n }\n\n public getTransactionContext(): TransactionContext {\n return this.transactionStorage.getStore() ?? new TransactionContext();\n }\n\n async readKnexfile(): Promise<SonamuDBConfig> {\n const dbConfigPath: string = path.join(\n Sonamu.apiRootPath,\n \"/dist/configs/db.js\"\n );\n try {\n const knexfileModule = await import(dbConfigPath);\n const config =\n knexfileModule.default?.default ??\n knexfileModule.default ??\n knexfileModule;\n return this.generateDBConfig(config);\n } catch {}\n\n throw new ServiceUnavailableException(\n `다음 경로에서 DB설정 파일을 찾을 수 없습니다: ${dbConfigPath}. 먼저 빌드(yarn build)를 수행해주세요.`\n );\n }\n\n getDB(which: DBPreset): Knex {\n const dbConfig = Sonamu.dbConfig;\n\n // 테스트 트랜잭션 격리\n if (process.env.NODE_ENV === \"test\") {\n if (this.testTransaction) {\n return this.testTransaction;\n } else if (this.wdb) {\n return this.wdb;\n } else {\n this[\"wdb\"] = knex({\n ...dbConfig[\"test\"],\n // 단일 풀\n pool: {\n min: 1,\n max: 1,\n },\n });\n return this[\"wdb\"];\n }\n }\n\n const instanceName = which === \"w\" ? \"wdb\" : \"rdb\";\n\n if (!this[instanceName]) {\n let config: Knex.Config;\n switch (process.env.NODE_ENV ?? \"development\") {\n case \"development\":\n case \"staging\":\n config =\n which === \"w\"\n ? dbConfig[\"development_master\"]\n : (dbConfig[\"development_slave\"] ??\n dbConfig[\"development_master\"]);\n break;\n case \"production\":\n config =\n which === \"w\"\n ? dbConfig[\"production_master\"]\n : (dbConfig[\"production_slave\"] ?? dbConfig[\"production_master\"]);\n break;\n default:\n throw new Error(\n `현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`\n );\n }\n this[instanceName] = knex(config);\n }\n\n return this[instanceName]!;\n }\n\n async destroy(): Promise<void> {\n if (this.wdb !== undefined) {\n await this.wdb.destroy();\n this.wdb = undefined;\n }\n if (this.rdb !== undefined) {\n await this.rdb.destroy();\n this.rdb = undefined;\n }\n }\n\n private generateDBConfig(config: SonamuDBBaseConfig): SonamuDBConfig {\n const defaultKnexConfig: Partial<MySQLConfig> = _.merge(\n {\n client: \"mysql2\",\n pool: {\n min: 1,\n max: 5,\n },\n migrations: {\n extension: \"js\",\n directory: \"./dist/migrations\",\n },\n connection: {\n database: config.database,\n ...config.defaultOptions?.connection,\n },\n },\n config.defaultOptions\n );\n\n // 로컬 환경 설정\n const test: MySQLConfig = _.merge({}, defaultKnexConfig, {\n connection: {\n database: `${config.database}_test`,\n ...config.defaultOptions?.connection,\n },\n });\n\n const fixture_local = _.merge({}, defaultKnexConfig, {\n connection: {\n database: `${config.database}_fixture_local`,\n ...config.defaultOptions?.connection,\n },\n });\n\n // 개발 환경 설정\n const devMasterOptions = config.environments?.development;\n const devSlaveOptions = config.environments?.development_slave;\n const development_master = _.merge({}, defaultKnexConfig, devMasterOptions);\n const development_slave = _.merge(\n {},\n defaultKnexConfig,\n devMasterOptions,\n devSlaveOptions\n );\n // NOTE: fixture remote는 default connection의 DB를 override해선 안됨.\n const fixture_remote = _.merge(\n {},\n defaultKnexConfig,\n devMasterOptions,\n {\n connection: {\n database: `${config.database}_fixture_remote`,\n },\n },\n config.environments?.remote_fixture\n );\n\n // 프로덕션 환경 설정\n const prodMasterOptions = config.environments?.production ?? {};\n const prodSlaveOptions = config.environments?.production_slave ?? {};\n const production_master = _.merge({}, defaultKnexConfig, prodMasterOptions);\n const production_slave = _.merge(\n {},\n defaultKnexConfig,\n prodMasterOptions,\n prodSlaveOptions\n );\n\n return {\n test,\n fixture_local,\n fixture_remote,\n development_master,\n development_slave,\n production_master,\n production_slave,\n };\n }\n\n // Test 환경에서 트랜잭션 사용\n public testTransaction: Knex.Transaction | null = null;\n async createTestTransaction(): Promise<Knex.Transaction> {\n const db = this.getDB(\"w\");\n this.testTransaction = await db.transaction();\n return this.testTransaction;\n }\n async clearTestTransaction(): Promise<void> {\n await this.testTransaction?.rollback();\n this.testTransaction = null;\n }\n}\nexport const DB = new DBClass();\n"],"names":["DB","DBClass","wdb","rdb","transactionStorage","AsyncLocalStorage","testTransaction","runWithTransaction","callback","run","TransactionContext","getTransactionContext","getStore","readKnexfile","dbConfigPath","knexfileModule","config","path","join","Sonamu","apiRootPath","default","generateDBConfig","ServiceUnavailableException","getDB","which","dbConfig","process","env","NODE_ENV","knex","pool","min","max","instanceName","Error","destroy","undefined","defaultKnexConfig","_","merge","client","migrations","extension","directory","connection","database","defaultOptions","test","fixture_local","devMasterOptions","environments","development","devSlaveOptions","development_slave","development_master","fixture_remote","remote_fixture","prodMasterOptions","production","prodSlaveOptions","production_slave","production_master","createTestTransaction","db","transaction","clearTestTransaction","rollback"],"mappings":"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"}
@@ -3,27 +3,39 @@ import { Puri } from "./puri";
3
3
  import { UBRef, UpsertBuilder } from "./upsert-builder";
4
4
  import { DatabaseSchemaExtend } from "../types/types";
5
5
  import { DBPreset } from "./db";
6
- type TableName<DBSchema extends DatabaseSchemaExtend> = Extract<keyof DBSchema, string>;
6
+ type TableName<TSchema extends DatabaseSchemaExtend> = Extract<keyof TSchema, string>;
7
7
  export type TransactionalOptions = {
8
8
  isolation?: Exclude<Knex.IsolationLevels, "snapshot">;
9
9
  dbPreset?: DBPreset;
10
10
  readOnly?: boolean;
11
11
  };
12
- export declare class PuriWrapper<DBSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend> {
12
+ export declare class PuriWrapper<TSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend> {
13
13
  knex: Knex;
14
14
  upsertBuilder: UpsertBuilder;
15
15
  constructor(knex: Knex, upsertBuilder: UpsertBuilder);
16
16
  raw(sql: string): Knex.Raw;
17
- table<TTable extends TableName<DBSchema>>(tableName: TTable): Puri<DBSchema, TTable>;
18
- fromSubquery<TSubResult, TAlias extends string>(subquery: Puri<DBSchema, any, any, TSubResult, any>, alias: TAlias extends string ? TAlias : never): Puri<DBSchema, TAlias, TSubResult, TSubResult, {}>;
17
+ from<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
18
+ from<TTable extends keyof TSchema, TAlias extends string>(spec: {
19
+ [K in TAlias]: TTable;
20
+ }): Puri<TSchema, Record<TAlias, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
21
+ from<TAlias extends string, TSubResult>(spec: {
22
+ [K in TAlias]: Puri<TSchema, any, TSubResult>;
23
+ }): Puri<TSchema, Record<TAlias, TSubResult>, Omit<TSubResult, "__fulltext__">>;
24
+ table<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
25
+ table<TTable extends keyof TSchema, TAlias extends string>(spec: {
26
+ [K in TAlias]: TTable;
27
+ }): Puri<TSchema, Record<TAlias, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
28
+ table<TAlias extends string, TSubResult>(spec: {
29
+ [K in TAlias]: Puri<TSchema, any, TSubResult>;
30
+ }): Puri<TSchema, Record<TAlias, TSubResult>, Omit<TSubResult, "__fulltext__">>;
19
31
  transaction<T>(callback: (trx: PuriTransactionWrapper) => Promise<T>, options?: TransactionalOptions): Promise<T>;
20
- ubRegister<TTable extends TableName<DBSchema>>(tableName: TTable, row: Partial<{
21
- [K in keyof DBSchema[TTable]]: DBSchema[TTable][K] | UBRef;
32
+ ubRegister<TTable extends TableName<TSchema>>(tableName: TTable, row: Partial<{
33
+ [K in keyof TSchema[TTable]]: TSchema[TTable][K] | UBRef;
22
34
  }>): UBRef;
23
- ubUpsert(tableName: TableName<DBSchema>, chunkSize?: number): Promise<number[]>;
24
- ubInsertOnly(tableName: TableName<DBSchema>, chunkSize?: number): Promise<number[]>;
25
- ubUpsertOrInsert(tableName: TableName<DBSchema>, mode: "upsert" | "insert", chunkSize?: number): Promise<number[]>;
26
- ubUpdateBatch(tableName: TableName<DBSchema>, options?: {
35
+ ubUpsert(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]>;
36
+ ubInsertOnly(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]>;
37
+ ubUpsertOrInsert(tableName: TableName<TSchema>, mode: "upsert" | "insert", chunkSize?: number): Promise<number[]>;
38
+ ubUpdateBatch(tableName: TableName<TSchema>, options?: {
27
39
  chunkSize?: number;
28
40
  where?: string | string[];
29
41
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get PuriTransactionWrapper(){return PuriTransactionWrapper},get PuriWrapper(){return PuriWrapper}});var _puri=require("./puri");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var PuriWrapper=/*#__PURE__*/function(){"use strict";function PuriWrapper(knex,upsertBuilder){_class_call_check(this,PuriWrapper);_define_property(this,"knex",void 0);_define_property(this,"upsertBuilder",void 0);this.knex=knex;this.upsertBuilder=upsertBuilder}_create_class(PuriWrapper,[{key:"raw",value:function raw(sql){return this.knex.raw(sql)}},{key:"table",value:function table(tableName){return new _puri.Puri(this.knex,tableName)}},{key:"fromSubquery",value:function fromSubquery(subquery,alias){return new _puri.Puri(this.knex,subquery,alias)}},{key:"transaction",value:function transaction(_0){return _async_to_generator(function(callback){var _this,options,isolation,readOnly;var _arguments=arguments;return _ts_generator(this,function(_state){_this=this;options=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:{};isolation=options.isolation,readOnly=options.readOnly;return[2,this.knex.transaction(function(trx){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,callback(new PuriTransactionWrapper(trx,this.upsertBuilder))]})}).call(_this)},{isolationLevel:isolation,readOnly:readOnly})]})}).apply(this,arguments)}},{key:"ubRegister",value:function ubRegister(tableName,row){return this.upsertBuilder.register(tableName,row)}},{key:"ubUpsert",value:function ubUpsert(tableName,chunkSize){return this.upsertBuilder.upsert(this.knex,tableName,chunkSize)}},{key:"ubInsertOnly",value:function ubInsertOnly(tableName,chunkSize){return this.upsertBuilder.insertOnly(this.knex,tableName,chunkSize)}},{key:"ubUpsertOrInsert",value:function ubUpsertOrInsert(tableName,mode,chunkSize){return this.upsertBuilder.upsertOrInsert(this.knex,tableName,mode,chunkSize)}},{key:"ubUpdateBatch",value:function ubUpdateBatch(tableName,options){return this.upsertBuilder.updateBatch(this.knex,tableName,options)}},{key:"debugTransaction",value:function debugTransaction(){return _async_to_generator(function(){var info;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.getTransactionInfo()];case 1:info=_state.sent();console.log("".concat(_chalk.default.cyan("[Puri Transaction]")," ").concat(_chalk.default.magenta(info)));return[2]}})}).call(this)}},{key:"getTransactionInfo",value:function getTransactionInfo(){return _async_to_generator(function(){var _ref,connectionIdRows,connectionId,_ref1,trxRows,trx;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knex.raw("SELECT CONNECTION_ID() as connection_id")];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),connectionIdRows=_ref[0];connectionId=connectionIdRows[0].connection_id;return[4,this.knex.raw("\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n ")];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),1]),trxRows=_ref1[0];if(trxRows.length>0&&trxRows[0].STATE!=="COMMITTED"){trx=trxRows[0];return[2,"In Transaction, ConnID: ".concat(connectionId,", ThreadID: ").concat(trx.THREAD_ID,", EventID: ").concat(trx.EVENT_ID,", InnoDB TRX: ").concat(trx.STATE,"(").concat(trx.ISOLATION_LEVEL,")")]}else{return[2,"Not in Transaction, ConnID: ".concat(connectionId)]}return[2]}})}).call(this)}}]);return PuriWrapper}();var PuriTransactionWrapper=/*#__PURE__*/function(PuriWrapper){"use strict";_inherits(PuriTransactionWrapper,PuriWrapper);function PuriTransactionWrapper(trx,upsertBuilder){_class_call_check(this,PuriTransactionWrapper);var _this;_this=_call_super(this,PuriTransactionWrapper,[trx,upsertBuilder]),_define_property(_this,"trx",void 0),_define_property(_this,"upsertBuilder",void 0),_this.trx=trx,_this.upsertBuilder=upsertBuilder;return _this}_create_class(PuriTransactionWrapper,[{key:"rollback",value:function rollback(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.rollback()];case 1:_state.sent();return[2]}})}).call(this)}},{key:"commit",value:function commit(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.commit()];case 1:_state.sent();return[2]}})}).call(this)}}]);return PuriTransactionWrapper}(PuriWrapper);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get PuriTransactionWrapper(){return PuriTransactionWrapper},get PuriWrapper(){return PuriWrapper}});var _puri=require("./puri");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var PuriWrapper=/*#__PURE__*/function(){"use strict";function PuriWrapper(knex,upsertBuilder){_class_call_check(this,PuriWrapper);_define_property(this,"knex",void 0);_define_property(this,"upsertBuilder",void 0);this.knex=knex;this.upsertBuilder=upsertBuilder}_create_class(PuriWrapper,[{key:"raw",value:function raw(sql){return this.knex.raw(sql)}},{key:"from",value:function from(spec){return new _puri.Puri(this.knex,spec)}},{key:"table",value:function table(spec){return new _puri.Puri(this.knex,spec)}},{key:"transaction",value:function transaction(_0){return _async_to_generator(function(callback){var _this,options,isolation,readOnly,_options_dbPreset,dbPreset,DB,existingContext,startTransaction,existingTrx;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;options=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:{};isolation=options.isolation,readOnly=options.readOnly,_options_dbPreset=options.dbPreset,dbPreset=_options_dbPreset===void 0?"w":_options_dbPreset;return[4,Promise.resolve().then(function(){return /*#__PURE__*/_interop_require_wildcard(require("./db"))})];case 1:DB=_state.sent().DB;existingContext=DB.transactionStorage.getStore();startTransaction=function(knex,upsertBuilder){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,knex.transaction(function(trx){return _async_to_generator(function(){var trxWrapper;return _ts_generator(this,function(_state){switch(_state.label){case 0:trxWrapper=new PuriTransactionWrapper(trx,upsertBuilder);DB.getTransactionContext().setTransaction(dbPreset,trxWrapper);_state.label=1;case 1:_state.trys.push([1,,3,4]);return[4,callback(trxWrapper)];case 2:return[2,_state.sent()];case 3:DB.getTransactionContext().deleteTransaction(dbPreset);return[7];case 4:return[2]}})})()},{isolationLevel:isolation,readOnly:readOnly})]})})()};if(!existingContext){return[2,DB.runWithTransaction(function(){return startTransaction(_this.knex,_this.upsertBuilder)})]}existingTrx=existingContext.getTransaction(dbPreset);if(existingTrx){return[2,startTransaction(existingTrx.trx,existingTrx.upsertBuilder)]}else{return[2,startTransaction(this.knex,this.upsertBuilder)]}return[2]}})}).apply(this,arguments)}},{key:"ubRegister",value:function ubRegister(tableName,row){return this.upsertBuilder.register(tableName,row)}},{key:"ubUpsert",value:function ubUpsert(tableName,chunkSize){return this.upsertBuilder.upsert(this.knex,tableName,chunkSize)}},{key:"ubInsertOnly",value:function ubInsertOnly(tableName,chunkSize){return this.upsertBuilder.insertOnly(this.knex,tableName,chunkSize)}},{key:"ubUpsertOrInsert",value:function ubUpsertOrInsert(tableName,mode,chunkSize){return this.upsertBuilder.upsertOrInsert(this.knex,tableName,mode,chunkSize)}},{key:"ubUpdateBatch",value:function ubUpdateBatch(tableName,options){return this.upsertBuilder.updateBatch(this.knex,tableName,options)}},{key:"debugTransaction",value:function debugTransaction(){return _async_to_generator(function(){var info;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.getTransactionInfo()];case 1:info=_state.sent();console.log("".concat(_chalk.default.cyan("[Puri Transaction]")," ").concat(_chalk.default.magenta(info)));return[2]}})}).call(this)}},{key:"getTransactionInfo",value:function getTransactionInfo(){return _async_to_generator(function(){var _ref,connectionIdRows,connectionId,_ref1,trxRows,trx;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knex.raw("SELECT CONNECTION_ID() as connection_id")];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),connectionIdRows=_ref[0];connectionId=connectionIdRows[0].connection_id;return[4,this.knex.raw("\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n ")];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),1]),trxRows=_ref1[0];if(trxRows.length>0&&trxRows[0].STATE!=="COMMITTED"){trx=trxRows[0];return[2,"In Transaction, ConnID: ".concat(connectionId,", ThreadID: ").concat(trx.THREAD_ID,", EventID: ").concat(trx.EVENT_ID,", InnoDB TRX: ").concat(trx.STATE,"(").concat(trx.ISOLATION_LEVEL,")")]}else{return[2,"Not in Transaction, ConnID: ".concat(connectionId)]}return[2]}})}).call(this)}}]);return PuriWrapper}();var PuriTransactionWrapper=/*#__PURE__*/function(PuriWrapper){"use strict";_inherits(PuriTransactionWrapper,PuriWrapper);function PuriTransactionWrapper(trx,upsertBuilder){_class_call_check(this,PuriTransactionWrapper);var _this;_this=_call_super(this,PuriTransactionWrapper,[trx,upsertBuilder]),_define_property(_this,"trx",void 0),_define_property(_this,"upsertBuilder",void 0),_this.trx=trx,_this.upsertBuilder=upsertBuilder;return _this}_create_class(PuriTransactionWrapper,[{key:"rollback",value:function rollback(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.rollback()];case 1:_state.sent();return[2]}})}).call(this)}},{key:"commit",value:function commit(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.commit()];case 1:_state.sent();return[2]}})}).call(this)}}]);return PuriTransactionWrapper}(PuriWrapper);
2
2
  //# sourceMappingURL=puri-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/puri-wrapper.ts"],"sourcesContent":["import { Knex } from \"knex\";\nimport { Puri } from \"./puri\";\nimport { UBRef, UpsertBuilder } from \"./upsert-builder\";\nimport { DatabaseSchemaExtend } from \"../types/types\";\nimport chalk from \"chalk\";\nimport { DBPreset } from \"./db\";\n\ntype TableName<DBSchema extends DatabaseSchemaExtend> = Extract<\n keyof DBSchema,\n string\n>;\n\nexport type TransactionalOptions = {\n isolation?: Exclude<Knex.IsolationLevels, \"snapshot\">; // snapshot: mssql only\n dbPreset?: DBPreset;\n readOnly?: boolean;\n};\n\nexport class PuriWrapper<\n DBSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend,\n> {\n constructor(\n public knex: Knex,\n public upsertBuilder: UpsertBuilder\n ) {}\n\n raw(sql: string): Knex.Raw {\n return this.knex.raw(sql);\n }\n // 기존: 테이블로 시작\n table<TTable extends TableName<DBSchema>>(\n tableName: TTable\n ): Puri<DBSchema, TTable> {\n return new Puri(this.knex, tableName as any);\n }\n\n // 새로 추가: 서브쿼리로 시작\n fromSubquery<TSubResult, TAlias extends string>(\n subquery: Puri<DBSchema, any, any, TSubResult, any>,\n alias: TAlias extends string ? TAlias : never\n ): Puri<DBSchema, TAlias, TSubResult, TSubResult, {}> {\n return new Puri(this.knex, subquery, alias);\n }\n\n async transaction<T>(\n callback: (trx: PuriTransactionWrapper) => Promise<T>,\n options: TransactionalOptions = {}\n ): Promise<T> {\n const { isolation, readOnly } = options;\n\n return this.knex.transaction(\n async (trx) => {\n return callback(new PuriTransactionWrapper(trx, this.upsertBuilder));\n },\n { isolationLevel: isolation, readOnly }\n );\n }\n\n ubRegister<TTable extends TableName<DBSchema>>(\n tableName: TTable,\n row: Partial<{\n [K in keyof DBSchema[TTable]]: DBSchema[TTable][K] | UBRef;\n }>\n ): UBRef {\n return this.upsertBuilder.register(tableName, row);\n }\n\n ubUpsert(\n tableName: TableName<DBSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);\n }\n\n ubInsertOnly(\n tableName: TableName<DBSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);\n }\n\n ubUpsertOrInsert(\n tableName: TableName<DBSchema>,\n mode: \"upsert\" | \"insert\",\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsertOrInsert(\n this.knex,\n tableName,\n mode,\n chunkSize\n );\n }\n\n ubUpdateBatch(\n tableName: TableName<DBSchema>,\n options?: { chunkSize?: number; where?: string | string[] }\n ): Promise<void> {\n return this.upsertBuilder.updateBatch(this.knex, tableName, options);\n }\n\n // 트랜잭션 연결 테스트용\n async debugTransaction() {\n const info = await this.getTransactionInfo();\n console.log(`${chalk.cyan(\"[Puri Transaction]\")} ${chalk.magenta(info)}`);\n }\n\n private async getTransactionInfo(): Promise<string> {\n // 연결 ID 조회\n const [connectionIdRows] = await this.knex.raw(\n `SELECT CONNECTION_ID() as connection_id`\n );\n const connectionId = connectionIdRows[0].connection_id;\n\n // 트랜잭션 정보 조회\n const [trxRows] = await this.knex.raw(`\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n `);\n\n if (trxRows.length > 0 && trxRows[0].STATE !== \"COMMITTED\") {\n const trx = trxRows[0];\n return `In Transaction, ConnID: ${connectionId}, ThreadID: ${trx.THREAD_ID}, EventID: ${trx.EVENT_ID}, InnoDB TRX: ${trx.STATE}(${trx.ISOLATION_LEVEL})`;\n } else {\n return `Not in Transaction, ConnID: ${connectionId}`;\n }\n }\n}\n\nexport class PuriTransactionWrapper extends PuriWrapper {\n constructor(\n public trx: Knex.Transaction,\n public upsertBuilder: UpsertBuilder\n ) {\n super(trx, upsertBuilder);\n }\n\n async rollback(): Promise<void> {\n await this.trx.rollback();\n }\n\n async commit(): Promise<void> {\n await this.trx.commit();\n }\n}\n"],"names":["PuriTransactionWrapper","PuriWrapper","knex","upsertBuilder","raw","sql","table","tableName","Puri","fromSubquery","subquery","alias","transaction","callback","options","isolation","readOnly","trx","isolationLevel","ubRegister","row","register","ubUpsert","chunkSize","upsert","ubInsertOnly","insertOnly","ubUpsertOrInsert","mode","upsertOrInsert","ubUpdateBatch","updateBatch","debugTransaction","info","getTransactionInfo","console","log","chalk","cyan","magenta","connectionIdRows","connectionId","trxRows","connection_id","length","STATE","THREAD_ID","EVENT_ID","ISOLATION_LEVEL","rollback","commit"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/database/puri-wrapper.ts"],"sourcesContent":["import { Knex } from \"knex\";\nimport { Puri } from \"./puri\";\nimport { UBRef, UpsertBuilder } from \"./upsert-builder\";\nimport { DatabaseSchemaExtend } from \"../types/types\";\nimport chalk from \"chalk\";\nimport { DBPreset } from \"./db\";\n\ntype TableName<TSchema extends DatabaseSchemaExtend> = Extract<\n keyof TSchema,\n string\n>;\n\nexport type TransactionalOptions = {\n isolation?: Exclude<Knex.IsolationLevels, \"snapshot\">; // snapshot: mssql only\n dbPreset?: DBPreset;\n readOnly?: boolean;\n};\n\nexport class PuriWrapper<\n TSchema extends DatabaseSchemaExtend = DatabaseSchemaExtend,\n> {\n constructor(\n public knex: Knex,\n public upsertBuilder: UpsertBuilder\n ) {}\n\n raw(sql: string): Knex.Raw {\n return this.knex.raw(sql);\n }\n\n // 테이블명으로 시작\n from<TTable extends keyof TSchema>(\n tableName: TTable\n ): Puri<\n TSchema,\n Record<TTable, TSchema[TTable]>,\n Omit<TSchema[TTable], \"__fulltext__\">\n >;\n // 테이블명 + Alias로 시작\n from<TTable extends keyof TSchema, TAlias extends string>(spec: {\n [K in TAlias]: TTable;\n }): Puri<\n TSchema,\n Record<TAlias, TSchema[TTable]>,\n Omit<TSchema[TTable], \"__fulltext__\">\n >;\n // 서브쿼리로 시작\n from<TAlias extends string, TSubResult>(spec: {\n [K in TAlias]: Puri<TSchema, any, TSubResult>;\n }): Puri<\n TSchema,\n Record<TAlias, TSubResult>,\n Omit<TSubResult, \"__fulltext__\">\n >;\n from(spec: any): any {\n return new Puri(this.knex, spec);\n }\n\n // 테이블명으로 시작\n table<TTable extends keyof TSchema>(\n tableName: TTable\n ): Puri<\n TSchema,\n Record<TTable, TSchema[TTable]>,\n Omit<TSchema[TTable], \"__fulltext__\">\n >;\n // 테이블명 + Alias로 시작\n table<TTable extends keyof TSchema, TAlias extends string>(spec: {\n [K in TAlias]: TTable;\n }): Puri<\n TSchema,\n Record<TAlias, TSchema[TTable]>,\n Omit<TSchema[TTable], \"__fulltext__\">\n >;\n // 서브쿼리로 시작\n table<TAlias extends string, TSubResult>(spec: {\n [K in TAlias]: Puri<TSchema, any, TSubResult>;\n }): Puri<\n TSchema,\n Record<TAlias, TSubResult>,\n Omit<TSubResult, \"__fulltext__\">\n >;\n table(spec: any): any {\n return new Puri(this.knex, spec);\n }\n\n async transaction<T>(\n callback: (trx: PuriTransactionWrapper) => Promise<T>,\n options: TransactionalOptions = {}\n ): Promise<T> {\n const { isolation, readOnly, dbPreset = \"w\" } = options;\n\n // @transactional 데코레이터와 동일한 로직: 이미 트랜잭션 컨텍스트가 있는지 확인\n const { DB } = await import(\"./db\");\n const existingContext = DB.transactionStorage.getStore();\n\n // AsyncLocalStorage 컨텍스트가 없거나 해당 preset의 트랜잭션이 없으면 새로 시작\n const startTransaction = async (\n knex: Knex | Knex.Transaction,\n upsertBuilder: UpsertBuilder\n ) => {\n return knex.transaction(\n async (trx) => {\n const trxWrapper = new PuriTransactionWrapper(trx, upsertBuilder);\n\n // TransactionContext에 트랜잭션 저장\n DB.getTransactionContext().setTransaction(dbPreset, trxWrapper);\n\n try {\n return await callback(trxWrapper);\n } finally {\n // 트랜잭션 제거\n DB.getTransactionContext().deleteTransaction(dbPreset);\n }\n },\n { isolationLevel: isolation, readOnly }\n );\n };\n\n // AsyncLocalStorage 컨텍스트가 없으면 새로 생성\n if (!existingContext) {\n return DB.runWithTransaction(() =>\n startTransaction(this.knex, this.upsertBuilder)\n );\n }\n\n // 해당 preset의 트랜잭션이 이미 있으면 SAVEPOINT로 중첩 트랜잭션 생성\n const existingTrx = existingContext.getTransaction(dbPreset);\n if (existingTrx) {\n return startTransaction(existingTrx.trx, existingTrx.upsertBuilder);\n } else {\n // 컨텍스트는 있지만 이 preset의 트랜잭션은 없는 경우 (같은 컨텍스트 내에서 실행)\n return startTransaction(this.knex, this.upsertBuilder);\n }\n }\n\n ubRegister<TTable extends TableName<TSchema>>(\n tableName: TTable,\n row: Partial<{\n [K in keyof TSchema[TTable]]: TSchema[TTable][K] | UBRef;\n }>\n ): UBRef {\n return this.upsertBuilder.register(tableName, row);\n }\n\n ubUpsert(\n tableName: TableName<TSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);\n }\n\n ubInsertOnly(\n tableName: TableName<TSchema>,\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);\n }\n\n ubUpsertOrInsert(\n tableName: TableName<TSchema>,\n mode: \"upsert\" | \"insert\",\n chunkSize?: number\n ): Promise<number[]> {\n return this.upsertBuilder.upsertOrInsert(\n this.knex,\n tableName,\n mode,\n chunkSize\n );\n }\n\n ubUpdateBatch(\n tableName: TableName<TSchema>,\n options?: { chunkSize?: number; where?: string | string[] }\n ): Promise<void> {\n return this.upsertBuilder.updateBatch(this.knex, tableName, options);\n }\n\n // 트랜잭션 연결 테스트용\n async debugTransaction() {\n const info = await this.getTransactionInfo();\n console.log(`${chalk.cyan(\"[Puri Transaction]\")} ${chalk.magenta(info)}`);\n }\n\n private async getTransactionInfo(): Promise<string> {\n // 연결 ID 조회\n const [connectionIdRows] = await this.knex.raw(\n `SELECT CONNECTION_ID() as connection_id`\n );\n const connectionId = connectionIdRows[0].connection_id;\n\n // 트랜잭션 정보 조회\n const [trxRows] = await this.knex.raw(`\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n `);\n\n if (trxRows.length > 0 && trxRows[0].STATE !== \"COMMITTED\") {\n const trx = trxRows[0];\n return `In Transaction, ConnID: ${connectionId}, ThreadID: ${trx.THREAD_ID}, EventID: ${trx.EVENT_ID}, InnoDB TRX: ${trx.STATE}(${trx.ISOLATION_LEVEL})`;\n } else {\n return `Not in Transaction, ConnID: ${connectionId}`;\n }\n }\n}\n\nexport class PuriTransactionWrapper extends PuriWrapper {\n constructor(\n public trx: Knex.Transaction,\n public upsertBuilder: UpsertBuilder\n ) {\n super(trx, upsertBuilder);\n }\n\n async rollback(): Promise<void> {\n await this.trx.rollback();\n }\n\n async commit(): Promise<void> {\n await this.trx.commit();\n }\n}\n"],"names":["PuriTransactionWrapper","PuriWrapper","knex","upsertBuilder","raw","sql","from","spec","Puri","table","transaction","callback","options","isolation","readOnly","dbPreset","DB","existingContext","startTransaction","existingTrx","transactionStorage","getStore","trx","trxWrapper","getTransactionContext","setTransaction","deleteTransaction","isolationLevel","runWithTransaction","getTransaction","ubRegister","tableName","row","register","ubUpsert","chunkSize","upsert","ubInsertOnly","insertOnly","ubUpsertOrInsert","mode","upsertOrInsert","ubUpdateBatch","updateBatch","debugTransaction","info","getTransactionInfo","console","log","chalk","cyan","magenta","connectionIdRows","connectionId","trxRows","connection_id","length","STATE","THREAD_ID","EVENT_ID","ISOLATION_LEVEL","rollback","commit"],"mappings":"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"}
@@ -1,85 +1,111 @@
1
1
  import type { Knex } from "knex";
2
- import type { AvailableColumns, ComparisonOperator, EmptyRecord, Expand, ExtractColumnType, FulltextColumns, InsertData, MergeJoined, ParseSelectObject, ResultAvailableColumns, SelectObject, SqlFunction, WhereCondition } from "./puri.types";
3
- export declare class Puri<TSchema, TTable extends keyof TSchema | string, TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown, TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown, TJoined = EmptyRecord> {
2
+ import type { AvailableColumns, SelectObject, ParseSelectObject, WhereCondition, ComparisonOperator, ExtractColumnType, SqlExpression, Expand, FulltextColumns, ResultAvailableColumns, InsertData, SingleTableValue } from "./puri.types";
3
+ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult, TResolved = Expand<TResult>[]> {
4
4
  private knex;
5
5
  private knexQuery;
6
- constructor(knex: Knex, tableName: TTable extends keyof TSchema ? TTable : unknown);
7
- constructor(knex: Knex, subquery: Puri<TSchema, any, any, TOriginal, any>, alias: TTable extends string ? TTable : never);
8
- static count(column?: string): SqlFunction<"number">;
9
- static sum(column: string): SqlFunction<"number">;
10
- static avg(column: string): SqlFunction<"number">;
11
- static max(column: string): SqlFunction<"number">;
12
- static min(column: string): SqlFunction<"number">;
13
- static concat(...args: string[]): SqlFunction<"string">;
14
- static upper(column: string): SqlFunction<"string">;
15
- static lower(column: string): SqlFunction<"string">;
16
- static rawString(sql: string): SqlFunction<"string">;
17
- static rawNumber(sql: string): SqlFunction<"number">;
18
- static rawBoolean(sql: string): SqlFunction<"boolean">;
19
- static rawDate(sql: string): SqlFunction<"date">;
20
- select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(selectObj: TSelect): Puri<TSchema, TTable, TOriginal, ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>, TJoined>;
21
- selectAll(): Puri<TSchema, TTable, TOriginal, TTable extends keyof TSchema ? TSchema[TTable] & TJoined : TResult & TJoined, TJoined>;
22
- where(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
23
- where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
24
- where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
25
- whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
26
- whereNotIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
27
- whereMatch<TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
28
- whereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
29
- orWhereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
30
- join<TJoinTable extends keyof TSchema, TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>, TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>>(table: TJoinTable, left: TLColumn, right: TRColumn): Puri<TSchema, TTable, TOriginal, TResult, MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>>;
31
- join<TJoinTable extends keyof TSchema>(table: TJoinTable, joinCallback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): Puri<TSchema, TTable, TOriginal, TResult, MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>>;
32
- join<TSubResult, TAlias extends string>(subquery: Puri<TSchema, any, any, TSubResult, any>, alias: TAlias, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, TSubResult>>;
33
- join(table: string, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
34
- leftJoin<TJoinTable extends keyof TSchema, TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>, TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>>(table: TJoinTable, left: TLColumn, right: TRColumn): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>>;
35
- leftJoin<TSubResult, TAlias extends string>(subquery: Puri<TSchema, any, any, TSubResult, any>, alias: TAlias, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, Partial<TSubResult>>>;
36
- leftJoin(table: string, left: string, right: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
37
- orderBy<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(column: TColumn, direction: "asc" | "desc"): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
38
- limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
39
- offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
40
- groupBy<TColumns extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(...columns: TColumns[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
41
- having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
42
- having<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(condition: TColumn, operator: ComparisonOperator, value: any): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
43
- then<TResult1, TResult2 = never>(onfulfilled?: ((value: Expand<TResult>[]) => Expand<TResult1> | PromiseLike<Expand<TResult1>>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult1> | TResult2>;
6
+ constructor(knex: Knex, tableName: string);
7
+ constructor(knex: Knex, tableSpec: Record<string, string | Puri<TSchema, any, any>>);
8
+ static count(column?: string): SqlExpression<"number">;
9
+ static sum(column: string): SqlExpression<"number">;
10
+ static avg(column: string): SqlExpression<"number">;
11
+ static max(column: string): SqlExpression<"number">;
12
+ static min(column: string): SqlExpression<"number">;
13
+ static concat(...args: string[]): SqlExpression<"string">;
14
+ static upper(column: string): SqlExpression<"string">;
15
+ static lower(column: string): SqlExpression<"string">;
16
+ static rawString(sql: string): SqlExpression<"string">;
17
+ static rawNumber(sql: string): SqlExpression<"number">;
18
+ static rawBoolean(sql: string): SqlExpression<"boolean">;
19
+ static rawDate(sql: string): SqlExpression<"date">;
20
+ select<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, ParseSelectObject<TTables, TSelect>>;
21
+ selectAll(): this;
22
+ join<TJoinAlias extends string, TSubResult>(tableSpec: {
23
+ [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
24
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSubResult & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
25
+ TResult>;
26
+ join<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
27
+ [K in TJoinAlias]: TJoinTable;
28
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
29
+ TResult>;
30
+ join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
31
+ TResult>;
32
+ join<TJoinAlias extends string, TSubResult>(tableSpec: {
33
+ [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
34
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, TResult>;
35
+ join<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
36
+ [K in TJoinAlias]: TJoinTable;
37
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, TResult>;
38
+ join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;
39
+ leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
40
+ [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
41
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSubResult & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
42
+ TResult>;
43
+ leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
44
+ [K in TJoinAlias]: TJoinTable;
45
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
46
+ TResult>;
47
+ leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
48
+ TResult>;
49
+ leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
50
+ [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
51
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSubResult>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, TResult>;
52
+ leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
53
+ [K in TJoinAlias]: TJoinTable;
54
+ }, callback: (j: JoinClauseGroup<TTables, Record<TJoinAlias, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, TResult>;
55
+ leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;
56
+ __commonJoin(joinType: "join" | "leftJoin", tableNameOrSpec: any, ...args: any[]): this;
57
+ where(conditions: WhereCondition<TTables>): this;
58
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
59
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
60
+ whereIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
61
+ whereNotIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
62
+ whereMatch<TColumn extends FulltextColumns<TTables>>(column: TColumn, value: string): this;
63
+ whereGroup(callback: (g: WhereGroup<TTables>) => void): this;
64
+ orWhereGroup(callback: (g: WhereGroup<TTables>) => void): this;
65
+ orderBy<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn, direction: "asc" | "desc"): this;
66
+ limit(count: number): this;
67
+ offset(count: number): this;
68
+ groupBy<TColumns extends ResultAvailableColumns<TTables, TResult>>(...columns: TColumns[]): this;
69
+ having(condition: string): this;
70
+ having<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn, operator: ComparisonOperator, value: any): this;
71
+ then<TResult1 = TResolved, TResult2 = never>(onfulfilled?: ((value: TResolved) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
44
72
  catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult> | TResult2>;
45
73
  finally(onfinally?: (() => void) | null): Promise<Expand<TResult>>;
46
74
  first(): Promise<Expand<TResult> | undefined>;
47
75
  firstOrFail(): Promise<TResult>;
48
76
  at(index: number): Promise<Expand<TResult> | undefined>;
49
77
  assertAt(index: number): Promise<Expand<TResult>>;
50
- insert(data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown): Promise<number[]>;
51
- update(data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>): Promise<number>;
52
- delete(): Promise<number>;
78
+ pluck<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn): Promise<ExtractColumnType<TTables, TColumn & string>[]>;
79
+ insert(data: InsertData<SingleTableValue<TTables>>): Puri<TSchema, {}, number, number[]>;
80
+ update(data: WhereCondition<TTables>): Puri<TSchema, {}, number, number>;
81
+ increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
82
+ decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
83
+ delete(): Puri<TSchema, {}, number, number>;
53
84
  toQuery(): string;
54
- debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
85
+ debug(): this;
55
86
  formatSQL(unformatted: string): string;
56
87
  raw(): Knex.QueryBuilder;
57
- increment<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
58
- decrement<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;
59
88
  }
60
- declare class WhereGroup<TSchema, TTable extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> {
89
+ export declare class WhereGroup<TTables extends Record<string, any>> {
61
90
  private builder;
62
91
  constructor(builder: Knex.QueryBuilder);
63
- where(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
64
- where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
65
- where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
66
- where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
67
- orWhere(conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
68
- orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
69
- orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, operator: ComparisonOperator | "like", value: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
70
- orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
71
- whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
72
- orWhereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(column: TColumn, values: ExtractColumnType<TSchema, TTable, TColumn & string, TOriginal, TJoined>[]): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
73
- whereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
74
- orWhereGroup(callback: (group: WhereGroup<TSchema, TTable, TOriginal, TJoined>) => WhereGroup<TSchema, TTable, TOriginal, TJoined>): WhereGroup<TSchema, TTable, TOriginal, TJoined>;
92
+ where(conditions: WhereCondition<TTables>): this;
93
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
94
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
95
+ orWhere(conditions: WhereCondition<TTables>): this;
96
+ orWhere<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
97
+ orWhere<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
98
+ whereGroup(callback: (g: WhereGroup<TTables>) => void): this;
99
+ orWhereGroup(callback: (g: WhereGroup<TTables>) => void): this;
75
100
  }
76
- export declare class JoinClauseGroup<TSchema, TTable extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> {
101
+ export declare class JoinClauseGroup<TLeft extends Record<string, any>, TRight extends Record<string, any>> {
77
102
  private callback;
78
103
  constructor(callback: Knex.JoinClause);
79
- on(callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
80
- on(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
81
- orOn(callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
82
- orOn(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;
104
+ on(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;
105
+ on(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
106
+ on(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
107
+ orOn(left: AvailableColumns<TLeft>, right: AvailableColumns<TRight>): this;
108
+ orOn(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
109
+ orOn(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
83
110
  }
84
- export {};
85
111
  //# sourceMappingURL=puri.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}