sonamu 0.5.3 → 0.5.5
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.
- package/dist/api/code-converters.d.ts +8 -5
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +1 -1
- package/dist/api/code-converters.js.map +1 -1
- package/dist/api/context.d.ts +9 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/decorators.d.ts +6 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +1 -1
- package/dist/api/decorators.js.map +1 -1
- package/dist/api/sonamu.d.ts +1 -0
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +1 -1
- package/dist/api/sonamu.js.map +1 -1
- package/dist/bin/cli-wrapper.js +1 -1
- package/dist/bin/cli-wrapper.js.map +1 -1
- package/dist/database/puri-wrapper.d.ts +8 -1
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +1 -1
- package/dist/database/puri-wrapper.js.map +1 -1
- package/dist/database/puri.d.ts +2 -0
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +1 -1
- package/dist/database/puri.js.map +1 -1
- package/dist/database/puri.types.d.ts +4 -8
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migration/code-generation.js +1 -1
- package/dist/migration/code-generation.js.map +1 -1
- package/dist/migration/types.d.ts +2 -1
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/syncer/syncer.d.ts +1 -0
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/templates/generated_http.template.d.ts.map +1 -1
- package/dist/templates/generated_http.template.js +1 -1
- package/dist/templates/generated_http.template.js.map +1 -1
- package/dist/templates/generated_sso.template.d.ts.map +1 -1
- package/dist/templates/generated_sso.template.js +1 -1
- package/dist/templates/generated_sso.template.js.map +1 -1
- package/dist/templates/service.template.d.ts.map +1 -1
- package/dist/templates/service.template.js +1 -1
- package/dist/templates/service.template.js.map +1 -1
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +1 -1
- package/dist/testing/fixture-manager.js.map +1 -1
- package/dist/types/types.d.ts +11 -2
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js.map +1 -1
- package/package.json +6 -2
- package/src/api/code-converters.ts +41 -31
- package/src/api/context.ts +11 -2
- package/src/api/sonamu.ts +43 -2
- package/src/types/types.ts +18 -2
package/dist/database/puri.js
CHANGED
|
@@ -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 JoinClauseGroup(){return JoinClauseGroup},get Puri(){return 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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}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 _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 Puri=/*#__PURE__*/function(){"use strict";function Puri(knex,tableNameOrSubquery,alias){_class_call_check(this,Puri);_define_property(this,"knex",void 0);_define_property(this,"knexQuery",void 0);this.knex=knex;if(typeof tableNameOrSubquery==="string"){this.knexQuery=knex(tableNameOrSubquery).from(tableNameOrSubquery)}else{this.knexQuery=knex.from(tableNameOrSubquery.raw().as(alias))}}_create_class(Puri,[{key:"select",value:function select(selectObj){var selectClauses=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.entries(selectObj)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _step_value=_sliced_to_array(_step.value,2),alias=_step_value[0],columnOrFunction=_step_value[1];if((typeof columnOrFunction==="undefined"?"undefined":_type_of(columnOrFunction))==="object"&&columnOrFunction._type==="sql_function"){selectClauses.push(this.knex.raw("".concat(columnOrFunction._sql," as ").concat(alias)))}else{var columnPath=columnOrFunction;if(alias===columnPath){selectClauses.push(columnPath)}else{selectClauses.push("".concat(columnPath," as ").concat(alias))}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}this.knexQuery.select(selectClauses);return this}},{key:"selectAll",value:function selectAll(){this.knexQuery.select("*");return this}},{key:"where",value:function where(columnOrConditions,operatorOrValue,value){if((typeof columnOrConditions==="undefined"?"undefined":_type_of(columnOrConditions))==="object"){this.knexQuery.where(columnOrConditions)}else if(arguments.length===2){if(operatorOrValue===null){this.knexQuery.whereNull(columnOrConditions);return this}this.knexQuery.where(columnOrConditions,operatorOrValue)}else if(arguments.length===3){if(value===null){if(operatorOrValue==="!="){this.knexQuery.whereNotNull(columnOrConditions);return this}else if(operatorOrValue==="="){this.knexQuery.whereNull(columnOrConditions);return this}}this.knexQuery.where(columnOrConditions,operatorOrValue,value)}else{this.knexQuery.where(columnOrConditions)}return this}},{key:"whereIn",value:function whereIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereNotIn",value:function whereNotIn(column,values){this.knexQuery.whereNotIn(column,values);return this}},{key:"whereMatch",value:function whereMatch(column,value){this.knexQuery.whereRaw("MATCH (".concat(String(column),") AGAINST (?)"),[value]);return this}},{key:"whereGroup",value:function whereGroup(callback){this.knexQuery.where(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.knexQuery.orWhere(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"join",value:function join(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.join(tableOrSubquery.raw().as(alias),left,right)}else if(args.length===2&&typeof args[0]==="string"&&typeof args[1]==="string"){var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.join(tableOrSubquery,left1,right1)}else if(args.length===1&&typeof args[0]==="function"){var joinCallback=args[0];this.knexQuery.join(tableOrSubquery,function(joinClause){joinCallback(new JoinClauseGroup(joinClause))})}else{throw new Error("Invalid arguments")}return this}},{key:"leftJoin",value:function leftJoin(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias),left,right)}else{var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.leftJoin(tableOrSubquery,left1,right1)}return this}},{key:"orderBy",value:function orderBy(column){var direction=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"asc";this.knexQuery.orderBy(column,direction);return this}},{key:"limit",value:function limit(count){this.knexQuery.limit(count);return this}},{key:"offset",value:function offset(count){this.knexQuery.offset(count);return this}},{key:"groupBy",value:function groupBy(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).groupBy.apply(_this_knexQuery,_to_consumable_array(columns));return this}},{key:"having",value:function having(){for(var _len=arguments.length,conditions=new Array(_len),_key=0;_key<_len;_key++){conditions[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).having.apply(_this_knexQuery,_to_consumable_array(conditions));return this}},{key:"then",value:function then(onfulfilled,onrejected){return this.knexQuery.then(onfulfilled,onrejected)}},{key:"catch",value:function _catch(onrejected){return this.knexQuery.catch(onrejected)}},{key:"finally",value:function _finally(onfinally){return this.knexQuery.finally(onfinally)}},{key:"first",value:function first(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.first()]})}).call(this)}},{key:"firstOrFail",value:function firstOrFail(){return _async_to_generator(function(){var result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knexQuery.first()];case 1:result=_state.sent();if(!result){throw new Error("No results found")}return[2,result]}})}).call(this)}},{key:"at",value:function at(index){return _async_to_generator(function(){var results;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();return[2,results[index]]}})}).call(this)}},{key:"assertAt",value:function assertAt(index){return _async_to_generator(function(){var results,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();result=results[index];if(result===undefined){throw new Error("No result found at index ".concat(index))}return[2,result]}})}).call(this)}},{key:"insert",value:function insert(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.insert(data)]})}).call(this)}},{key:"update",value:function update(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.update(data)]})}).call(this)}},{key:"delete",value:function _delete(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.delete()]})}).call(this)}},{key:"toQuery",value:function toQuery(){return this.knexQuery.toQuery()}},{key:"debug",value:function debug(){console.log("".concat(_chalk.default.cyan("[Puri Debug]")," ").concat(_chalk.default.yellow(this.formatSQL(this.toQuery()))));return this}},{key:"formatSQL",value:function formatSQL(unformatted){var keywords=["SELECT","FROM","WHERE","INSERT","INTO","VALUES","UPDATE","DELETE","CREATE","TABLE","ALTER","DROP","JOIN","ON","INNER","LEFT","RIGHT","FULL","OUTER","GROUP","BY","ORDER","HAVING","DISTINCT","LIMIT","OFFSET","AS","AND","OR","NOT","IN","LIKE","IS","NULL","CASE","WHEN","THEN","ELSE","END","UNION","ALL","EXISTS","BETWEEN"];var formatted=unformatted;keywords.forEach(function(keyword){var regex=new RegExp("\\b".concat(keyword,"\\b"),"gi");formatted=formatted.replace(regex,keyword.toUpperCase())});var majorClauses=["SELECT","FROM","WHERE","GROUP BY","ORDER BY","HAVING","LIMIT","UNION"];majorClauses.forEach(function(clause){var regex=new RegExp("\\s+(".concat(clause,")\\s+"),"gi");formatted=formatted.replace(regex,"\n".concat(clause.toUpperCase()," "))});formatted=formatted.replace(/\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\s+)?JOIN\s+/gi,"\n$1JOIN ");formatted=formatted.replace(/\s+(AND|OR)\s+/gi,"\n $1 ");var lines=formatted.split("\n");var indentedLines=[];var indentLevel=0;var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=lines[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var line=_step.value;var trimmedLine=line.trim();if(!trimmedLine)continue;var closingParens=(trimmedLine.match(/\)/g)||[]).length;var openingParens=(trimmedLine.match(/\(/g)||[]).length;if(closingParens>0&&openingParens===0){indentLevel=Math.max(0,indentLevel-closingParens)}var indent=" ".repeat(indentLevel);indentedLines.push(indent+trimmedLine);if(openingParens>closingParens){indentLevel+=openingParens-closingParens}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return indentedLines.join("\n").trim()}},{key:"raw",value:function raw(){return this.knexQuery}}],[{key:"count",value:function count(){var column=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"*";return{_type:"sql_function",_return:"number",_sql:"COUNT(".concat(column,")")}}},{key:"sum",value:function sum(column){return{_type:"sql_function",_return:"number",_sql:"SUM(".concat(column,")")}}},{key:"avg",value:function avg(column){return{_type:"sql_function",_return:"number",_sql:"AVG(".concat(column,")")}}},{key:"max",value:function max(column){return{_type:"sql_function",_return:"number",_sql:"MAX(".concat(column,")")}}},{key:"min",value:function min(column){return{_type:"sql_function",_return:"number",_sql:"MIN(".concat(column,")")}}},{key:"concat",value:function concat(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return{_type:"sql_function",_return:"string",_sql:"CONCAT(".concat(args.join(", "),")")}}},{key:"upper",value:function upper(column){return{_type:"sql_function",_return:"string",_sql:"UPPER(".concat(column,")")}}},{key:"lower",value:function lower(column){return{_type:"sql_function",_return:"string",_sql:"LOWER(".concat(column,")")}}},{key:"rawString",value:function rawString(sql){return{_type:"sql_function",_return:"string",_sql:sql}}},{key:"rawNumber",value:function rawNumber(sql){return{_type:"sql_function",_return:"number",_sql:sql}}},{key:"rawBoolean",value:function rawBoolean(sql){return{_type:"sql_function",_return:"boolean",_sql:sql}}},{key:"rawDate",value:function rawDate(sql){return{_type:"sql_function",_return:"date",_sql:sql}}}]);return Puri}();var WhereGroup=/*#__PURE__*/function(){"use strict";function WhereGroup(builder){_class_call_check(this,WhereGroup);_define_property(this,"builder",void 0);this.builder=builder}_create_class(WhereGroup,[{key:"where",value:function where(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).where.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"orWhere",value:function orWhere(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).orWhere.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"whereIn",value:function whereIn(column,values){this.builder.whereIn(column,values);return this}},{key:"orWhereIn",value:function orWhereIn(column,values){this.builder.orWhereIn(column,values);return this}},{key:"whereGroup",value:function whereGroup(callback){this.builder.where(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.builder.orWhere(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}}]);return WhereGroup}();var JoinClauseGroup=/*#__PURE__*/function(){"use strict";function JoinClauseGroup(callback){_class_call_check(this,JoinClauseGroup);_define_property(this,"callback",void 0);this.callback=callback}_create_class(JoinClauseGroup,[{key:"on",value:function on(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).on.apply(_this_callback,_to_consumable_array(args));return this}},{key:"orOn",value:function orOn(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).orOn.apply(_this_callback,_to_consumable_array(args));return this}}]);return JoinClauseGroup}();
|
|
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 JoinClauseGroup(){return JoinClauseGroup},get Puri(){return 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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}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 _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 Puri=/*#__PURE__*/function(){"use strict";function Puri(knex,tableNameOrSubquery,alias){_class_call_check(this,Puri);_define_property(this,"knex",void 0);_define_property(this,"knexQuery",void 0);this.knex=knex;if(typeof tableNameOrSubquery==="string"){this.knexQuery=knex(tableNameOrSubquery).from(tableNameOrSubquery)}else{this.knexQuery=knex.from(tableNameOrSubquery.raw().as(alias))}}_create_class(Puri,[{key:"select",value:function select(selectObj){var selectClauses=[];var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.entries(selectObj)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _step_value=_sliced_to_array(_step.value,2),alias=_step_value[0],columnOrFunction=_step_value[1];if((typeof columnOrFunction==="undefined"?"undefined":_type_of(columnOrFunction))==="object"&&columnOrFunction._type==="sql_function"){selectClauses.push(this.knex.raw("".concat(columnOrFunction._sql," as ").concat(alias)))}else{var columnPath=columnOrFunction;if(alias===columnPath){selectClauses.push(columnPath)}else{selectClauses.push("".concat(columnPath," as ").concat(alias))}}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}this.knexQuery.select(selectClauses);return this}},{key:"selectAll",value:function selectAll(){this.knexQuery.select("*");return this}},{key:"where",value:function where(columnOrConditions,operatorOrValue,value){if((typeof columnOrConditions==="undefined"?"undefined":_type_of(columnOrConditions))==="object"){this.knexQuery.where(columnOrConditions)}else if(arguments.length===2){if(operatorOrValue===null){this.knexQuery.whereNull(columnOrConditions);return this}this.knexQuery.where(columnOrConditions,operatorOrValue)}else if(arguments.length===3){if(value===null){if(operatorOrValue==="!="){this.knexQuery.whereNotNull(columnOrConditions);return this}else if(operatorOrValue==="="){this.knexQuery.whereNull(columnOrConditions);return this}}this.knexQuery.where(columnOrConditions,operatorOrValue,value)}else{this.knexQuery.where(columnOrConditions)}return this}},{key:"whereIn",value:function whereIn(column,values){this.knexQuery.whereIn(column,values);return this}},{key:"whereNotIn",value:function whereNotIn(column,values){this.knexQuery.whereNotIn(column,values);return this}},{key:"whereMatch",value:function whereMatch(column,value){this.knexQuery.whereRaw("MATCH (".concat(String(column),") AGAINST (?)"),[value]);return this}},{key:"whereGroup",value:function whereGroup(callback){this.knexQuery.where(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.knexQuery.orWhere(function(builder){var group=new WhereGroup(builder);callback(group)});return this}},{key:"join",value:function join(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.join(tableOrSubquery.raw().as(alias),left,right)}else if(args.length===2&&typeof args[0]==="string"&&typeof args[1]==="string"){var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.join(tableOrSubquery,left1,right1)}else if(args.length===1&&typeof args[0]==="function"){var joinCallback=args[0];this.knexQuery.join(tableOrSubquery,function(joinClause){joinCallback(new JoinClauseGroup(joinClause))})}else{throw new Error("Invalid arguments")}return this}},{key:"leftJoin",value:function leftJoin(tableOrSubquery){for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key]}if(_instanceof(tableOrSubquery,Puri)){var _args=_sliced_to_array(args,3),alias=_args[0],left=_args[1],right=_args[2];this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias),left,right)}else{var _args1=_sliced_to_array(args,2),left1=_args1[0],right1=_args1[1];this.knexQuery.leftJoin(tableOrSubquery,left1,right1)}return this}},{key:"orderBy",value:function orderBy(column){var direction=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"asc";this.knexQuery.orderBy(column,direction);return this}},{key:"limit",value:function limit(count){this.knexQuery.limit(count);return this}},{key:"offset",value:function offset(count){this.knexQuery.offset(count);return this}},{key:"groupBy",value:function groupBy(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).groupBy.apply(_this_knexQuery,_to_consumable_array(columns));return this}},{key:"having",value:function having(){for(var _len=arguments.length,conditions=new Array(_len),_key=0;_key<_len;_key++){conditions[_key]=arguments[_key]}var _this_knexQuery;(_this_knexQuery=this.knexQuery).having.apply(_this_knexQuery,_to_consumable_array(conditions));return this}},{key:"then",value:function then(onfulfilled,onrejected){return this.knexQuery.then(onfulfilled,onrejected)}},{key:"catch",value:function _catch(onrejected){return this.knexQuery.catch(onrejected)}},{key:"finally",value:function _finally(onfinally){return this.knexQuery.finally(onfinally)}},{key:"first",value:function first(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.first()]})}).call(this)}},{key:"firstOrFail",value:function firstOrFail(){return _async_to_generator(function(){var result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knexQuery.first()];case 1:result=_state.sent();if(!result){throw new Error("No results found")}return[2,result]}})}).call(this)}},{key:"at",value:function at(index){return _async_to_generator(function(){var results;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();return[2,results[index]]}})}).call(this)}},{key:"assertAt",value:function assertAt(index){return _async_to_generator(function(){var results,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this];case 1:results=_state.sent();result=results[index];if(result===undefined){throw new Error("No result found at index ".concat(index))}return[2,result]}})}).call(this)}},{key:"insert",value:function insert(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.insert(data)]})}).call(this)}},{key:"update",value:function update(data){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.update(data)]})}).call(this)}},{key:"delete",value:function _delete(){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.knexQuery.delete()]})}).call(this)}},{key:"toQuery",value:function toQuery(){return this.knexQuery.toQuery()}},{key:"debug",value:function debug(){console.log("".concat(_chalk.default.cyan("[Puri Debug]")," ").concat(_chalk.default.yellow(this.formatSQL(this.toQuery()))));return this}},{key:"formatSQL",value:function formatSQL(unformatted){var keywords=["SELECT","FROM","WHERE","INSERT","INTO","VALUES","UPDATE","DELETE","CREATE","TABLE","ALTER","DROP","JOIN","ON","INNER","LEFT","RIGHT","FULL","OUTER","GROUP","BY","ORDER","HAVING","DISTINCT","LIMIT","OFFSET","AS","AND","OR","NOT","IN","LIKE","IS","NULL","CASE","WHEN","THEN","ELSE","END","UNION","ALL","EXISTS","BETWEEN"];var formatted=unformatted;keywords.forEach(function(keyword){var regex=new RegExp("\\b".concat(keyword,"\\b"),"gi");formatted=formatted.replace(regex,keyword.toUpperCase())});var majorClauses=["SELECT","FROM","WHERE","GROUP BY","ORDER BY","HAVING","LIMIT","UNION"];majorClauses.forEach(function(clause){var regex=new RegExp("\\s+(".concat(clause,")\\s+"),"gi");formatted=formatted.replace(regex,"\n".concat(clause.toUpperCase()," "))});formatted=formatted.replace(/\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\s+)?JOIN\s+/gi,"\n$1JOIN ");formatted=formatted.replace(/\s+(AND|OR)\s+/gi,"\n $1 ");var lines=formatted.split("\n");var indentedLines=[];var indentLevel=0;var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=lines[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var line=_step.value;var trimmedLine=line.trim();if(!trimmedLine)continue;var closingParens=(trimmedLine.match(/\)/g)||[]).length;var openingParens=(trimmedLine.match(/\(/g)||[]).length;if(closingParens>0&&openingParens===0){indentLevel=Math.max(0,indentLevel-closingParens)}var indent=" ".repeat(indentLevel);indentedLines.push(indent+trimmedLine);if(openingParens>closingParens){indentLevel+=openingParens-closingParens}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}return indentedLines.join("\n").trim()}},{key:"raw",value:function raw(){return this.knexQuery}},{key:"increment",value:function increment(column,value){if(value<=0){throw new Error("Increment value must be greater than 0")}this.knexQuery.increment(column,value);return this}},{key:"decrement",value:function decrement(column,value){if(value<=0){throw new Error("Decrement value must be greater than 0")}this.knexQuery.decrement(column,value);return this}}],[{key:"count",value:function count(){var column=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"*";return{_type:"sql_function",_return:"number",_sql:"COUNT(".concat(column,")")}}},{key:"sum",value:function sum(column){return{_type:"sql_function",_return:"number",_sql:"SUM(".concat(column,")")}}},{key:"avg",value:function avg(column){return{_type:"sql_function",_return:"number",_sql:"AVG(".concat(column,")")}}},{key:"max",value:function max(column){return{_type:"sql_function",_return:"number",_sql:"MAX(".concat(column,")")}}},{key:"min",value:function min(column){return{_type:"sql_function",_return:"number",_sql:"MIN(".concat(column,")")}}},{key:"concat",value:function concat(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}return{_type:"sql_function",_return:"string",_sql:"CONCAT(".concat(args.join(", "),")")}}},{key:"upper",value:function upper(column){return{_type:"sql_function",_return:"string",_sql:"UPPER(".concat(column,")")}}},{key:"lower",value:function lower(column){return{_type:"sql_function",_return:"string",_sql:"LOWER(".concat(column,")")}}},{key:"rawString",value:function rawString(sql){return{_type:"sql_function",_return:"string",_sql:sql}}},{key:"rawNumber",value:function rawNumber(sql){return{_type:"sql_function",_return:"number",_sql:sql}}},{key:"rawBoolean",value:function rawBoolean(sql){return{_type:"sql_function",_return:"boolean",_sql:sql}}},{key:"rawDate",value:function rawDate(sql){return{_type:"sql_function",_return:"date",_sql:sql}}}]);return Puri}();var WhereGroup=/*#__PURE__*/function(){"use strict";function WhereGroup(builder){_class_call_check(this,WhereGroup);_define_property(this,"builder",void 0);this.builder=builder}_create_class(WhereGroup,[{key:"where",value:function where(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).where.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"orWhere",value:function orWhere(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_builder;(_this_builder=this.builder).orWhere.apply(_this_builder,[args[0]].concat(_to_consumable_array(args.slice(1))));return this}},{key:"whereIn",value:function whereIn(column,values){this.builder.whereIn(column,values);return this}},{key:"orWhereIn",value:function orWhereIn(column,values){this.builder.orWhereIn(column,values);return this}},{key:"whereGroup",value:function whereGroup(callback){this.builder.where(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}},{key:"orWhereGroup",value:function orWhereGroup(callback){this.builder.orWhere(function(subBuilder){var subGroup=new WhereGroup(subBuilder);callback(subGroup)});return this}}]);return WhereGroup}();var JoinClauseGroup=/*#__PURE__*/function(){"use strict";function JoinClauseGroup(callback){_class_call_check(this,JoinClauseGroup);_define_property(this,"callback",void 0);this.callback=callback}_create_class(JoinClauseGroup,[{key:"on",value:function on(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).on.apply(_this_callback,_to_consumable_array(args));return this}},{key:"orOn",value:function orOn(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var _this_callback;(_this_callback=this.callback).orOn.apply(_this_callback,_to_consumable_array(args));return this}}]);return JoinClauseGroup}();
|
|
2
2
|
//# sourceMappingURL=puri.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/database/puri.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n AvailableColumns,\n ComparisonOperator,\n EmptyRecord,\n Expand,\n ExtractColumnType,\n FulltextColumns,\n InsertData,\n MergeJoined,\n ParseSelectObject,\n ResultAvailableColumns,\n SelectObject,\n SqlFunction,\n WhereCondition,\n} from \"./puri.types\";\nimport chalk from \"chalk\";\n\n// 메인 Puri 클래스\nexport class Puri<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TJoined = EmptyRecord,\n> {\n private knexQuery: Knex.QueryBuilder;\n\n // 생성자 시그니처들\n constructor(\n knex: Knex,\n tableName: TTable extends keyof TSchema ? TTable : unknown\n );\n constructor(\n knex: Knex,\n subquery: Puri<TSchema, any, any, TOriginal, any>,\n alias: TTable extends string ? TTable : never\n );\n constructor(\n private knex: Knex,\n tableNameOrSubquery: any,\n alias?: TTable extends string ? TTable : never\n ) {\n if (typeof tableNameOrSubquery === \"string\") {\n // 일반 테이블로 시작\n this.knexQuery = knex(tableNameOrSubquery).from(tableNameOrSubquery);\n } else {\n // 서브쿼리로 시작\n this.knexQuery = knex.from(tableNameOrSubquery.raw().as(alias));\n }\n }\n\n // Static SQL helper functions\n static count(column: string = \"*\"): SqlFunction<\"number\"> {\n return {\n _type: \"sql_function\",\n _return: \"number\",\n _sql: `COUNT(${column})`,\n };\n }\n\n static sum(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `SUM(${column})` };\n }\n\n static avg(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `AVG(${column})` };\n }\n\n static max(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MAX(${column})` };\n }\n\n static min(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MIN(${column})` };\n }\n\n static concat(...args: string[]): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `CONCAT(${args.join(\", \")})`,\n };\n }\n\n static upper(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `UPPER(${column})`,\n };\n }\n\n static lower(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `LOWER(${column})`,\n };\n }\n\n // Raw functions\n static rawString(sql: string): SqlFunction<\"string\"> {\n return { _type: \"sql_function\", _return: \"string\", _sql: sql };\n }\n\n static rawNumber(sql: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: sql };\n }\n\n static rawBoolean(sql: string): SqlFunction<\"boolean\"> {\n return { _type: \"sql_function\", _return: \"boolean\", _sql: sql };\n }\n\n static rawDate(sql: string): SqlFunction<\"date\"> {\n return { _type: \"sql_function\", _return: \"date\", _sql: sql };\n }\n\n // Alias 기반 Select\n select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(\n selectObj: TSelect\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>,\n TJoined\n > {\n const selectClauses: (string | Knex.Raw)[] = [];\n\n for (const [alias, columnOrFunction] of Object.entries(selectObj)) {\n if (\n typeof columnOrFunction === \"object\" &&\n columnOrFunction._type === \"sql_function\"\n ) {\n // SQL 함수인 경우\n selectClauses.push(\n this.knex.raw(`${columnOrFunction._sql} as ${alias}`)\n );\n } else {\n // 일반 컬럼인 경우\n const columnPath = columnOrFunction as string;\n if (alias === columnPath) {\n // alias와 컬럼명이 같으면 alias 생략\n selectClauses.push(columnPath);\n } else {\n // alias 지정\n selectClauses.push(`${columnPath} as ${alias}`);\n }\n }\n }\n\n this.knexQuery.select(selectClauses);\n return this as any;\n }\n\n // 전체 선택 (편의 메서드)\n selectAll(): Puri<\n TSchema,\n TTable,\n TOriginal,\n TTable extends keyof TSchema\n ? TSchema[TTable] & TJoined\n : TResult & TJoined,\n TJoined\n > {\n this.knexQuery.select(\"*\");\n return this as any;\n }\n\n // Where 조건 (조인된 테이블 컬럼도 지원)\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where(\n columnOrConditions: any,\n operatorOrValue?: any,\n value?: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (typeof columnOrConditions === \"object\") {\n this.knexQuery.where(columnOrConditions);\n } else if (arguments.length === 2) {\n if (operatorOrValue === null) {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue);\n } else if (arguments.length === 3) {\n if (value === null) {\n if (operatorOrValue === \"!=\") {\n this.knexQuery.whereNotNull(columnOrConditions);\n return this;\n } else if (operatorOrValue === \"=\") {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue, value);\n } else {\n this.knexQuery.where(columnOrConditions);\n }\n return this;\n }\n\n // WhereIn (조인된 테이블 컬럼도 지원)\n whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereIn(column, values);\n return this;\n }\n\n whereNotIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereNotIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereNotIn(column, values);\n return this;\n }\n\n whereMatch<\n TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>,\n >(column: TColumn, value: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereRaw(`MATCH (${String(column)}) AGAINST (?)`, [value]);\n return this;\n }\n\n // WhereGroup (괄호 그룹핑 지원)\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.where((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(builder);\n callback(group);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orWhere((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(builder);\n callback(group);\n });\n return this;\n }\n\n // Join\n join<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn,\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TJoinTable extends keyof TSchema>(\n table: TJoinTable,\n joinCallback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined & Record<TAlias, TSubResult>>;\n join(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n join(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: join(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.join(tableOrSubquery.raw().as(alias), left, right);\n } else if (\n args.length === 2 &&\n typeof args[0] === \"string\" &&\n typeof args[1] === \"string\"\n ) {\n const [left, right] = args;\n this.knexQuery.join(tableOrSubquery as string, left, right);\n } else if (args.length === 1 && typeof args[0] === \"function\") {\n const joinCallback = args[0];\n this.knexQuery.join(tableOrSubquery as string, (joinClause) => {\n joinCallback(new JoinClauseGroup(joinClause));\n });\n } else {\n throw new Error(\"Invalid arguments\");\n }\n return this as any;\n }\n\n leftJoin<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n TRColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined & Record<TJoinTable, TSchema[TJoinTable]>>,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn,\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>\n >;\n leftJoin<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, Partial<TSubResult>>\n >;\n leftJoin(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n leftJoin(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: leftJoin(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias), left, right);\n } else {\n const [left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery as string, left, right);\n }\n return this as any;\n }\n\n // OrderBy\n orderBy<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n column: TColumn,\n direction: \"asc\" | \"desc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n orderBy(\n column: string,\n direction: \"asc\" | \"desc\" = \"asc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orderBy(column, direction);\n return this;\n }\n\n // 기본 쿼리 메서드들\n limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.limit(count);\n return this;\n }\n\n offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.offset(count);\n return this;\n }\n\n // Group by (조인된 테이블 컬럼도 지원)\n groupBy<TColumns extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n ...columns: TColumns[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n groupBy(...columns: string[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.groupBy(...(columns as string[]));\n return this;\n }\n\n having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having<TColumn extends ResultAvailableColumns<TSchema, TTable, TOriginal, TResult, TJoined>>(\n condition: TColumn,\n operator: ComparisonOperator,\n value: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having(...conditions: string[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.having(...(conditions as [string, string, string]));\n return this;\n }\n // 실행 메서드들 - thenable 구현\n then<TResult1, TResult2 = never>(\n onfulfilled?:\n | ((\n value: Expand<TResult>[]\n ) => Expand<TResult1> | PromiseLike<Expand<TResult1>>)\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult1> | TResult2> {\n return this.knexQuery.then(onfulfilled as any, onrejected);\n }\n\n catch<TResult2 = never>(\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult> | TResult2> {\n return this.knexQuery.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<Expand<TResult>> {\n return this.knexQuery.finally(onfinally);\n }\n\n // 안전한 실행 메서드들\n async first(): Promise<Expand<TResult> | undefined> {\n return this.knexQuery.first() as Promise<Expand<TResult> | undefined>;\n }\n\n async firstOrFail(): Promise<TResult> {\n const result = await this.knexQuery.first();\n if (!result) {\n throw new Error(\"No results found\");\n }\n return result as TResult;\n }\n\n async at(index: number): Promise<Expand<TResult> | undefined> {\n const results = await this;\n return results[index] as Expand<TResult> | undefined;\n }\n\n async assertAt(index: number): Promise<Expand<TResult>> {\n const results = await this;\n const result = results[index];\n if (result === undefined) {\n throw new Error(`No result found at index ${index}`);\n }\n return result;\n }\n\n // Insert/Update/Delete\n // TODO(Haze, 251030): InsertData<T>에서 nullable type을 제대로 처리하지 못하는 것 같음.\n async insert(\n data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown\n ): Promise<number[]> {\n return this.knexQuery.insert(data);\n }\n\n async update(\n data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>\n ): Promise<number> {\n return this.knexQuery.update(data);\n }\n\n async delete(): Promise<number> {\n return this.knexQuery.delete();\n }\n\n toQuery(): string {\n return this.knexQuery.toQuery();\n }\n\n debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n console.log(\n `${chalk.cyan(\"[Puri Debug]\")} ${chalk.yellow(this.formatSQL(this.toQuery()))}`\n );\n return this;\n }\n\n formatSQL(unformatted: string): string {\n // SQL 예약어 목록\n const keywords = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"INSERT\",\n \"INTO\",\n \"VALUES\",\n \"UPDATE\",\n \"DELETE\",\n \"CREATE\",\n \"TABLE\",\n \"ALTER\",\n \"DROP\",\n \"JOIN\",\n \"ON\",\n \"INNER\",\n \"LEFT\",\n \"RIGHT\",\n \"FULL\",\n \"OUTER\",\n \"GROUP\",\n \"BY\",\n \"ORDER\",\n \"HAVING\",\n \"DISTINCT\",\n \"LIMIT\",\n \"OFFSET\",\n \"AS\",\n \"AND\",\n \"OR\",\n \"NOT\",\n \"IN\",\n \"LIKE\",\n \"IS\",\n \"NULL\",\n \"CASE\",\n \"WHEN\",\n \"THEN\",\n \"ELSE\",\n \"END\",\n \"UNION\",\n \"ALL\",\n \"EXISTS\",\n \"BETWEEN\",\n ];\n\n let formatted = unformatted;\n\n // 예약어를 대문자로 변환\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, \"gi\");\n formatted = formatted.replace(regex, keyword.toUpperCase());\n });\n\n // 주요 절 앞에 줄바꿈 추가\n const majorClauses = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"GROUP BY\",\n \"ORDER BY\",\n \"HAVING\",\n \"LIMIT\",\n \"UNION\",\n ];\n majorClauses.forEach((clause) => {\n const regex = new RegExp(`\\\\s+(${clause})\\\\s+`, \"gi\");\n formatted = formatted.replace(regex, `\\n${clause.toUpperCase()} `);\n });\n\n // JOIN 절 처리\n formatted = formatted.replace(\n /\\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\\s+)?JOIN\\s+/gi,\n \"\\n$1JOIN \"\n );\n\n // AND, OR 조건 처리\n formatted = formatted.replace(/\\s+(AND|OR)\\s+/gi, \"\\n $1 \");\n\n // 괄호 처리 및 들여쓰기\n const lines = formatted.split(\"\\n\");\n const indentedLines = [];\n let indentLevel = 0;\n\n for (let line of lines) {\n const trimmedLine = line.trim();\n if (!trimmedLine) continue;\n\n // 닫는 괄호가 있으면 들여쓰기 레벨 감소\n const closingParens = (trimmedLine.match(/\\)/g) || []).length;\n const openingParens = (trimmedLine.match(/\\(/g) || []).length;\n\n if (closingParens > 0 && openingParens === 0) {\n indentLevel = Math.max(0, indentLevel - closingParens);\n }\n\n // 현재 들여쓰기 적용\n const indent = \" \".repeat(indentLevel);\n indentedLines.push(indent + trimmedLine);\n\n // 여는 괄호가 있으면 들여쓰기 레벨 증가\n if (openingParens > closingParens) {\n indentLevel += openingParens - closingParens;\n }\n }\n\n return indentedLines.join(\"\\n\").trim();\n }\n\n raw(): Knex.QueryBuilder {\n return this.knexQuery;\n }\n}\n\n// 11. Database 클래스\nclass WhereGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private builder: Knex.QueryBuilder) {}\n\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where(args[0], ...args.slice(1));\n return this;\n }\n\n orWhere(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere(args[0], ...args.slice(1));\n return this;\n }\n\n whereIn<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.whereIn(column, values);\n return this;\n }\n\n orWhereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhereIn(column, values);\n return this;\n }\n\n // 중첩 그룹 지원\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n}\n\nexport class JoinClauseGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private callback: Knex.JoinClause) {}\n\n on(\n callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.on(...(args as [string, string]));\n return this;\n }\n\n orOn(\n callback: (joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(column: string, value: any): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.orOn(...(args as [string, string]));\n return this;\n }\n}\n"],"names":["JoinClauseGroup","Puri","knex","tableNameOrSubquery","alias","knexQuery","from","raw","as","select","selectObj","selectClauses","Object","entries","columnOrFunction","_type","push","_sql","columnPath","selectAll","where","columnOrConditions","operatorOrValue","value","arguments","length","whereNull","whereNotNull","whereIn","column","values","whereNotIn","whereMatch","whereRaw","String","whereGroup","callback","builder","group","WhereGroup","orWhereGroup","orWhere","join","tableOrSubquery","args","left","right","joinCallback","joinClause","Error","leftJoin","orderBy","direction","limit","count","offset","groupBy","columns","having","conditions","then","onfulfilled","onrejected","catch","finally","onfinally","first","firstOrFail","result","at","index","results","assertAt","undefined","insert","data","update","delete","toQuery","debug","console","log","chalk","cyan","yellow","formatSQL","unformatted","keywords","formatted","forEach","keyword","regex","RegExp","replace","toUpperCase","majorClauses","clause","lines","split","indentedLines","indentLevel","line","trimmedLine","trim","closingParens","match","openingParens","Math","max","indent","repeat","_return","sum","avg","min","concat","upper","lower","rawString","sql","rawNumber","rawBoolean","rawDate","slice","orWhereIn","subBuilder","subGroup","on","orOn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/database/puri.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n AvailableColumns,\n ComparisonOperator,\n EmptyRecord,\n Expand,\n ExtractColumnType,\n FulltextColumns,\n InsertData,\n MergeJoined,\n ParseSelectObject,\n ResultAvailableColumns,\n SelectObject,\n SqlFunction,\n WhereCondition,\n} from \"./puri.types\";\nimport chalk from \"chalk\";\n\n// 메인 Puri 클래스\nexport class Puri<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TResult = TTable extends keyof TSchema ? TSchema[TTable] : unknown,\n TJoined = EmptyRecord,\n> {\n private knexQuery: Knex.QueryBuilder;\n\n // 생성자 시그니처들\n constructor(\n knex: Knex,\n tableName: TTable extends keyof TSchema ? TTable : unknown\n );\n constructor(\n knex: Knex,\n subquery: Puri<TSchema, any, any, TOriginal, any>,\n alias: TTable extends string ? TTable : never\n );\n constructor(\n private knex: Knex,\n tableNameOrSubquery: any,\n alias?: TTable extends string ? TTable : never\n ) {\n if (typeof tableNameOrSubquery === \"string\") {\n // 일반 테이블로 시작\n this.knexQuery = knex(tableNameOrSubquery).from(tableNameOrSubquery);\n } else {\n // 서브쿼리로 시작\n this.knexQuery = knex.from(tableNameOrSubquery.raw().as(alias));\n }\n }\n\n // Static SQL helper functions\n static count(column: string = \"*\"): SqlFunction<\"number\"> {\n return {\n _type: \"sql_function\",\n _return: \"number\",\n _sql: `COUNT(${column})`,\n };\n }\n\n static sum(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `SUM(${column})` };\n }\n\n static avg(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `AVG(${column})` };\n }\n\n static max(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MAX(${column})` };\n }\n\n static min(column: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: `MIN(${column})` };\n }\n\n static concat(...args: string[]): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `CONCAT(${args.join(\", \")})`,\n };\n }\n\n static upper(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `UPPER(${column})`,\n };\n }\n\n static lower(column: string): SqlFunction<\"string\"> {\n return {\n _type: \"sql_function\",\n _return: \"string\",\n _sql: `LOWER(${column})`,\n };\n }\n\n // Raw functions\n static rawString(sql: string): SqlFunction<\"string\"> {\n return { _type: \"sql_function\", _return: \"string\", _sql: sql };\n }\n\n static rawNumber(sql: string): SqlFunction<\"number\"> {\n return { _type: \"sql_function\", _return: \"number\", _sql: sql };\n }\n\n static rawBoolean(sql: string): SqlFunction<\"boolean\"> {\n return { _type: \"sql_function\", _return: \"boolean\", _sql: sql };\n }\n\n static rawDate(sql: string): SqlFunction<\"date\"> {\n return { _type: \"sql_function\", _return: \"date\", _sql: sql };\n }\n\n // Alias 기반 Select\n select<TSelect extends SelectObject<TSchema, TTable, TOriginal, TJoined>>(\n selectObj: TSelect\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n ParseSelectObject<TSchema, TTable, TSelect, TOriginal, TJoined>,\n TJoined\n > {\n const selectClauses: (string | Knex.Raw)[] = [];\n\n for (const [alias, columnOrFunction] of Object.entries(selectObj)) {\n if (\n typeof columnOrFunction === \"object\" &&\n columnOrFunction._type === \"sql_function\"\n ) {\n // SQL 함수인 경우\n selectClauses.push(\n this.knex.raw(`${columnOrFunction._sql} as ${alias}`)\n );\n } else {\n // 일반 컬럼인 경우\n const columnPath = columnOrFunction as string;\n if (alias === columnPath) {\n // alias와 컬럼명이 같으면 alias 생략\n selectClauses.push(columnPath);\n } else {\n // alias 지정\n selectClauses.push(`${columnPath} as ${alias}`);\n }\n }\n }\n\n this.knexQuery.select(selectClauses);\n return this as any;\n }\n\n // 전체 선택 (편의 메서드)\n selectAll(): Puri<\n TSchema,\n TTable,\n TOriginal,\n TTable extends keyof TSchema\n ? TSchema[TTable] & TJoined\n : TResult & TJoined,\n TJoined\n > {\n this.knexQuery.select(\"*\");\n return this as any;\n }\n\n // Where 조건 (조인된 테이블 컬럼도 지원)\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n where(\n columnOrConditions: any,\n operatorOrValue?: any,\n value?: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (typeof columnOrConditions === \"object\") {\n this.knexQuery.where(columnOrConditions);\n } else if (arguments.length === 2) {\n if (operatorOrValue === null) {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue);\n } else if (arguments.length === 3) {\n if (value === null) {\n if (operatorOrValue === \"!=\") {\n this.knexQuery.whereNotNull(columnOrConditions);\n return this;\n } else if (operatorOrValue === \"=\") {\n this.knexQuery.whereNull(columnOrConditions);\n return this;\n }\n }\n this.knexQuery.where(columnOrConditions, operatorOrValue, value);\n } else {\n this.knexQuery.where(columnOrConditions);\n }\n return this;\n }\n\n // WhereIn (조인된 테이블 컬럼도 지원)\n whereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereIn(column, values);\n return this;\n }\n\n whereNotIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n whereNotIn(\n column: string,\n values: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereNotIn(column, values);\n return this;\n }\n\n whereMatch<\n TColumn extends FulltextColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.whereRaw(`MATCH (${String(column)}) AGAINST (?)`, [value]);\n return this;\n }\n\n // WhereGroup (괄호 그룹핑 지원)\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.where((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n builder\n );\n callback(group);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orWhere((builder) => {\n const group = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n builder\n );\n callback(group);\n });\n return this;\n }\n\n // Join\n join<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n TRColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TJoinTable extends keyof TSchema>(\n table: TJoinTable,\n joinCallback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n MergeJoined<TJoined, Record<TJoinTable, TSchema[TJoinTable]>>\n >;\n join<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, TSubResult>\n >;\n join(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n join(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: join(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.join(tableOrSubquery.raw().as(alias), left, right);\n } else if (\n args.length === 2 &&\n typeof args[0] === \"string\" &&\n typeof args[1] === \"string\"\n ) {\n const [left, right] = args;\n this.knexQuery.join(tableOrSubquery as string, left, right);\n } else if (args.length === 1 && typeof args[0] === \"function\") {\n const joinCallback = args[0];\n this.knexQuery.join(tableOrSubquery as string, (joinClause) => {\n joinCallback(new JoinClauseGroup(joinClause));\n });\n } else {\n throw new Error(\"Invalid arguments\");\n }\n return this as any;\n }\n\n leftJoin<\n TJoinTable extends keyof TSchema,\n TLColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n TRColumn extends AvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TJoined & Record<TJoinTable, TSchema[TJoinTable]>\n >,\n >(\n table: TJoinTable,\n left: TLColumn,\n right: TRColumn\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TJoinTable, Partial<TSchema[TJoinTable]>>\n >;\n leftJoin<TSubResult, TAlias extends string>(\n subquery: Puri<TSchema, any, any, TSubResult, any>,\n alias: TAlias,\n left: string,\n right: string\n ): Puri<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined & Record<TAlias, Partial<TSubResult>>\n >;\n leftJoin(\n table: string,\n left: string,\n right: string\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n leftJoin(\n tableOrSubquery: string | keyof TSchema | Puri<TSchema, any, any, any, any>,\n ...args: any[]\n ): Puri<TSchema, TTable, TOriginal, TResult, any> {\n if (tableOrSubquery instanceof Puri) {\n // 서브쿼리 조인: leftJoin(subquery, alias, left, right)\n const [alias, left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery.raw().as(alias), left, right);\n } else {\n const [left, right] = args;\n this.knexQuery.leftJoin(tableOrSubquery as string, left, right);\n }\n return this as any;\n }\n\n // OrderBy\n orderBy<\n TColumn extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(\n column: TColumn,\n direction: \"asc\" | \"desc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n orderBy(\n column: string,\n direction: \"asc\" | \"desc\" = \"asc\"\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.orderBy(column, direction);\n return this;\n }\n\n // 기본 쿼리 메서드들\n limit(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.limit(count);\n return this;\n }\n\n offset(count: number): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.offset(count);\n return this;\n }\n\n // Group by (조인된 테이블 컬럼도 지원)\n groupBy<\n TColumns extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(...columns: TColumns[]): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n groupBy(\n ...columns: string[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.groupBy(...(columns as string[]));\n return this;\n }\n\n having(condition: string): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having<\n TColumn extends ResultAvailableColumns<\n TSchema,\n TTable,\n TOriginal,\n TResult,\n TJoined\n >,\n >(\n condition: TColumn,\n operator: ComparisonOperator,\n value: any\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined>;\n having(\n ...conditions: string[]\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n this.knexQuery.having(...(conditions as [string, string, string]));\n return this;\n }\n // 실행 메서드들 - thenable 구현\n then<TResult1, TResult2 = never>(\n onfulfilled?:\n | ((\n value: Expand<TResult>[]\n ) => Expand<TResult1> | PromiseLike<Expand<TResult1>>)\n | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult1> | TResult2> {\n return this.knexQuery.then(onfulfilled as any, onrejected);\n }\n\n catch<TResult2 = never>(\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<Expand<TResult> | TResult2> {\n return this.knexQuery.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | null): Promise<Expand<TResult>> {\n return this.knexQuery.finally(onfinally);\n }\n\n // 안전한 실행 메서드들\n async first(): Promise<Expand<TResult> | undefined> {\n return this.knexQuery.first() as Promise<Expand<TResult> | undefined>;\n }\n\n async firstOrFail(): Promise<TResult> {\n const result = await this.knexQuery.first();\n if (!result) {\n throw new Error(\"No results found\");\n }\n return result as TResult;\n }\n\n async at(index: number): Promise<Expand<TResult> | undefined> {\n const results = await this;\n return results[index] as Expand<TResult> | undefined;\n }\n\n async assertAt(index: number): Promise<Expand<TResult>> {\n const results = await this;\n const result = results[index];\n if (result === undefined) {\n throw new Error(`No result found at index ${index}`);\n }\n return result;\n }\n\n // Insert/Update/Delete\n // TODO(Haze, 251030): InsertData<T>에서 nullable type을 제대로 처리하지 못하는 것 같음.\n async insert(\n data: TTable extends keyof TSchema ? InsertData<TSchema[TTable]> : unknown\n ): Promise<number[]> {\n return this.knexQuery.insert(data);\n }\n\n async update(\n data: Partial<TTable extends keyof TSchema ? TSchema[TTable] : unknown>\n ): Promise<number> {\n return this.knexQuery.update(data);\n }\n\n async delete(): Promise<number> {\n return this.knexQuery.delete();\n }\n\n toQuery(): string {\n return this.knexQuery.toQuery();\n }\n\n debug(): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n console.log(\n `${chalk.cyan(\"[Puri Debug]\")} ${chalk.yellow(this.formatSQL(this.toQuery()))}`\n );\n return this;\n }\n\n formatSQL(unformatted: string): string {\n // SQL 예약어 목록\n const keywords = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"INSERT\",\n \"INTO\",\n \"VALUES\",\n \"UPDATE\",\n \"DELETE\",\n \"CREATE\",\n \"TABLE\",\n \"ALTER\",\n \"DROP\",\n \"JOIN\",\n \"ON\",\n \"INNER\",\n \"LEFT\",\n \"RIGHT\",\n \"FULL\",\n \"OUTER\",\n \"GROUP\",\n \"BY\",\n \"ORDER\",\n \"HAVING\",\n \"DISTINCT\",\n \"LIMIT\",\n \"OFFSET\",\n \"AS\",\n \"AND\",\n \"OR\",\n \"NOT\",\n \"IN\",\n \"LIKE\",\n \"IS\",\n \"NULL\",\n \"CASE\",\n \"WHEN\",\n \"THEN\",\n \"ELSE\",\n \"END\",\n \"UNION\",\n \"ALL\",\n \"EXISTS\",\n \"BETWEEN\",\n ];\n\n let formatted = unformatted;\n\n // 예약어를 대문자로 변환\n keywords.forEach((keyword) => {\n const regex = new RegExp(`\\\\b${keyword}\\\\b`, \"gi\");\n formatted = formatted.replace(regex, keyword.toUpperCase());\n });\n\n // 주요 절 앞에 줄바꿈 추가\n const majorClauses = [\n \"SELECT\",\n \"FROM\",\n \"WHERE\",\n \"GROUP BY\",\n \"ORDER BY\",\n \"HAVING\",\n \"LIMIT\",\n \"UNION\",\n ];\n majorClauses.forEach((clause) => {\n const regex = new RegExp(`\\\\s+(${clause})\\\\s+`, \"gi\");\n formatted = formatted.replace(regex, `\\n${clause.toUpperCase()} `);\n });\n\n // JOIN 절 처리\n formatted = formatted.replace(\n /\\s+((?:INNER|LEFT|RIGHT|FULL OUTER)\\s+)?JOIN\\s+/gi,\n \"\\n$1JOIN \"\n );\n\n // AND, OR 조건 처리\n formatted = formatted.replace(/\\s+(AND|OR)\\s+/gi, \"\\n $1 \");\n\n // 괄호 처리 및 들여쓰기\n const lines = formatted.split(\"\\n\");\n const indentedLines = [];\n let indentLevel = 0;\n\n for (let line of lines) {\n const trimmedLine = line.trim();\n if (!trimmedLine) continue;\n\n // 닫는 괄호가 있으면 들여쓰기 레벨 감소\n const closingParens = (trimmedLine.match(/\\)/g) || []).length;\n const openingParens = (trimmedLine.match(/\\(/g) || []).length;\n\n if (closingParens > 0 && openingParens === 0) {\n indentLevel = Math.max(0, indentLevel - closingParens);\n }\n\n // 현재 들여쓰기 적용\n const indent = \" \".repeat(indentLevel);\n indentedLines.push(indent + trimmedLine);\n\n // 여는 괄호가 있으면 들여쓰기 레벨 증가\n if (openingParens > closingParens) {\n indentLevel += openingParens - closingParens;\n }\n }\n\n return indentedLines.join(\"\\n\").trim();\n }\n\n raw(): Knex.QueryBuilder {\n return this.knexQuery;\n }\n\n increment<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: number\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (value <= 0) {\n throw new Error(\"Increment value must be greater than 0\");\n }\n this.knexQuery.increment(column, value);\n return this;\n }\n\n decrement<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: number\n ): Puri<TSchema, TTable, TOriginal, TResult, TJoined> {\n if (value <= 0) {\n throw new Error(\"Decrement value must be greater than 0\");\n }\n this.knexQuery.decrement(column, value);\n return this;\n }\n}\n\n// 11. Database 클래스\nclass WhereGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private builder: Knex.QueryBuilder) {}\n\n where(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where<TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>>(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n where(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where(args[0], ...args.slice(1));\n return this;\n }\n\n orWhere(\n conditions: WhereCondition<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n operator: ComparisonOperator | \"like\",\n value: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(raw: string): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhere(...args: any[]): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere(args[0], ...args.slice(1));\n return this;\n }\n\n whereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n whereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.whereIn(column, values);\n return this;\n }\n\n orWhereIn<\n TColumn extends AvailableColumns<TSchema, TTable, TOriginal, TJoined>,\n >(\n column: TColumn,\n values: ExtractColumnType<\n TSchema,\n TTable,\n TColumn & string,\n TOriginal,\n TJoined\n >[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined>;\n orWhereIn(\n column: string,\n values: any[]\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhereIn(column, values);\n return this;\n }\n\n // 중첩 그룹 지원\n whereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.where((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n\n orWhereGroup(\n callback: (\n group: WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ) => WhereGroup<TSchema, TTable, TOriginal, TJoined>\n ): WhereGroup<TSchema, TTable, TOriginal, TJoined> {\n this.builder.orWhere((subBuilder) => {\n const subGroup = new WhereGroup<TSchema, TTable, TOriginal, TJoined>(\n subBuilder\n );\n callback(subGroup);\n });\n return this;\n }\n}\n\nexport class JoinClauseGroup<\n TSchema,\n TTable extends keyof TSchema | string,\n TOriginal = any,\n TJoined = EmptyRecord,\n> {\n constructor(private callback: Knex.JoinClause) {}\n\n on(\n callback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(\n column: string,\n value: any\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n on(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.on(...(args as [string, string]));\n return this;\n }\n\n orOn(\n callback: (\n joinClause: JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>\n ) => void\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(\n column: string,\n value: any\n ): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined>;\n orOn(...args: any[]): JoinClauseGroup<TSchema, TTable, TOriginal, TJoined> {\n this.callback.orOn(...(args as [string, string]));\n return this;\n }\n}\n"],"names":["JoinClauseGroup","Puri","knex","tableNameOrSubquery","alias","knexQuery","from","raw","as","select","selectObj","selectClauses","Object","entries","columnOrFunction","_type","push","_sql","columnPath","selectAll","where","columnOrConditions","operatorOrValue","value","arguments","length","whereNull","whereNotNull","whereIn","column","values","whereNotIn","whereMatch","whereRaw","String","whereGroup","callback","builder","group","WhereGroup","orWhereGroup","orWhere","join","tableOrSubquery","args","left","right","joinCallback","joinClause","Error","leftJoin","orderBy","direction","limit","count","offset","groupBy","columns","having","conditions","then","onfulfilled","onrejected","catch","finally","onfinally","first","firstOrFail","result","at","index","results","assertAt","undefined","insert","data","update","delete","toQuery","debug","console","log","chalk","cyan","yellow","formatSQL","unformatted","keywords","formatted","forEach","keyword","regex","RegExp","replace","toUpperCase","majorClauses","clause","lines","split","indentedLines","indentLevel","line","trimmedLine","trim","closingParens","match","openingParens","Math","max","indent","repeat","increment","decrement","_return","sum","avg","min","concat","upper","lower","rawString","sql","rawNumber","rawBoolean","rawDate","slice","orWhereIn","subBuilder","subGroup","on","orOn"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export type Expand<T> = T extends any[] ? {
|
|
|
6
6
|
} : T;
|
|
7
7
|
export type MergeJoined<TExisting, TNew> = TExisting extends EmptyRecord ? TNew : TExisting & TNew;
|
|
8
8
|
type DeepEqual<T, U> = [T] extends [U] ? [U] extends [T] ? true : false : false;
|
|
9
|
-
type Extends<T, U> = DeepEqual<T, Record<string, never>> extends true ? false :
|
|
9
|
+
type Extends<T, U> = DeepEqual<T, Record<string, never>> extends true ? false : T extends U ? true : false;
|
|
10
10
|
type NullableToOptional<T> = {
|
|
11
11
|
[K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<T[K], null | undefined>;
|
|
12
12
|
} & Partial<{
|
|
@@ -31,13 +31,9 @@ export type SelectObject<TSchema, T extends keyof TSchema | string, TOriginal =
|
|
|
31
31
|
export type ParseSelectObject<TSchema, T extends keyof TSchema | string, S extends SelectObject<TSchema, T, TOriginal, TJoined>, TOriginal = any, TJoined = EmptyRecord> = {
|
|
32
32
|
[K in keyof S]: S[K] extends SqlFunction<any> ? ExtractSqlType<S[K]> : ExtractColumnType<TSchema, T, S[K] & string, TOriginal, TJoined>;
|
|
33
33
|
};
|
|
34
|
-
export type WhereCondition<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> =
|
|
35
|
-
[
|
|
36
|
-
}
|
|
37
|
-
[K in keyof TOriginal]?: TOriginal[K] | TOriginal[K][];
|
|
38
|
-
}) & (TJoined extends Record<string, any> ? {
|
|
39
|
-
[K in keyof TJoined as TJoined[K] extends Record<string, any> ? keyof TJoined[K] & string : never]?: TJoined[K] extends Record<string, any> ? TJoined[K][K extends keyof TJoined[K] ? K : never] | TJoined[K][K extends keyof TJoined[K] ? K : never][] : never;
|
|
40
|
-
} : Record<string, never>);
|
|
34
|
+
export type WhereCondition<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = {
|
|
35
|
+
[key in AvailableColumns<TSchema, T, TOriginal, TJoined>]?: ExtractColumnType<TSchema, T, key & string, TOriginal, TJoined>;
|
|
36
|
+
};
|
|
41
37
|
export type FulltextColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (TSchema[T] extends {
|
|
42
38
|
__fulltext__: readonly (infer Col)[];
|
|
43
39
|
} ? Col & string : never) | (TSchema[T] extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7E,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,GACnC;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,EAAE,GAChC,CAAC,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,8 +16,9 @@ export * from "./utils/controller";
|
|
|
16
16
|
export * from "./utils/model";
|
|
17
17
|
export * from "./utils/utils";
|
|
18
18
|
export * from "./testing/fixture-manager";
|
|
19
|
-
export * from "./migration/migrator";
|
|
20
19
|
export * from "./entity/entity-manager";
|
|
21
20
|
export * from "./entity/entity";
|
|
21
|
+
export * from "./migration/migrator";
|
|
22
|
+
export * from "./migration/types";
|
|
22
23
|
export * from "./file-storage/driver";
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./api/decorators"),exports);_export_star(require("./api/sonamu"),exports);_export_star(require("./database/base-model"),exports);_export_star(require("./api/base-frame"),exports);_export_star(require("./database/db"),exports);_export_star(require("./database/upsert-builder"),exports);_export_star(require("./database/puri"),exports);_export_star(require("./database/puri-wrapper"),exports);_export_star(require("./database/puri.types"),exports);_export_star(require("./exceptions/error-handler"),exports);_export_star(require("./exceptions/so-exceptions"),exports);_export_star(require("./stream/sse"),exports);_export_star(require("./types/types"),exports);_export_star(require("./utils/controller"),exports);_export_star(require("./utils/model"),exports);_export_star(require("./utils/utils"),exports);_export_star(require("./testing/fixture-manager"),exports);_export_star(require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./api/decorators"),exports);_export_star(require("./api/sonamu"),exports);_export_star(require("./database/base-model"),exports);_export_star(require("./api/base-frame"),exports);_export_star(require("./database/db"),exports);_export_star(require("./database/upsert-builder"),exports);_export_star(require("./database/puri"),exports);_export_star(require("./database/puri-wrapper"),exports);_export_star(require("./database/puri.types"),exports);_export_star(require("./exceptions/error-handler"),exports);_export_star(require("./exceptions/so-exceptions"),exports);_export_star(require("./stream/sse"),exports);_export_star(require("./types/types"),exports);_export_star(require("./utils/controller"),exports);_export_star(require("./utils/model"),exports);_export_star(require("./utils/utils"),exports);_export_star(require("./testing/fixture-manager"),exports);_export_star(require("./entity/entity-manager"),exports);_export_star(require("./entity/entity"),exports);_export_star(require("./migration/migrator"),exports);_export_star(require("./migration/types"),exports);_export_star(require("./file-storage/driver"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export type * from \"./api/context\";\nexport * from \"./api/decorators\";\nexport * from \"./api/sonamu\";\nexport * from \"./database/base-model\";\nexport * from \"./api/base-frame\";\nexport * from \"./database/db\";\nexport * from \"./database/upsert-builder\";\nexport * from \"./database/puri\";\nexport * from \"./database/puri-wrapper\";\nexport * from \"./database/puri.types\";\nexport * from \"./exceptions/error-handler\";\nexport * from \"./exceptions/so-exceptions\";\nexport * from \"./stream/sse\";\nexport * from \"./types/types\";\nexport * from \"./utils/controller\";\nexport * from \"./utils/model\";\nexport * from \"./utils/utils\";\nexport * from \"./testing/fixture-manager\";\nexport * from \"./
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export type * from \"./api/context\";\nexport * from \"./api/decorators\";\nexport * from \"./api/sonamu\";\nexport * from \"./database/base-model\";\nexport * from \"./api/base-frame\";\nexport * from \"./database/db\";\nexport * from \"./database/upsert-builder\";\nexport * from \"./database/puri\";\nexport * from \"./database/puri-wrapper\";\nexport * from \"./database/puri.types\";\nexport * from \"./exceptions/error-handler\";\nexport * from \"./exceptions/so-exceptions\";\nexport * from \"./stream/sse\";\nexport * from \"./types/types\";\nexport * from \"./utils/controller\";\nexport * from \"./utils/model\";\nexport * from \"./utils/utils\";\nexport * from \"./testing/fixture-manager\";\nexport * from \"./entity/entity-manager\";\nexport * from \"./entity/entity\";\nexport * from \"./migration/migrator\";\nexport * from \"./migration/types\";\nexport * from \"./file-storage/driver\";\n\n// export * from \"./api/code-converters\";\n// export * from \"./entity/entity-utils\";\n// export * from \"./syncer/syncer\";\n"],"names":[],"mappings":"2FACc,kDACA,8CACA,uDACA,kDACA,+CACA,2DACA,iDACA,yDACA,uDACA,4DACA,4DACA,8CACA,+CACA,oDACA,+CACA,+CACA,2DACA,yDACA,iDACA,sDACA,mDACA"}
|
|
@@ -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 generateAlterCode(){return generateAlterCode},get generateCreateCode(){return generateCreateCode}});var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _prettier=/*#__PURE__*/_interop_require_default(require("prettier"));var _fastdeepequal=/*#__PURE__*/_interop_require_default(require("fast-deep-equal"));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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _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 _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}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 _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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}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 _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}}}function generateCreateCode_ColumnAndIndexes(table,columns,indexes){return _async_to_generator(function(){var __partition,ngramIndexes,standardIndexes,lines,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:__partition=_sliced_to_array(_lodash.default.partition(indexes,function(i){return i.type==="fulltext"&&i.parser==="ngram"}),2),ngramIndexes=__partition[0],standardIndexes=__partition[1];lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'await knex.schema.createTable("'.concat(table,'", (table) => {'),"// columns"].concat(_to_consumable_array(genColumnDefinitions(columns)),["","// indexes"],_to_consumable_array(standardIndexes.map(function(index){return genIndexDefinition(index,table)})),["});"],_to_consumable_array(ngramIndexes.map(function(index){return genIndexDefinition(index,table)})),["}","","export async function down(knex: Knex): Promise<void> {",' return knex.schema.dropTable("'.concat(table,'");'),"}"]);_tmp={table:table,type:"normal",title:"create__".concat(table)};return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:return[2,(_tmp.formatted=_state.sent(),_tmp)]}})})()}function genColumnDefinitions(columns){return columns.map(function(column){var chains=[];if(column.name==="id"){return"table.increments().primary();"}if(column.type==="float"||column.type==="decimal"){chains.push("".concat(column.type,"('").concat(column.name,"', ").concat(column.precision,", ").concat(column.scale,")"))}else{var columnType=column.type;var extraType;if(columnType.includes("text")&&columnType!=="text"){extraType=columnType;columnType="text"}chains.push("".concat(column.type,"('").concat(column.name,"'").concat(column.length?", ".concat(column.length):"").concat(extraType?", '".concat(extraType,"'"):"",")"))}if(column.unsigned){chains.push("unsigned()")}chains.push(column.nullable?"nullable()":"notNullable()");if(column.defaultTo!==undefined){if(typeof column.defaultTo==="string"&&column.defaultTo.startsWith('"')){chains.push("defaultTo(".concat(column.defaultTo,")"))}else{chains.push("defaultTo(knex.raw('".concat(column.defaultTo,"'))"))}}return"table.".concat(chains.join("."),";")})}function genIndexDefinition(index,table){var methodMap={index:"index",fulltext:"index",unique:"unique"};if(index.type==="fulltext"&&index.parser==="ngram"){var indexName="".concat(table,"_").concat(index.columns.join("_"),"_index");return"await knex.raw(`ALTER TABLE ".concat(table," ADD FULLTEXT INDEX ").concat(indexName," (").concat(index.columns.join(", "),") WITH PARSER ngram`);")}return"table.".concat(methodMap[index.type],"([").concat(index.columns.map(function(col){return"'".concat(col,"'")}).join(","),"]").concat(index.type==="fulltext"?", undefined, 'FULLTEXT'":"",")")}function generateCreateCode_Foreign(table,foreigns){return _async_to_generator(function(){var _genForeignDefinitions,up,down,lines,foreignKeysString,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(foreigns.length===0){return[2,[]]}_genForeignDefinitions=genForeignDefinitions(table,foreigns),up=_genForeignDefinitions.up,down=_genForeignDefinitions.down;if(up.length===0&&down.length===0){console.log("fk 가 뭔가 다릅니다");return[2,[]]}lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {'),"// create fk"].concat(_to_consumable_array(up),["});","}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {'),"// drop fk"],_to_consumable_array(down),["});","}"]);foreignKeysString=foreigns.map(function(foreign){return foreign.columns.join("_")}).join("_");_tmp={table:table,type:"foreign",title:"foreign__".concat(table,"__").concat(foreignKeysString)};return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:return[2,[(_tmp.formatted=_state.sent(),_tmp)]]}})})()}function genForeignDefinitions(table,foreigns){return foreigns.reduce(function(r,foreign){var columnsStringQuote=foreign.columns.map(function(col){return"'".concat(col.replace("".concat(table,"."),""),"'")}).join(",");r.up.push("table.foreign('".concat(foreign.columns.join(","),"')\n .references('").concat(foreign.to,"')\n .onUpdate('").concat(foreign.onUpdate,"')\n .onDelete('").concat(foreign.onDelete,"')"));r.down.push("table.dropForeign([".concat(columnsStringQuote,"])"));return r},{up:[],down:[]})}function generateAlterCode_ColumnAndIndexes(table,entityColumns,entityIndexes,dbColumns,dbIndexes,dbForeigns){return _async_to_generator(function(){var alterColumnsTo,alterColumnLinesTo,alterIndexesTo,__partition,ngramIndexes,standardIndexes,indexNeedsToDrop,lines,formatted,title;return _ts_generator(this,function(_state){switch(_state.label){case 0:alterColumnsTo=getAlterColumnsTo(entityColumns,dbColumns);alterColumnLinesTo=getAlterColumnLinesTo(alterColumnsTo,entityColumns,table,dbForeigns);alterIndexesTo=getAlterIndexesTo(entityIndexes,dbIndexes);__partition=_sliced_to_array(_lodash.default.partition(alterIndexesTo.add,function(i){return i.type==="fulltext"&&i.parser==="ngram"}),2),ngramIndexes=__partition[0],standardIndexes=__partition[1];indexNeedsToDrop=alterIndexesTo.drop.filter(function(index){return index.columns.every(function(colName){return alterColumnsTo.drop.map(function(col){return col.name}).includes(colName)})===false});lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'await knex.schema.alterTable("'.concat(table,'", (table) => {')].concat(_to_consumable_array(alterColumnsTo.add.length>0?alterColumnLinesTo.add.up:[]),_to_consumable_array(alterColumnsTo.drop.length>0?alterColumnLinesTo.drop.up:[]),_to_consumable_array(alterColumnsTo.alter.length>0?alterColumnLinesTo.alter.up:[]),_to_consumable_array(standardIndexes.map(function(index){return genIndexDefinition(index,table)})),_to_consumable_array(indexNeedsToDrop.map(genIndexDropDefinition)),["});"],_to_consumable_array(ngramIndexes.map(function(index){return genIndexDefinition(index,table)})),["}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')],_to_consumable_array(alterColumnsTo.add.length>0?alterColumnLinesTo.add.down:[]),_to_consumable_array(alterColumnsTo.drop.length>0?alterColumnLinesTo.drop.down:[]),_to_consumable_array(alterColumnsTo.alter.length>0?alterColumnLinesTo.alter.down:[]),_to_consumable_array(alterIndexesTo.add.filter(function(index){return index.columns.every(function(colName){return alterColumnsTo.add.map(function(col){return col.name}).includes(colName)})===false}).map(genIndexDropDefinition)),_to_consumable_array(indexNeedsToDrop.map(function(index){return genIndexDefinition(index,table)})),["});","}"]);return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:formatted=_state.sent();title=["alter",table].concat(_to_consumable_array(["add","drop","alter"].map(function(action){var len=alterColumnsTo[action].length;if(len>0){return action+len}return null}).filter(function(part){return part!==null}))).join("_");return[2,[{table:table,title:title,formatted:formatted,type:"normal"}]]}})})()}function getAlterColumnsTo(entityColumns,dbColumns){var columnsTo={add:[],drop:[],alter:[]};var extraColumns={db:_lodash.default.differenceBy(dbColumns,entityColumns,function(col){return col.name}),entity:_lodash.default.differenceBy(entityColumns,dbColumns,function(col){return col.name})};if(extraColumns.entity.length>0){columnsTo.add=columnsTo.add.concat(extraColumns.entity)}if(extraColumns.db.length>0){columnsTo.drop=columnsTo.drop.concat(extraColumns.db)}var sameDbColumns=_lodash.default.intersectionBy(dbColumns,entityColumns,function(col){return col.name});var sameMdColumns=_lodash.default.intersectionBy(entityColumns,dbColumns,function(col){return col.name});columnsTo.alter=_lodash.default.differenceWith(sameDbColumns,sameMdColumns,function(a,b){return(0,_fastdeepequal.default)(a,b)});return columnsTo}function getAlterColumnLinesTo(columnsTo,entityColumns,table,dbForeigns){var linesTo={add:{up:[],down:[]},drop:{up:[],down:[]},alter:{up:[],down:[]}};linesTo.add={up:["// add"].concat(_to_consumable_array(genColumnDefinitions(columnsTo.add))),down:["// rollback - add","table.dropColumns(".concat(columnsTo.add.map(function(col){return"'".concat(col.name,"'")}).join(", "),")")]};var dropColumnNames=columnsTo.drop.map(function(col){return col.name});var fkToDropBeforeColumn=dbForeigns.filter(function(fk){return fk.columns.some(function(col){return dropColumnNames.includes(col)})});var dropFkLines=fkToDropBeforeColumn.map(function(fk){var columnsStringQuote=fk.columns.map(function(col){return"'".concat(col,"'")}).join(",");return"table.dropForeign([".concat(columnsStringQuote,"])")});var restoreFkLines=genForeignDefinitions(table,fkToDropBeforeColumn).up;linesTo.drop={up:_to_consumable_array(dropFkLines.length>0?["// drop foreign keys on columns to be dropped"].concat(_to_consumable_array(dropFkLines)):[]).concat(["// drop columns","table.dropColumns(".concat(columnsTo.drop.map(function(col){return"'".concat(col.name,"'")}).join(", "),")")]),down:["// rollback - drop columns"].concat(_to_consumable_array(genColumnDefinitions(columnsTo.drop)),_to_consumable_array(restoreFkLines.length>0?["// restore foreign keys"].concat(_to_consumable_array(restoreFkLines)):[]))};linesTo.alter=columnsTo.alter.reduce(function(r,dbColumn){var entityColumn=entityColumns.find(function(col){return col.name==dbColumn.name});if(entityColumn===undefined){return r}var columnDiffUp=_lodash.default.difference(genColumnDefinitions([entityColumn]),genColumnDefinitions([dbColumn]));var columnDiffDown=_lodash.default.difference(genColumnDefinitions([dbColumn]),genColumnDefinitions([entityColumn]));if(columnDiffUp.length>0){r.up=_to_consumable_array(r.up).concat(["// alter column"],_to_consumable_array(columnDiffUp.map(function(l){return l.replace(";","")+".alter();"})));r.down=_to_consumable_array(r.down).concat(["// rollback - alter column"],_to_consumable_array(columnDiffDown.map(function(l){return l.replace(";","")+".alter();"})))}return r},{up:[],down:[]});return linesTo}function getAlterIndexesTo(entityIndexes,dbIndexes){var indexesTo={add:[],drop:[]};var extraIndexes={db:_lodash.default.differenceBy(dbIndexes,entityIndexes,function(col){return[col.type,col.columns.join("-")].join("//")}),entity:_lodash.default.differenceBy(entityIndexes,dbIndexes,function(col){return[col.type,col.columns.join("-")].join("//")})};if(extraIndexes.entity.length>0){indexesTo.add=indexesTo.add.concat(extraIndexes.entity)}if(extraIndexes.db.length>0){indexesTo.drop=indexesTo.drop.concat(extraIndexes.db)}return indexesTo}function genIndexDropDefinition(index){var methodMap={index:"Index",fulltext:"Index",unique:"Unique"};return"table.drop".concat(methodMap[index.type],"([").concat(index.columns.map(function(columnName){return"'".concat(columnName,"'")}).join(","),"])")}function generateAlterCode_Foreigns(_0,_1,_2){return _async_to_generator(function(table,entityForeigns,dbForeigns){var droppingColumns,getKey,droppingColumnNames,fkTo,linesTo,hasLines,lines,formatted,title;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:droppingColumns=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:[];getKey=function(mf){return[mf.columns.join("-"),mf.to].join("///")};droppingColumnNames=droppingColumns.map(function(col){return col.name});fkTo=entityForeigns.reduce(function(result,entityF){var matchingDbF=dbForeigns.find(function(dbF){return getKey(entityF)===getKey(dbF)});if(!matchingDbF){result.add.push(entityF);return result}if((0,_fastdeepequal.default)(entityF,matchingDbF)===false){result.alterSrc.push(matchingDbF);result.alterDst.push(entityF);return result}return result},{add:[],drop:[],alterSrc:[],alterDst:[]});dbForeigns.forEach(function(dbF){var matchingEntityF=entityForeigns.find(function(entityF){return getKey(entityF)===getKey(dbF)});if(!matchingEntityF){var isColumnDropping=dbF.columns.some(function(col){return droppingColumnNames.includes(col)});if(!isColumnDropping){fkTo.drop.push(dbF)}}});linesTo={add:genForeignDefinitions(table,fkTo.add),drop:genForeignDefinitions(table,fkTo.drop),alterSrc:genForeignDefinitions(table,fkTo.alterSrc),alterDst:genForeignDefinitions(table,fkTo.alterDst)};hasLines=Object.values(linesTo).some(function(l){return l.up.length>0||l.down.length>0});if(!hasLines){return[2,[]]}lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')].concat(_to_consumable_array(linesTo.drop.down),_to_consumable_array(linesTo.add.up),_to_consumable_array(linesTo.alterSrc.down),_to_consumable_array(linesTo.alterDst.up),["})","}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')],_to_consumable_array(linesTo.add.down),_to_consumable_array(linesTo.alterDst.down),_to_consumable_array(linesTo.alterSrc.up),_to_consumable_array(linesTo.drop.up),["})","}"]);return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:formatted=_state.sent();title=["alter",table,"foreigns"].join("_");return[2,[{table:table,title:title,formatted:formatted,type:"normal"}]]}})}).apply(this,arguments)}function generateCreateCode(entitySet){return _async_to_generator(function(){var _,_1;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,generateCreateCode_ColumnAndIndexes(entitySet.table,entitySet.columns,entitySet.indexes)];case 1:_1=(_=[_state.sent()]).concat;return[4,generateCreateCode_Foreign(entitySet.table,entitySet.foreigns)];case 2:return[2,_1.apply(_,[_to_consumable_array.apply(void 0,[_state.sent()])])]}})})()}function generateAlterCode(entitySet,dbSet){return _async_to_generator(function(){var replaceColumnDefaultTo,entityColumns,dbColumns,entityIndexes,dbIndexes,replaceNoActionOnMySQL,entityForeigns,dbForeigns,droppingColumns,alterCodes,isEqualColumns,isEqualIndexes,_,_1;return _ts_generator(this,function(_state){switch(_state.label){case 0:replaceColumnDefaultTo=function(col){if(col.type==="float"&&col.defaultTo&&String(col.defaultTo).includes('"')===false){var _col_scale;col.defaultTo='"'.concat(Number(col.defaultTo).toFixed((_col_scale=col.scale)!==null&&_col_scale!==void 0?_col_scale:2),'"')}if(col.type==="string"&&col.defaultTo===""){col.defaultTo='""'}if(col.type==="boolean"&&col.defaultTo!==undefined){if(col.defaultTo==="0"||col.defaultTo==="false"){col.defaultTo="0"}else if(col.defaultTo==="1"||col.defaultTo==="true"){col.defaultTo="1"}}return col};entityColumns=_lodash.default.sortBy(entitySet.columns,function(a){return a.name}).map(replaceColumnDefaultTo);dbColumns=_lodash.default.sortBy(dbSet.columns,function(a){return a.name}).map(replaceColumnDefaultTo);entityIndexes=_lodash.default.sortBy(entitySet.indexes,function(a){return[a.type].concat(_to_consumable_array(a.columns.sort(function(c1,c2){return c1>c2?1:-1}))).join("-")});dbIndexes=_lodash.default.sortBy(dbSet.indexes,function(a){return[a.type].concat(_to_consumable_array(a.columns.sort(function(c1,c2){return c1>c2?1:-1}))).join("-")});replaceNoActionOnMySQL=function(f){var onDelete=f.onDelete,onUpdate=f.onUpdate;return _object_spread_props(_object_spread({},f),{onUpdate:onUpdate==="RESTRICT"?"NO ACTION":onUpdate,onDelete:onDelete==="RESTRICT"?"NO ACTION":onDelete})};entityForeigns=_lodash.default.sortBy(entitySet.foreigns,function(a){return[a.to].concat(_to_consumable_array(a.columns)).join("-")}).map(function(f){return replaceNoActionOnMySQL(f)});dbForeigns=_lodash.default.sortBy(dbSet.foreigns,function(a){return[a.to].concat(_to_consumable_array(a.columns)).join("-")}).map(function(f){return replaceNoActionOnMySQL(f)});droppingColumns=_lodash.default.differenceBy(dbColumns,entityColumns,function(col){return col.name});alterCodes=[];isEqualColumns=(0,_fastdeepequal.default)(entityColumns,dbColumns);isEqualIndexes=(0,_fastdeepequal.default)(entityIndexes.map(function(index){return _lodash.default.omit(index,["parser"])}),dbIndexes);if(!(!isEqualColumns||!isEqualIndexes))return[3,2];_=alterCodes.push;return[4,generateAlterCode_ColumnAndIndexes(entitySet.table,entityColumns,entityIndexes,dbColumns,dbIndexes,dbSet.foreigns)];case 1:_.apply(alterCodes,[_state.sent()]);_state.label=2;case 2:if(!((0,_fastdeepequal.default)(entityForeigns,dbForeigns)===false))return[3,4];_1=alterCodes.push;return[4,generateAlterCode_Foreigns(entitySet.table,entityForeigns,dbForeigns,droppingColumns)];case 3:_1.apply(alterCodes,[_state.sent()]);_state.label=4;case 4:if(alterCodes.every(function(alterCode){return alterCode===null})){return[2,[]]}return[2,alterCodes.filter(function(alterCode){return alterCode!==null}).flat()]}})})()}
|
|
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 generateAlterCode(){return generateAlterCode},get generateCreateCode(){return generateCreateCode}});var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _prettier=/*#__PURE__*/_interop_require_default(require("prettier"));var _fastdeepequal=/*#__PURE__*/_interop_require_default(require("fast-deep-equal"));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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _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 _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}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 _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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}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 _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}}}function generateCreateCode_ColumnAndIndexes(table,columns,indexes){return _async_to_generator(function(){var __partition,ngramIndexes,standardIndexes,lines,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:__partition=_sliced_to_array(_lodash.default.partition(indexes,function(i){return i.type==="fulltext"&&i.parser==="ngram"}),2),ngramIndexes=__partition[0],standardIndexes=__partition[1];lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'await knex.schema.createTable("'.concat(table,'", (table) => {'),"// columns"].concat(_to_consumable_array(genColumnDefinitions(columns)),["","// indexes"],_to_consumable_array(standardIndexes.map(function(index){return genIndexDefinition(index,table)})),["});"],_to_consumable_array(ngramIndexes.map(function(index){return genIndexDefinition(index,table)})),["}","","export async function down(knex: Knex): Promise<void> {",' return knex.schema.dropTable("'.concat(table,'");'),"}"]);_tmp={table:table,type:"normal",title:"create__".concat(table)};return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:return[2,(_tmp.formatted=_state.sent(),_tmp)]}})})()}function genColumnDefinitions(columns){return columns.map(function(column){var chains=[];if(column.name==="id"){return"table.increments().primary();"}if(column.type==="float"||column.type==="decimal"){chains.push("".concat(column.type,"('").concat(column.name,"', ").concat(column.precision,", ").concat(column.scale,")"))}else{var columnType=column.type;var extraType;if(columnType.includes("text")&&columnType!=="text"){extraType=columnType;columnType="text"}chains.push("".concat(columnType,"('").concat(column.name,"'").concat(column.length?", ".concat(column.length):"").concat(extraType?", '".concat(extraType,"'"):"",")"))}if(column.unsigned){chains.push("unsigned()")}chains.push(column.nullable?"nullable()":"notNullable()");if(column.defaultTo!==undefined){if(typeof column.defaultTo==="string"&&column.defaultTo.startsWith('"')){chains.push("defaultTo(".concat(column.defaultTo,")"))}else{chains.push("defaultTo(knex.raw('".concat(column.defaultTo,"'))"))}}return"table.".concat(chains.join("."),";")})}function genIndexDefinition(index,table){var methodMap={index:"index",fulltext:"index",unique:"unique"};if(index.type==="fulltext"&&index.parser==="ngram"){var indexName="".concat(table,"_").concat(index.columns.join("_"),"_index");return"await knex.raw(`ALTER TABLE ".concat(table," ADD FULLTEXT INDEX ").concat(indexName," (").concat(index.columns.join(", "),") WITH PARSER ngram`);")}return"table.".concat(methodMap[index.type],"([").concat(index.columns.map(function(col){return"'".concat(col,"'")}).join(","),"]").concat(index.type==="fulltext"?", undefined, 'FULLTEXT'":"",")")}function generateCreateCode_Foreign(table,foreigns){return _async_to_generator(function(){var _genForeignDefinitions,up,down,lines,foreignKeysString,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(foreigns.length===0){return[2,[]]}_genForeignDefinitions=genForeignDefinitions(table,foreigns),up=_genForeignDefinitions.up,down=_genForeignDefinitions.down;if(up.length===0&&down.length===0){console.log("fk 가 뭔가 다릅니다");return[2,[]]}lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {'),"// create fk"].concat(_to_consumable_array(up),["});","}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {'),"// drop fk"],_to_consumable_array(down),["});","}"]);foreignKeysString=foreigns.map(function(foreign){return foreign.columns.join("_")}).join("_");_tmp={table:table,type:"foreign",title:"foreign__".concat(table,"__").concat(foreignKeysString)};return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:return[2,[(_tmp.formatted=_state.sent(),_tmp)]]}})})()}function genForeignDefinitions(table,foreigns){return foreigns.reduce(function(r,foreign){var columnsStringQuote=foreign.columns.map(function(col){return"'".concat(col.replace("".concat(table,"."),""),"'")}).join(",");r.up.push("table.foreign('".concat(foreign.columns.join(","),"')\n .references('").concat(foreign.to,"')\n .onUpdate('").concat(foreign.onUpdate,"')\n .onDelete('").concat(foreign.onDelete,"')"));r.down.push("table.dropForeign([".concat(columnsStringQuote,"])"));return r},{up:[],down:[]})}function generateAlterCode_ColumnAndIndexes(table,entityColumns,entityIndexes,dbColumns,dbIndexes,dbForeigns){return _async_to_generator(function(){var alterColumnsTo,alterColumnLinesTo,alterIndexesTo,__partition,ngramIndexes,standardIndexes,indexNeedsToDrop,lines,formatted,title;return _ts_generator(this,function(_state){switch(_state.label){case 0:alterColumnsTo=getAlterColumnsTo(entityColumns,dbColumns);alterColumnLinesTo=getAlterColumnLinesTo(alterColumnsTo,entityColumns,table,dbForeigns);alterIndexesTo=getAlterIndexesTo(entityIndexes,dbIndexes);__partition=_sliced_to_array(_lodash.default.partition(alterIndexesTo.add,function(i){return i.type==="fulltext"&&i.parser==="ngram"}),2),ngramIndexes=__partition[0],standardIndexes=__partition[1];indexNeedsToDrop=alterIndexesTo.drop.filter(function(index){return index.columns.every(function(colName){return alterColumnsTo.drop.map(function(col){return col.name}).includes(colName)})===false});lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'await knex.schema.alterTable("'.concat(table,'", (table) => {')].concat(_to_consumable_array(alterColumnsTo.add.length>0?alterColumnLinesTo.add.up:[]),_to_consumable_array(alterColumnsTo.drop.length>0?alterColumnLinesTo.drop.up:[]),_to_consumable_array(alterColumnsTo.alter.length>0?alterColumnLinesTo.alter.up:[]),_to_consumable_array(standardIndexes.map(function(index){return genIndexDefinition(index,table)})),_to_consumable_array(indexNeedsToDrop.map(genIndexDropDefinition)),["});"],_to_consumable_array(ngramIndexes.map(function(index){return genIndexDefinition(index,table)})),["}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')],_to_consumable_array(alterColumnsTo.add.length>0?alterColumnLinesTo.add.down:[]),_to_consumable_array(alterColumnsTo.drop.length>0?alterColumnLinesTo.drop.down:[]),_to_consumable_array(alterColumnsTo.alter.length>0?alterColumnLinesTo.alter.down:[]),_to_consumable_array(alterIndexesTo.add.filter(function(index){return index.columns.every(function(colName){return alterColumnsTo.add.map(function(col){return col.name}).includes(colName)})===false}).map(genIndexDropDefinition)),_to_consumable_array(indexNeedsToDrop.map(function(index){return genIndexDefinition(index,table)})),["});","}"]);return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:formatted=_state.sent();title=["alter",table].concat(_to_consumable_array(["add","drop","alter"].map(function(action){var len=alterColumnsTo[action].length;if(len>0){return action+len}return null}).filter(function(part){return part!==null}))).join("_");return[2,[{table:table,title:title,formatted:formatted,type:"normal"}]]}})})()}function getAlterColumnsTo(entityColumns,dbColumns){var columnsTo={add:[],drop:[],alter:[]};var extraColumns={db:_lodash.default.differenceBy(dbColumns,entityColumns,function(col){return col.name}),entity:_lodash.default.differenceBy(entityColumns,dbColumns,function(col){return col.name})};if(extraColumns.entity.length>0){columnsTo.add=columnsTo.add.concat(extraColumns.entity)}if(extraColumns.db.length>0){columnsTo.drop=columnsTo.drop.concat(extraColumns.db)}var sameDbColumns=_lodash.default.intersectionBy(dbColumns,entityColumns,function(col){return col.name});var sameMdColumns=_lodash.default.intersectionBy(entityColumns,dbColumns,function(col){return col.name});columnsTo.alter=_lodash.default.differenceWith(sameDbColumns,sameMdColumns,function(a,b){return(0,_fastdeepequal.default)(a,b)});return columnsTo}function getAlterColumnLinesTo(columnsTo,entityColumns,table,dbForeigns){var linesTo={add:{up:[],down:[]},drop:{up:[],down:[]},alter:{up:[],down:[]}};linesTo.add={up:["// add"].concat(_to_consumable_array(genColumnDefinitions(columnsTo.add))),down:["// rollback - add","table.dropColumns(".concat(columnsTo.add.map(function(col){return"'".concat(col.name,"'")}).join(", "),")")]};var dropColumnNames=columnsTo.drop.map(function(col){return col.name});var fkToDropBeforeColumn=dbForeigns.filter(function(fk){return fk.columns.some(function(col){return dropColumnNames.includes(col)})});var dropFkLines=fkToDropBeforeColumn.map(function(fk){var columnsStringQuote=fk.columns.map(function(col){return"'".concat(col,"'")}).join(",");return"table.dropForeign([".concat(columnsStringQuote,"])")});var restoreFkLines=genForeignDefinitions(table,fkToDropBeforeColumn).up;linesTo.drop={up:_to_consumable_array(dropFkLines.length>0?["// drop foreign keys on columns to be dropped"].concat(_to_consumable_array(dropFkLines)):[]).concat(["// drop columns","table.dropColumns(".concat(columnsTo.drop.map(function(col){return"'".concat(col.name,"'")}).join(", "),")")]),down:["// rollback - drop columns"].concat(_to_consumable_array(genColumnDefinitions(columnsTo.drop)),_to_consumable_array(restoreFkLines.length>0?["// restore foreign keys"].concat(_to_consumable_array(restoreFkLines)):[]))};linesTo.alter=columnsTo.alter.reduce(function(r,dbColumn){var entityColumn=entityColumns.find(function(col){return col.name==dbColumn.name});if(entityColumn===undefined){return r}var columnDiffUp=_lodash.default.difference(genColumnDefinitions([entityColumn]),genColumnDefinitions([dbColumn]));var columnDiffDown=_lodash.default.difference(genColumnDefinitions([dbColumn]),genColumnDefinitions([entityColumn]));if(columnDiffUp.length>0){r.up=_to_consumable_array(r.up).concat(["// alter column"],_to_consumable_array(columnDiffUp.map(function(l){return l.replace(";","")+".alter();"})));r.down=_to_consumable_array(r.down).concat(["// rollback - alter column"],_to_consumable_array(columnDiffDown.map(function(l){return l.replace(";","")+".alter();"})))}return r},{up:[],down:[]});return linesTo}function getAlterIndexesTo(entityIndexes,dbIndexes){var indexesTo={add:[],drop:[]};var extraIndexes={db:_lodash.default.differenceBy(dbIndexes,entityIndexes,function(col){return[col.type,col.columns.join("-")].join("//")}),entity:_lodash.default.differenceBy(entityIndexes,dbIndexes,function(col){return[col.type,col.columns.join("-")].join("//")})};if(extraIndexes.entity.length>0){indexesTo.add=indexesTo.add.concat(extraIndexes.entity)}if(extraIndexes.db.length>0){indexesTo.drop=indexesTo.drop.concat(extraIndexes.db)}return indexesTo}function genIndexDropDefinition(index){var methodMap={index:"Index",fulltext:"Index",unique:"Unique"};return"table.drop".concat(methodMap[index.type],"([").concat(index.columns.map(function(columnName){return"'".concat(columnName,"'")}).join(","),"])")}function generateAlterCode_Foreigns(_0,_1,_2){return _async_to_generator(function(table,entityForeigns,dbForeigns){var droppingColumns,getKey,droppingColumnNames,fkTo,linesTo,hasLines,lines,formatted,title;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:droppingColumns=_arguments.length>3&&_arguments[3]!==void 0?_arguments[3]:[];getKey=function(mf){return[mf.columns.join("-"),mf.to].join("///")};droppingColumnNames=droppingColumns.map(function(col){return col.name});fkTo=entityForeigns.reduce(function(result,entityF){var matchingDbF=dbForeigns.find(function(dbF){return getKey(entityF)===getKey(dbF)});if(!matchingDbF){result.add.push(entityF);return result}if((0,_fastdeepequal.default)(entityF,matchingDbF)===false){result.alterSrc.push(matchingDbF);result.alterDst.push(entityF);return result}return result},{add:[],drop:[],alterSrc:[],alterDst:[]});dbForeigns.forEach(function(dbF){var matchingEntityF=entityForeigns.find(function(entityF){return getKey(entityF)===getKey(dbF)});if(!matchingEntityF){var isColumnDropping=dbF.columns.some(function(col){return droppingColumnNames.includes(col)});if(!isColumnDropping){fkTo.drop.push(dbF)}}});linesTo={add:genForeignDefinitions(table,fkTo.add),drop:genForeignDefinitions(table,fkTo.drop),alterSrc:genForeignDefinitions(table,fkTo.alterSrc),alterDst:genForeignDefinitions(table,fkTo.alterDst)};hasLines=Object.values(linesTo).some(function(l){return l.up.length>0||l.down.length>0});if(!hasLines){return[2,[]]}lines=['import { Knex } from "knex";',"","export async function up(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')].concat(_to_consumable_array(linesTo.drop.down),_to_consumable_array(linesTo.add.up),_to_consumable_array(linesTo.alterSrc.down),_to_consumable_array(linesTo.alterDst.up),["})","}","","export async function down(knex: Knex): Promise<void> {",'return knex.schema.alterTable("'.concat(table,'", (table) => {')],_to_consumable_array(linesTo.add.down),_to_consumable_array(linesTo.alterDst.down),_to_consumable_array(linesTo.alterSrc.up),_to_consumable_array(linesTo.drop.up),["})","}"]);return[4,_prettier.default.format(lines.join("\n"),{parser:"typescript"})];case 1:formatted=_state.sent();title=["alter",table,"foreigns"].join("_");return[2,[{table:table,title:title,formatted:formatted,type:"normal"}]]}})}).apply(this,arguments)}function generateCreateCode(entitySet){return _async_to_generator(function(){var _,_1;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,generateCreateCode_ColumnAndIndexes(entitySet.table,entitySet.columns,entitySet.indexes)];case 1:_1=(_=[_state.sent()]).concat;return[4,generateCreateCode_Foreign(entitySet.table,entitySet.foreigns)];case 2:return[2,_1.apply(_,[_to_consumable_array.apply(void 0,[_state.sent()])])]}})})()}function generateAlterCode(entitySet,dbSet){return _async_to_generator(function(){var replaceColumnDefaultTo,entityColumns,dbColumns,entityIndexes,dbIndexes,replaceNoActionOnMySQL,entityForeigns,dbForeigns,droppingColumns,alterCodes,isEqualColumns,isEqualIndexes,_,_1;return _ts_generator(this,function(_state){switch(_state.label){case 0:replaceColumnDefaultTo=function(col){if(col.type==="float"&&col.defaultTo&&String(col.defaultTo).includes('"')===false){var _col_scale;col.defaultTo='"'.concat(Number(col.defaultTo).toFixed((_col_scale=col.scale)!==null&&_col_scale!==void 0?_col_scale:2),'"')}if(col.type==="string"&&col.defaultTo===""){col.defaultTo='""'}if(col.type==="boolean"&&col.defaultTo!==undefined){if(col.defaultTo==="0"||col.defaultTo.toLowerCase()==="false"){col.defaultTo="0"}else if(col.defaultTo==="1"||col.defaultTo.toLowerCase()==="true"){col.defaultTo="1"}}return col};entityColumns=_lodash.default.sortBy(entitySet.columns,function(a){return a.name}).map(replaceColumnDefaultTo);dbColumns=_lodash.default.sortBy(dbSet.columns,function(a){return a.name}).map(replaceColumnDefaultTo);entityIndexes=_lodash.default.sortBy(entitySet.indexes,function(a){return[a.type].concat(_to_consumable_array(a.columns.sort(function(c1,c2){return c1>c2?1:-1}))).join("-")});dbIndexes=_lodash.default.sortBy(dbSet.indexes,function(a){return[a.type].concat(_to_consumable_array(a.columns.sort(function(c1,c2){return c1>c2?1:-1}))).join("-")});replaceNoActionOnMySQL=function(f){var onDelete=f.onDelete,onUpdate=f.onUpdate;return _object_spread_props(_object_spread({},f),{onUpdate:onUpdate==="RESTRICT"?"NO ACTION":onUpdate,onDelete:onDelete==="RESTRICT"?"NO ACTION":onDelete})};entityForeigns=_lodash.default.sortBy(entitySet.foreigns,function(a){return[a.to].concat(_to_consumable_array(a.columns)).join("-")}).map(function(f){return replaceNoActionOnMySQL(f)});dbForeigns=_lodash.default.sortBy(dbSet.foreigns,function(a){return[a.to].concat(_to_consumable_array(a.columns)).join("-")}).map(function(f){return replaceNoActionOnMySQL(f)});droppingColumns=_lodash.default.differenceBy(dbColumns,entityColumns,function(col){return col.name});alterCodes=[];isEqualColumns=(0,_fastdeepequal.default)(entityColumns,dbColumns);isEqualIndexes=(0,_fastdeepequal.default)(entityIndexes.map(function(index){return _lodash.default.omit(index,["parser"])}),dbIndexes);if(!(!isEqualColumns||!isEqualIndexes))return[3,2];_=alterCodes.push;return[4,generateAlterCode_ColumnAndIndexes(entitySet.table,entityColumns,entityIndexes,dbColumns,dbIndexes,dbSet.foreigns)];case 1:_.apply(alterCodes,[_state.sent()]);_state.label=2;case 2:if(!((0,_fastdeepequal.default)(entityForeigns,dbForeigns)===false))return[3,4];_1=alterCodes.push;return[4,generateAlterCode_Foreigns(entitySet.table,entityForeigns,dbForeigns,droppingColumns)];case 3:_1.apply(alterCodes,[_state.sent()]);_state.label=4;case 4:if(alterCodes.every(function(alterCode){return alterCode===null})){return[2,[]]}return[2,alterCodes.filter(function(alterCode){return alterCode!==null}).flat()]}})})()}
|
|
2
2
|
//# sourceMappingURL=code-generation.js.map
|