{"_id":"tangbao-he-db-helper","_rev":"27-c44c8fdcd983d7399d7466974a1aa068","name":"tangbao-he-db-helper","dist-tags":{"latest":"1.0.30"},"versions":{"1.0.0":{"name":"tangbao-he-db-helper","version":"1.0.0","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.0","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"dist":{"shasum":"c0285a9b51b810c242f71e27e6866510ad0666af","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.0.tgz","fileCount":22,"integrity":"sha512-92mGtAjwlf+kpXmw5czVIY2WVW4PIptJj6NrhNX8bzMg9ECLqpKMPo+CW4dRM1vNOT2lkwL/VUaQ9QD1+QK3iQ==","signatures":[{"sig":"MEYCIQCMxDa2dMqWESC3zuxLSEAMR3iNv8R1Ygaz4RN+/XdTiQIhAISFS6LaLLj7zxuEh3Vtnoxh3k+bGvzpW5GOxopIOLgE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97678},"main":"db-config.js","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"db-crud":"db-crud.js","db-config":"db-config.js","db-execute":"db-execute.js","sql-mapper":"sql-mapper.js"}},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.0_1778483839360_0.10313655149668755","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"tangbao-he-db-helper","version":"1.0.1","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.1","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"dist":{"shasum":"133834662c7026a78107582c5511880e55581808","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.1.tgz","fileCount":23,"integrity":"sha512-KNS5clSTF8r5AW9XZTkLi+1HyOtUHSOwg+PLOdmof9TtIBxtP3LPwcLhrM0TAlf6MnLOxJrDlGQ9F/r2+GZ06Q==","signatures":[{"sig":"MEUCIQDzLFuDdqM26T4mvpdUEgP+olxmoRqczIvWrUJLamQmYwIgJqpjvjWuHdUf6qL1xZrTdWk2glU8IlSH0DnYlXfal20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146175},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"2271348cbf8076b12220e5f254ba25d6dde10005","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"db-crud":"db-crud.js","db-config":"db-config.js","db-execute":"db-execute.js","sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.1_1778489914782_0.2872094968322281","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"tangbao-he-db-helper","version":"1.0.2","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.2","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"dist":{"shasum":"f3ee6ad79ae9cec2a682ad0f2e53223371be39c5","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.2.tgz","fileCount":23,"integrity":"sha512-yB4+kOw+dY0487Y34jF/hjG94kb05wQaCLz6oTCAMADwDqsGUt0vIvENAUTnUB2GcremdEkePhae95tWW+rdXQ==","signatures":[{"sig":"MEYCIQCcovJSjWNTXtnoJ3R2EAuX24RUD4GlmMf1OkHZUocqQQIhANczFMeKPqGPVFQlxweduFJ8zh4dswbgx0NjygT90PTa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146176},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"6f6916af49c69884bcbd9b1432b1d100a0633e76","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"db-crud":"db-crud.js","db-config":"db-config.js","db-execute":"db-execute.js","sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.2_1778490268057_0.6693507716157681","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"tangbao-he-db-helper","version":"1.0.3","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.3","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"bugs":{"url":"https://github.com/tangbao-he/tangbao-he-db-helper/issues"},"dist":{"shasum":"0b50f2618f5d6d36445d75e5ee509206172143ae","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.3.tgz","fileCount":22,"integrity":"sha512-kfcsWUTrwGba18dpWWhG3XC2tX9fFToM0dogEgE0fJauMTIx1zXpoI6dEzEbtwlA/COSyqZtkacFgB2I3Nnm+Q==","signatures":[{"sig":"MEQCIDejbi8M/d/V0PMb7ZeouutLZBRxGotov6zTjn51Z1xtAiBNoNuI5tZVZSQXYuzrZMIzLnZvgA8bwsnTTqFqU328DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100653},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"8e4231ad92a29ac195cf7d646017e274ce070116","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.3_1778495686286_0.27729255975668976","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"tangbao-he-db-helper","version":"1.0.4","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.4","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"cd763ee3afc00c192c2e83d6a92f1fd005871050","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.4.tgz","fileCount":23,"integrity":"sha512-QMtDZuiV8qQJ38UFZbPsudo4CtXQbKP59YYsjti4yHyOXpLB63ioe2bnqtCBHNrm0U1SUKiAXuA7xHnBaMp+6Q==","signatures":[{"sig":"MEUCIQCr1Im+8oKu93/QN7JRqcGFqG+wFJNDvpvehUpryAPKSAIgCKxeSaXuXkbx5WIYVlJAcM/4mxu3IyBTdnX8ORwrS+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102320},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"13354017cd47d9e33bfb39cea8f692a61783aa91","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.4_1778496075583_0.09169538291454504","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"tangbao-he-db-helper","version":"1.0.5","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.5","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"5823223008235bc56d6841e43d447a3a9fd96715","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.5.tgz","fileCount":23,"integrity":"sha512-tmFNc8eNr1sNcF9P8vQYulpgt41Y99zTqQAJAWu6Lb/c1klzXr8czVdI5EqbFQilF67bVVa0O0LizaGK8nU7yw==","signatures":[{"sig":"MEUCIDA8WGJUflsf6MZpdpQO2iGXxY4lehbQhalmQUPp9OPzAiEA9Yqw2oqdBpfeIn5gaIMCP0xl4/nWKaC8flr4q3KgHgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103092},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"9bf2b7aa279a9d96be8528f6d53d8420037dd33e","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.5_1778552939949_0.7956987196597918","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"tangbao-he-db-helper","version":"1.0.6","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.6","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"8f1c8008f10418ae7afa76a2d4145f77b5a9353c","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.6.tgz","fileCount":23,"integrity":"sha512-5dIAKHnzw7t18idCgVRsIxjEUUz6Z2KdN0j2tkZvfZkE0ucAlJsfZKp4B85xc/BnP/1LFu/iTzIWFzNwwLVzfw==","signatures":[{"sig":"MEUCIQCMwXjp/ecZa089m8b/SGK2Trb0bkt0mgpjowxty4QKiQIgR8YkB7it+HKcBvh77V4nc/lGCT2TOyXo4S2kn8QWGTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103785},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"9b7f0d5ae4af4d4dd943a0eb0d00d8905054a038","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.6_1778556103052_0.41500951247995177","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"tangbao-he-db-helper","version":"1.0.7","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.7","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"cb4a025440057160231bc612b6514aa1453b3dfe","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.7.tgz","fileCount":23,"integrity":"sha512-6P0DWAsUrteeEkvX3lgpCEgveqVgYDJFYjqrHcQhF3mRnnLKJ1RjJF9NpmKkQLQoNAWKBVZCR8PZU9OrNtMybQ==","signatures":[{"sig":"MEUCIQDgDXvXe06mj1p5mX+GY+GrCN6UnFUisFh8bRPenIhJXgIgXOfl49cGCEGhKuZM3+jk9Aymde8BAAPQt71bI1FFX9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108663},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"f41cc000150894f24c366d5d2f2a313060a5b81e","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.7_1778564745257_0.8793016581823823","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"tangbao-he-db-helper","version":"1.0.8","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.8","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"63f59117529ac4c1d22b8da6455fc567a4411f38","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.8.tgz","fileCount":23,"integrity":"sha512-oXzJkxWlJDX2o/XCDrtLKBnYpjMlf918R0y8DL5Hrx59lRirSgDhRJ4YMtZdhMIqYlIUWkDKb3tpeKeeSumQ9w==","signatures":[{"sig":"MEQCIAZryS4YQ/UN0JBIuSYQmDP+mww/ZAy6PV24BvVCGHt2AiA+Pr4FgneVuyj+KvIxjvrL3YnLtmy8R/Fs4gSgTJbEXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109313},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"1d0e2a8e38f513758535fd660155da3a77c75b3c","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.8_1778566169092_0.22007480029799042","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"tangbao-he-db-helper","version":"1.0.9","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbinhe","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.9","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"c1100bc131e9c049940fb34de0e6d26707a7bbbb","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.9.tgz","fileCount":23,"integrity":"sha512-uAkL6ZrXgYkud3OeHfB0rvtJcNhCKol9o87BpvK4XJXb1Ko7M9BvUVjQ4BDQIiIwwkKGEiVuHSGphtDOl/FZ3g==","signatures":[{"sig":"MEUCIHGFJEKa2hHSDwd8dK23zXAodlsKJTRhcH0LkMnoSVRvAiEA2OrRx8kNqPbPuEcbT2wVlJUhk3B7goiyeCh177YkRHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109313},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"4fd2e6bdc354158298ebbf546a8a1d31a6f086be","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.9_1778566647196_0.6342807751024215","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"tangbao-he-db-helper","version":"1.0.11","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.11","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"ebaafcedae744c6d792445474506d8eb2607c8aa","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.11.tgz","fileCount":23,"integrity":"sha512-m/g9UET93Wtp7aymkCvnzSs95kRr6kzbRKSvUul8hwmNS/+nUckKp16paa7qwzeCFx49XFJ0KbLbdB660fvK2w==","signatures":[{"sig":"MEQCIA6O3WrgPUa6Ma9sEtjr4xR5yl91vo19J7WAv1IMV71pAiAsHt44hXzywf5hsFyzgO9j8B6IxuLlsi31ZFx0tk/JoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111464},"main":"db-config.js","type":"commonjs","engines":{"node":">=18.0"},"gitHead":"912cdfd4cdb013a6459ed5c0caf5b0859f6ae828","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{"lib":"lib","test":"test","example":"examples"},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.11_1778655547418_0.9960104795325013","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"tangbao-he-db-helper","version":"1.0.13","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.13","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"fd685e30ee658ae7b6a3b188bad09df02e2684ad","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.13.tgz","fileCount":23,"integrity":"sha512-PEdwsD03ydrMzf/CI93pmznQezFiuxvY1WPgDBnjIX7My8ieaUuBE8qlnUsmlZTKmsDaU+iZ8B9rGpdHomWb5g==","signatures":[{"sig":"MEYCIQDXG3iIG3ISVZQ6CVwnSlMZsWE4YrAiM++0IPP28iOQqwIhAKSPmR5Ar7wXBe9tEprEVQ5cYWkL6JvQk43Rvu98tmgB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112488},"main":"db-config.js","engines":{"node":">=18.0"},"scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.13_1778745189030_0.5286532554245476","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"tangbao-he-db-helper","version":"1.0.14","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.14","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"781d2ea598db1af95612e7ad583131b16f205541","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.14.tgz","fileCount":23,"integrity":"sha512-30B+s7G/7597wUTBpS5ai8Ibx7ifFasLqrdmjHtSSeHDSMEUdHwtNp+F60hz7lsoWH25jOYe49/kQT1sVmmDWA==","signatures":[{"sig":"MEUCIQDP/91zs9cidasA36qduiqIUa6wRmUPjWeRnvxzdp6BWwIgPh83EmibBU0h7QiQwaUEHVIr5WmHllHnTeeCVcSpQJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115043},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"01fe126a2707d3ab45f25dd6f0ecfbfa7466257f","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.14_1779076976825_0.3713592499463645","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"tangbao-he-db-helper","version":"1.0.15","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.15","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"3c1b784e938fdbb0f35c14d2d34124efb36a101c","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.15.tgz","fileCount":25,"integrity":"sha512-0RviLDpT2PQViVzpIhm4tLv7MYdCCKws7FaLCP8NB/QLt5cFGQy5xUDNWYku5e4TUqaGT9alR7zgicVEn/wdLQ==","signatures":[{"sig":"MEYCIQDUtTSPCp16/vigVnt7QQEG9DHFn+6TgcuiAJcFbjphkwIhAIdB6PevYIOGqXfcYN0XO2m0YyvDHLdtaui2deLOGPur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120804},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"0f49b4ebf5bca2092d3596a16190465e392e3c75","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.15_1779355983014_0.5974873638297022","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"tangbao-he-db-helper","version":"1.0.16","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.16","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"46e21d7dc054bdbe788e10fb911354d4adcbcc1d","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.16.tgz","fileCount":26,"integrity":"sha512-szM6VyQIuqCdGMA+b6EWPXnmiNJDuWlCDYRhwi98SYVERtJNR4nS6x3QQqc6Hky3qRJpFbvy7iCjfpXlIW3kCw==","signatures":[{"sig":"MEUCIBqsi0g+7tLMQIkzy6kH1fvdYGoTmUhgHsijR+8qY0r5AiEAkti7Ced5k4qJzpyD+24xEmo/2GBI0L2/0rOTsgiEbA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123937},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"b526667a20e315a50d4f8e6d359440b17f5751ec","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.16_1779678945250_0.4883137052688904","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"tangbao-he-db-helper","version":"1.0.17","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.17","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"5921fc0d95e4a73e2a938fead580460dea31c3c1","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.17.tgz","fileCount":26,"integrity":"sha512-rSqZ8SxB8kT8mW6O+U0ecDcL0LL9eXRmkgResJSPbaCJIgmeV3KFJJbAXX9PgG30b8hbHPzjYh4bHQ0Ptol7VQ==","signatures":[{"sig":"MEYCIQD+qSKiHmru3geVm7fVJCv+f5B5R5yZtSzDiHe0SRsqnwIhAIj+SmTEUUFJU5ePEU8SEZVLozFObowK2YhvM2oBtDi/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":126654},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"a86f3c915858e357ab0114520f66f9d672eba3f2","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.17_1779681790340_0.5903242824643624","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"tangbao-he-db-helper","version":"1.0.19","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.19","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"d915eb297db33d5ce734d520430c8a19c2699fc5","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.19.tgz","fileCount":26,"integrity":"sha512-CXeULNfdhTe1b3IRq4eADU9uNxFLxE/y8diWkpjwrYng1HWci1+1S7CAMCqyysCg0/pOCCLcWZnDjrMbDHHhZA==","signatures":[{"sig":"MEUCIQCZ7zZ0Wf4c55zJ3jJ5M4wSdQyt8Gx517jgK8Godrsu5gIgGRklYcIfYuZ4N6sIKhCPhGzvgBTUWFq6k8OWSxSfaVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127346},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"7cc87314d70c66bcd1dcad4093aa0860b0d5e3a5","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.19_1780045271846_0.8658764530013936","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"tangbao-he-db-helper","version":"1.0.20","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.20","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"6f4f71d9b184487a7ae3ec5bc46285d55376a06c","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.20.tgz","fileCount":26,"integrity":"sha512-IH+4HOAt5Q6RqNra0rn3hG7Oioy5HrA6zPOKv6P2Yfmy/dkbdMoGvx7mnVxizPW6VVRKAU6B9QE/72/K8zo1fg==","signatures":[{"sig":"MEYCIQDX3f2iz3Gu3H1gjvO6DLUM3j3XhkSfDMSGpShRBTm/OQIhANIvWOM3IKijzJsnsFGlMgqzLiUbwCvJmH36jTSYMUMB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135335},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"e4a59be7b5e5a5c13f274c7337c769ed012fda98","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.20_1780545300347_0.860074550721385","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"tangbao-he-db-helper","version":"1.0.21","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.21","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"abbbfb2c0adf78bbebcf3f9d4d1aca7ac7c34637","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.21.tgz","fileCount":26,"integrity":"sha512-//ZtNNn0DHgIBXlSrdaiTBCC8cNg9aJRNxwsx8Tm5Mn9cjKBxz+x9/UlCmYM2Us3LKOo3Zx4vZBLjlubwMgipQ==","signatures":[{"sig":"MEYCIQDEZA5W0hHfxOovlXeP0IO14xBedgIw15bF4k324B/HygIhAJxvu9wfAWr4BS4+f+NQud4Kyz8nVsRCBE8U3qPVzw1+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137430},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"26d8ff2204ea1f9b9db9a91ef15bef9d6f8cd7e3","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.21_1780548558044_0.007840231809776554","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"tangbao-he-db-helper","version":"1.0.23","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.23","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"5d9e37f05268616c41560b4774d6f563aec61517","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.23.tgz","fileCount":26,"integrity":"sha512-qpMZUUL6gfocRPdA+2D3h0COsQe/N09I2KU5RgOGXpEu4VP8x5dp2Ro5qLR7lwT1GeJ/9hHiEesndelwkRvW3Q==","signatures":[{"sig":"MEQCIAxH/Zn2A5STvJiDi0Bj7G5UWROybOqyzniQpbDem451AiAX1JAvsasw5C9L6IBszxHlagXWk1cdyO/bk8enKgQvBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138272},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"841fc711f7869ec46e33ddffc8c714b7371dbb46","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.23_1780550684304_0.4381190915598365","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"tangbao-he-db-helper","version":"1.0.24","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.24","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"e033f287b0b63db2372bc298765fb18bbbdf9f21","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.24.tgz","fileCount":26,"integrity":"sha512-Co5Cfeh7zXWLrEU8Nxmb1g1f/WraY5cEz2tz7St/vQgPlchLJuj5GuN+p13QYyHPvpz+FSRznAzamnDSPfCXtw==","signatures":[{"sig":"MEQCIBAjEpZvcEsEF1SiIeDKheZxLzn9tP68S6jly7uFqvoSAiAwtiv5Fl1hmN3g+SIfV1E7PJj7lkI8wvnGOAIaFyYcmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143265},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"0e298b14abe94d4db0ab9b291445a6485fa18e1c","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.24_1780559120748_0.026977541884614542","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"tangbao-he-db-helper","version":"1.0.25","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.25","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"45507cdc7c08cc5a4de7a47aed00e9ca7fd0caac","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.25.tgz","fileCount":26,"integrity":"sha512-1MRjjolC1P3xuiVIkEO2t37SWxaGMo/XKE1fP42NQ3Iug59VvH/1ryBtR4XwnUZfDqqDFqigv2SHROK+dqPQQg==","signatures":[{"sig":"MEYCIQCdBybbORYGLsgEJ4E5qii29fOHfLMzco++codYvhq50AIhAOyafbjtHnwNj1TeeiD7bTICmJ/yj7N7Y7tyRB0sHEC6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145188},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"9d01780c681a2cb32b9579b3cf007738011de99d","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.25_1780641836921_0.6835326870353289","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"tangbao-he-db-helper","version":"1.0.26","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.26","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"20b0c5ee1add79d9f7f29eb35d1e9be31d9cd4f4","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.26.tgz","fileCount":26,"integrity":"sha512-PCOFt7S1CkAzJDPiEKyc2xWhnKLPSnBsjldSfr+tnn57ewpoKQCvpcYGV4Qf+1Da3OepINj0VnFjbpGm2IlSIw==","signatures":[{"sig":"MEUCIQDjFvPLt7YblY2n22XR/jVwPVnqtzPULox8B3rAQvcZ4gIgCeYSp8a52f812Pw3aGCMbiBIWE+cneeHSkMAKKVoRd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145189},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"bf8e5542b2e4632adfc1ddab8e02bbd4bcdad48b","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0","better-sqlite3":"^11.10.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.26_1782357807645_0.2196596223028815","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"tangbao-he-db-helper","version":"1.0.27","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.27","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"2b29e9f3d47b38d02014f5372100ecafadb102bc","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.27.tgz","fileCount":26,"integrity":"sha512-nta3dXiNvjYcLKmXrCc0n2TyHDtFboPjuRnTLw+Vk7EZyrw0+cL/jaePgFP0oD15Jc2wpwJ+9b8suz52w5sCsw==","signatures":[{"sig":"MEYCIQDHH3TsYLhndcGQE36Ges9XTHi0TfczM8184167TkkcAAIhAIncFGRmm86lB/e/u895LntLMJQHkJdBZXZfDcU7i3z6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145225},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"9240e5f50f046759d0033e72fafe0f372f477712","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"optionalDependencies":{"better-sqlite3":"^11.10.0"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.27_1782980409789_0.1259188964929998","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"tangbao-he-db-helper","version":"1.0.28","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.28","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"5397cb02a563f605849bb198eda44766de6ea88e","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.28.tgz","fileCount":26,"integrity":"sha512-bERwIrQb4z7PX4zm+g8Wz1ofRnffDgsVim+ePTLarDB5dZI3yym3BbgTPtMrFAI8LfM7RVDxAWvgEtGmUQ43nQ==","signatures":[{"sig":"MEUCIQDyDrQQVGbbDLTFBaUcFVpnfpq/x8Nqs5YA0VUPJNR3bQIgYA9myhA25XL+60b57Z4Jskl4vGQf9FAVwHHchPAPwDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145224},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"2dd933f9ff411daceef4f845b4d3ef700f2201f0","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"optionalDependencies":{"better-sqlite3":"^12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.28_1783045942687_0.6099268201916876","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"tangbao-he-db-helper","version":"1.0.29","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","_id":"tangbao-he-db-helper@1.0.29","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"dist":{"shasum":"4d13fb6dcceb1205358fbfaf604cb98c16b776a1","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.29.tgz","fileCount":26,"integrity":"sha512-HrTZw3naj1I3wAWl/Xy41DLDx6alFvHbUSD9Gso2jqqXhLDhlC08pKyByFSeRktMfcQ0gX+D5mAWp/2a3jARpA==","signatures":[{"sig":"MEYCIQDBXjgAyYSYDYuP3kpTCgqO8EtyNGhLYBXkIStwJCR2gAIhAPrITj8H3eY3fLv98uB1Mvh32VFvqrGOIrGwzAcTD8Ff","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145736},"main":"db-config.js","engines":{"node":">=18.0"},"gitHead":"bc7c26785b7ef9e3bcae51083a0eeddd8b115575","scripts":{"test":"mocha test/**/*_spec.js"},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"node-red":{"nodes":{"tangbao-db-crud":"db-crud.js","tangbao-db-query":"db-query.js","tangbao-db-config":"db-config.js","tangbao-db-execute":"db-execute.js","tangbao-sql-mapper":"sql-mapper.js"},"version":">=4.0.0"},"repository":{"url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git","type":"git"},"_npmVersion":"11.6.1","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","directories":{},"_nodeVersion":"20.19.2","dependencies":{"mysql2":"^3.16.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"optionalDependencies":{"better-sqlite3":"^12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tangbao-he-db-helper_1.0.29_1783047227052_0.4390749387427646","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"tangbao-he-db-helper","version":"1.0.30","description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","main":"db-config.js","scripts":{"test":"mocha test/**/*_spec.js"},"keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git"},"bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"license":"MIT","engines":{"node":">=18.0"},"node-red":{"version":">=4.0.0","nodes":{"tangbao-db-config":"db-config.js","tangbao-sql-mapper":"sql-mapper.js","tangbao-db-query":"db-query.js","tangbao-db-execute":"db-execute.js","tangbao-db-crud":"db-crud.js"}},"dependencies":{"mysql2":"^3.16.0"},"devDependencies":{"mocha":"^10.2.0","should":"^13.2.3"},"gitHead":"5a10e59ccbeab3b389d64d255f91bfc76e10bd23","_id":"tangbao-he-db-helper@1.0.30","homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","_nodeVersion":"20.19.2","_npmVersion":"11.6.1","dist":{"integrity":"sha512-T+65zDlus+oTryfuAQBNeY/tEVlUQtihHAn2nSupLjc3sq7gtWMM4a/K8PQH8vmL05oOLajHMm42zKEYslFelQ==","shasum":"c7f02183df2c9accf888d9b7c693e02786b942fe","tarball":"https://registry.npmjs.org/tangbao-he-db-helper/-/tangbao-he-db-helper-1.0.30.tgz","fileCount":26,"unpackedSize":145387,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC425Y0b4nN7wcSFSCUnnjIXcEG72zxX1gdCNAWzeswrwIge9MObwlCEwC6F/NH21kTxsuD+KZtyhv+xAldQuxbmno="}]},"_npmUser":{"name":"tangbaohe","email":"tbhwangyi@gmail.com"},"directories":{},"maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tangbao-he-db-helper_1.0.30_1783049102437_0.8530183478125961"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T07:17:19.301Z","modified":"2026-07-03T03:25:02.676Z","1.0.0":"2026-05-11T07:17:19.521Z","1.0.1":"2026-05-11T08:58:34.949Z","1.0.2":"2026-05-11T09:04:28.207Z","1.0.3":"2026-05-11T10:34:46.428Z","1.0.4":"2026-05-11T10:41:15.765Z","1.0.5":"2026-05-12T02:29:00.123Z","1.0.6":"2026-05-12T03:21:43.186Z","1.0.7":"2026-05-12T05:45:45.402Z","1.0.8":"2026-05-12T06:09:29.309Z","1.0.9":"2026-05-12T06:17:27.354Z","1.0.11":"2026-05-13T06:59:07.675Z","1.0.13":"2026-05-14T07:53:09.229Z","1.0.14":"2026-05-18T04:02:56.955Z","1.0.15":"2026-05-21T09:33:03.143Z","1.0.16":"2026-05-25T03:15:45.398Z","1.0.17":"2026-05-25T04:03:10.473Z","1.0.19":"2026-05-29T09:01:11.987Z","1.0.20":"2026-06-04T03:55:00.502Z","1.0.21":"2026-06-04T04:49:18.172Z","1.0.23":"2026-06-04T05:24:44.443Z","1.0.24":"2026-06-04T07:45:20.894Z","1.0.25":"2026-06-05T06:43:57.139Z","1.0.26":"2026-06-25T03:23:27.833Z","1.0.27":"2026-07-02T08:20:09.920Z","1.0.28":"2026-07-03T02:32:22.855Z","1.0.29":"2026-07-03T02:53:47.198Z","1.0.30":"2026-07-03T03:25:02.576Z"},"bugs":{"url":"https://github.com/tangbinhe/tangbao-he-db-helper/issues"},"author":{"name":"tangbao-he","email":"tbhwangyi@gmail.com"},"license":"MIT","homepage":"https://github.com/tangbinhe/tangbao-he-db-helper#readme","keywords":["node-red","database","mybatis","sql","crud","mysql","postgresql","sqlite"],"repository":{"type":"git","url":"git+https://github.com/tangbinhe/tangbao-he-db-helper.git"},"description":"MyBatis-style database helper for Node-RED with CRUD, SQL mapper, and multi-database support","maintainers":[{"name":"tangbaohe","email":"tbhwangyi@gmail.com"}],"readme":"# tangbao-he-db-helper\n\nMyBatis-style database helper for Node-RED with MySQL and SQLite support.\n\n## Features\n\n- **SQL Mapper**: Template engine with `#{param}`, `${param}`, `<if>`, `<foreach>`\n- **Query Node**: Dedicated SELECT node for safe and simple query operations\n- **CRUD Node**: Pre-built operations like `selectById`, `insert`, `updateById`, etc.\n- **MySQL**: Connection pool, auto-reconnect, health check, multiple statements\n- **SQLite**: File-based local database, zero-config, no network required\n- **Result Mapping**: Auto snake_case to camelCase conversion\n- **Transaction Support**: `withTransaction` for safe batch operations\n- **Dynamic Parameters**: `msg.tableName`, `msg.params`, `msg.operation` for runtime flexibility\n- **Array IN Support**: Array values in conditions are automatically converted to `IN (...)`\n- **Error Resilience**: Database connection errors are caught and logged, never crash Node-RED\n\n## Nodes\n\n| Node | Type | Description |\n|------|------|-------------|\n| `tangbao-db-config` | Config | Database connection settings (MySQL or SQLite) |\n| `tangbao-sql-mapper` | Config | Reusable SQL templates |\n| `tangbao-db-query` | Flow | Execute SELECT queries with SQL templates |\n| `tangbao-db-execute` | Flow | Execute INSERT/UPDATE/DELETE with SQL templates |\n| `tangbao-db-crud` | Flow | Pre-built CRUD operations (selectById, insert, updateById, etc.) |\n\n## Requirements\n\n- Node.js >= 18.0\n- Node-RED >= 4.0.0\n- **For SQLite support**: `better-sqlite3` >= 12.0.0 (installed separately)\n\n## Installation\n\n```bash\ncd ~/.node-red\nnpm install tangbao-he-db-helper\n```\n\nOr install from a local `.tgz` file:\n\n```bash\ncd ~/.node-red\nnpm install /path/to/tangbao-he-db-helper-*.tgz\n```\n\n**For SQLite support, also install:**\n\n```bash\ncd ~/.node-red\nnpm install better-sqlite3\n```\n\nThen restart Node-RED.\n\n## Node Details\n\n### tangbao-db-config\n\nDatabase connection configuration node. Supports both MySQL and SQLite.\n\n**Driver Selection:**\n\n| Driver | Use Case | Required Extra Dependency |\n|--------|----------|--------------------------|\n| `MySQL` (default) | Remote/centralized database | `mysql2` (auto-installed) |\n| `SQLite` | Local file database, embedded | `better-sqlite3` (manual install) |\n\nWhen you select a driver in the configuration panel, the available fields automatically switch:\n\n- **MySQL**: Host, Port, User, Password, Database, Charset, Timezone, Connection Pool Limit\n- **SQLite**: Database File Path only (e.g., `/data/mydb.db` or `./mydb.db`)\n\n**MySQL Settings:**\n- Host, Port, Database\n- User / Password (stored in Node-RED credentials, encrypted at rest)\n- Charset (default: `UTF8_GENERAL_CI`)\n- Timezone (default: `local`)\n- Connection Pool Limit (default: `50`)\n\n**SQLite Settings:**\n- Database File Path: Absolute or relative path to the `.db` file. If the file does not exist, it will be created automatically.\n\n### tangbao-sql-mapper\n\nConfig node for reusable SQL templates. Supports dynamic parameters and conditional logic.\n\n**Template Syntax:**\n- `#{param}` — Parameter placeholder (prepared statement, safe from SQL injection)\n- `${param}` — Direct string replacement (use with caution)\n- `<if test=\"condition\">...</if>` — Conditional block\n- `<foreach collection=\"list\" item=\"item\" open=\"(\" separator=\",\" close=\")\">#{item}</foreach>` — Loop\n\n**Example:**\n```sql\nSELECT * FROM ${tableName}\n<where>\n  <if test=\"name != null\">AND name = #{name}</if>\n  <if test=\"age != null\">AND age > #{age}</if>\n</where>\n```\n\n### tangbao-db-query\n\nExecute SELECT queries using SQL templates, SQL mapper, or raw SQL. Results are returned as an array in `msg.payload`.\n\n**Inputs:**\n- `msg.sql` — Dynamic SQL (priority over node config and SQL mapper)\n- `msg.params` — SQL template parameters\n- `msg.payload` — Fallback for params\n\n**Outputs:**\n- `msg.payload` — Query result array\n\n**Example:**\n```javascript\nmsg.sql = \"SELECT * FROM user WHERE status = #{status} ORDER BY id DESC\";\nmsg.params = { status: 1 };\n```\n\n### tangbao-db-execute\n\nExecute SQL operations (INSERT/UPDATE/DELETE/SELECT) using SQL templates, SQL mapper, or raw SQL. Automatically detects query vs write operations based on SQL statement type.\n\n**Inputs:**\n- `msg.sql` — Dynamic SQL (priority over node config and SQL mapper)\n- `msg.params` — SQL template parameters\n- `msg.payload` — Fallback for params\n\n**Outputs:**\n- For SELECT queries: `msg.payload` — Result array\n- For INSERT/UPDATE/DELETE: `msg.payload` — Object with `affectedRows`, `insertId`, `changedRows`\n\n**Example:**\n```javascript\nmsg.sql = \"UPDATE user SET name = #{name} WHERE id = #{id}\";\nmsg.params = { id: 1, name: \"Alice\" };\n```\n\n### tangbao-db-crud\n\nPre-built CRUD operations. No SQL writing needed.\n\n**Operations:**\n\n| Operation | Description | Params Example | SQLite Compatible |\n|-----------|-------------|----------------|-------------------|\n| `selectById` | Query by ID | `{id: 1}` | Yes |\n| `selectOne` | Query single by conditions | `{name: \"Alice\"}` | Yes |\n| `selectList` | Query list by conditions | `{status: 1}` | Yes |\n| `selectCount` | Count by conditions | `{status: 1}` | Yes |\n| `selectByIds` | Query by ID list | `[1, 2, 3]` | Yes |\n| `selectPage` | Paginated query | `{status: 1, pageNum: 1, pageSize: 10}` | Yes |\n| `insert` | Insert full fields | `{name: \"Alice\", age: 20}` | Yes |\n| `insertSelective` | Insert non-null fields | `{name: \"Alice\"}` | Yes |\n| `insertBatch` | Batch insert | `[{name: \"A\"}, {name: \"B\"}]` | Yes |\n| `updateById` | Update full fields by ID | `{id: 1, name: \"Bob\", age: 21}` | Yes |\n| `updateSelectiveById` | Update non-null fields by ID | `{id: 1, name: \"Bob\"}` | Yes |\n| `deleteById` | Delete by ID | `{id: 1}` | Yes |\n| `deleteByIds` | Delete by ID list | `[1, 2, 3]` | Yes |\n| `deleteAndInsertBatch` | Clear table and batch insert | `[{name: \"A\"}, {name: \"B\"}]` | Yes |\n| `upsertBatch` | Batch insert or update | `[{id: 1, name: \"A\"}]` | Yes (see note below) |\n\n**SQLite Upsert Note:**\nSQLite uses `ON CONFLICT(id) DO UPDATE SET col = excluded.col` instead of MySQL's `ON DUPLICATE KEY UPDATE col = VALUES(col)`. The CRUD node automatically selects the correct syntax based on your configured driver.\n\n> **Important:** For `upsertBatch` to work with SQLite, the target table must have a **PRIMARY KEY** or **UNIQUE** constraint on the `idColumn`. Otherwise SQLite will raise a conflict resolution error.\n\n**Array to IN:**\n\nFor `selectList`, `selectOne`, `selectCount`, and `selectPage`, array values are automatically converted to `IN` conditions:\n\n```javascript\nmsg.params = { equip_type_id: [1212101, 1212102] };\n// Generates: WHERE equip_type_id IN (?, ?)\n```\n\n**Range / Operator Query:**\n\nYou can use object-style operators for range queries in `selectList`, `selectOne`, `selectCount`, and `selectPage`:\n\n| Operator | SQL Generated | Example Value |\n|----------|---------------|---------------|\n| `$eq` | `=` | `{ $eq: 'active' }` |\n| `$ne` | `!=` | `{ $ne: 0 }` |\n| `$gt` | `>` | `{ $gt: 1 }` |\n| `$gte` | `>=` | `{ $gte: '2025-01-01' }` |\n| `$lt` | `<` | `{ $lt: 100 }` |\n| `$lte` | `<=` | `{ $lte: '2025-12-31' }` |\n| `$like` | `LIKE` | `{ $like: '%error%' }` |\n| `$between` | `>= AND <=` | `{ $between: ['2025-01-01', '2025-12-31'] }` |\n\n```javascript\nmsg.params = {\n  pageNum: 1,\n  pageSize: 20,\n  alarm_time: { $gte: '2025-12-07 00:00:00', $lte: '2026-06-05 23:59:59' },\n  alarm_level: { $gt: 1 },\n  alarm_desc: { $like: '%高温%' }\n};\n// Generates: WHERE alarm_time >= ? AND alarm_time <= ? AND alarm_level > ? AND alarm_desc LIKE ?\n```\n\n**selectPage Output:**\n\nReturns a pagination object including total count:\n\n```json\n{\n  \"list\": [...],\n  \"total\": 100,\n  \"pageNum\": 1,\n  \"pageSize\": 10,\n  \"pages\": 10\n}\n```\n\n**Dynamic Usage:**\n\nUse `msg.tableName`, `msg.params`, `msg.operation` to operate on different tables with the same node:\n\n```javascript\n// First message\nmsg.tableName = \"user\";\nmsg.params = { status: 1 };\n\n// Second message\nmsg.tableName = \"order\";\nmsg.params = { status: 2 };\n```\n\n**Result Mapping (结果映射):**\n\n在数据库表字段通常使用下划线命名（如 `user_name`），而前端/JavaScript 中更习惯驼峰命名（如 `userName`）。结果映射用于自动转换查询结果的字段名。\n\n| 选项 | 说明 | 示例 |\n|------|------|------|\n| `camelCase` | 下划线转驼峰 | `user_name` → `userName` |\n| `none` | 不转换，保持原样 | `user_name` → `user_name` |\n\n```javascript\n// 数据库返回: [{ user_name: \"Alice\", user_age: 20 }]\n// 启用 camelCase 结果映射后，msg.payload:\n[{ userName: \"Alice\", userAge: 20 }]\n```\n\n**Param Mapping (参数映射):**\n\n参数映射用于在发送 SQL 之前，自动将传入参数的键名转换为数据库字段命名风格。这在你的前端传入驼峰命名参数，而数据库表使用下划线命名时非常有用。\n\n| 选项 | 说明 | 示例 |\n|------|------|------|\n| `snakeCase` | 驼峰转下划线 | `{ userName: \"Alice\" }` → `{ user_name: \"Alice\" }` |\n| `none` | 不转换，保持原样 | `{ userName: \"Alice\" }` → `{ userName: \"Alice\" }` |\n\n```javascript\n// 前端传入\nmsg.params = { userName: \"Alice\", userAge: 20 };\n\n// 启用 snakeCase 参数映射后，实际生成的 SQL:\n// INSERT INTO user (user_name, user_age) VALUES (?, ?)\n```\n\n**注意：** 结果映射与参数映射相互独立，可按需分别设置。例如：\n- **前端 ↔ 数据库命名风格不一致**：参数映射设为 `snakeCase`，结果映射设为 `camelCase`，实现全自动转换。\n- **前后端风格一致**：两者均设为 `none`，不做任何转换。\n\n**Auto Table Loading (自动加载表名):**\n\n在配置 `tangbao-db-crud` 节点时，只需先选择数据库配置（`tangbao-db-config`），表名下拉框会自动从该数据库加载所有表名供你选择，无需手动输入。如果数据库连接尚未部署或无法访问，也可以点击右侧\"自定义输入\"按钮直接手写表名。\n\n## SQLite Usage Example\n\n1. Install `better-sqlite3`:\n   ```bash\n   cd ~/.node-red\n   npm install better-sqlite3\n   ```\n\n2. Restart Node-RED.\n\n3. Create a `tangbao-db-config` node, select **SQLite** as the driver, and enter the database file path (e.g., `./data.db` or an absolute path like `/data/mydb.db`).\n\n4. Use `tangbao-db-crud` or `tangbao-db-query` / `tangbao-db-execute` as usual. All CRUD operations work the same way.\n\n### SQLite vs MySQL Quick Reference\n\n| Feature | MySQL | SQLite |\n|---------|-------|--------|\n| Connection | TCP (host:port) | Local file |\n| Auth | User / Password | None |\n| Pooling | Yes (configurable) | No (single connection) |\n| Auto-reconnect | Yes | N/A |\n| `upsertBatch` | `ON DUPLICATE KEY UPDATE` | `ON CONFLICT DO UPDATE` (requires PK/UNIQUE) |\n| `deleteAndInsertBatch` | Transaction | Transaction |\n| Table discovery | `information_schema` | `sqlite_master` |\n| Multi-statement execute | Supported with params | Supported **without** params |\n\n## Logging Configuration (日志配置)\n\n本节点包使用 `node.log` / `node.error` 输出运行日志，其输出级别受 Node-RED 全局日志配置控制。\n\n如需调整日志输出级别或关闭日志，请编辑 Node-RED 的 `settings.js` 文件：\n\n```javascript\nlogging: {\n    console: {\n        level: \"info\",    // 可选: trace, debug, info, warn, error, fatal\n        metrics: false,\n        audit: false\n    }\n}\n```\n\n| 级别 | 效果 |\n|------|------|\n| `trace` / `debug` | 输出所有日志（包括 SQL 调试信息） |\n| `info` | 默认级别，输出 SQL 执行信息和错误 |\n| `warn` | 仅输出警告和错误，隐藏常规 SQL 日志 |\n| `error` / `fatal` | 仅输出错误信息 |\n\n**注意：** Node-RED 目前没有为单个节点包单独设置日志级别的机制，上述配置为全局生效。建议在开发环境使用 `info`，生产环境使用 `warn` 或 `error` 以减少日志噪音。\n\n## Examples\n\nSee the `examples/` folder for sample flows:\n\n- `CRUD Example.json` — CRUD operations demo\n- `Execute Example.json` — Custom SQL execution demo\n- `Query Example.json` — SELECT query demo\n\n## License\n\nMIT\n","readmeFilename":"README.md"}