Browse Source

Remove files

hzq 1 year ago
parent
commit
8678e0b9af

+ 0 - 28
frameworks/C++/paozhu/paozhu_benchmark/common/autorestfulpaths.hpp

@@ -1,28 +0,0 @@
-
-#ifndef __HTTP_AUTO_REG_CONTROL_HTTPRESTFUL_HPP
-#define __HTTP_AUTO_REG_CONTROL_HTTPRESTFUL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-#pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "httppeer.h" 
-
-
-
-namespace http
-{
-  void _initauto_control_httprestful_paths(std::map<std::string, std::vector<std::string>>  &restfulmethod)
-  {
-    
-
-        if(restfulmethod.size())
-        {}
-        
-
-    }
-}
-
-#endif
-
-    

+ 0 - 9
frameworks/C++/paozhu/paozhu_benchmark/common/cost_define.h

@@ -1,9 +0,0 @@
-#pragma once
-#ifndef _CONST_DEFINE_FUNC_H
-#define _CONST_DEFINE_FUNC_H
-
-#define CONST_MONEY_PART 1000000
-#define CONST_HTTP_HEADER_BODY_SIZE 16384
-#define CONST_PHP_BODY_POST_SIZE 16777216
-
-#endif

+ 0 - 39
frameworks/C++/paozhu/paozhu_benchmark/common/httphook.cpp

@@ -1,39 +0,0 @@
-#include <iostream>
-#include <list>
-#include <map>
-#include <mutex>
-#include <queue>
-#include <string>
-#include <thread>
-#include <memory>
-#include <string_view>
-#include "httppeer.h"
-namespace http
-{
-std::map<std::string, bool> _block_ip_tables;
-std::map<std::string, bool> _block_host_tables;
-bool check_blockip(const std::string &client_ip)
-{
-    if (client_ip.size() > 0)
-    {
-        return false;
-    }
-    return false;
-}
-bool hook_host_http1(std::shared_ptr<httppeer> peer)
-{
-    if (peer->host.size() > 0)
-    {
-        return false;
-    }
-    return false;
-}
-bool hook_host_http2(std::shared_ptr<httppeer> peer)
-{
-    if (peer->host.size() > 0)
-    {
-        return false;
-    }
-    return false;
-}
-}// namespace http

+ 0 - 32
frameworks/C++/paozhu/paozhu_benchmark/common/json_reflect_headers.h

@@ -1,32 +0,0 @@
-#pragma once
-#include <sstream>
-#include <string>
-#include <vector>
-#include <map>
-
-#include "types/techempower_json.h"
-#include "unicode.h"
-
-template <typename JSON_REF_OBJ_TEMP>
-std::string json_encode([[maybe_unused]] const JSON_REF_OBJ_TEMP &json_reflectobj) { return ""; }
-
-template <typename JSON_REF_OBJ_TEMP>
-std::string json_encode([[maybe_unused]] const std::vector<JSON_REF_OBJ_TEMP> &json_reflectobj) { return ""; }
-
-template <typename JSON_REF_OBJ_TEMP>
-unsigned int json_decode([[maybe_unused]] JSON_REF_OBJ_TEMP &json_reflectobj, [[maybe_unused]] const std::string &_json_data, [[maybe_unused]] unsigned int _offset) { return 0; }
-
-template <typename JSON_REF_OBJ_TEMP>
-unsigned int json_decode([[maybe_unused]] std::vector<JSON_REF_OBJ_TEMP> &json_reflectobj, [[maybe_unused]] const std::string &_json_data, [[maybe_unused]] unsigned int _offset) { return 0; }
-
-namespace http
-{
-
-std::string json_encode(const techempower_outjson_t &json_reflectobj);
-
-std::string json_encode(const std::vector<techempower_outjson_t> &json_reflectobj);
-
-unsigned int json_decode(techempower_outjson_t &json_reflectobj, const std::string &_json_data, unsigned int _offset = 0);
-
-unsigned int json_decode(std::vector<techempower_outjson_t> &json_reflectobj, const std::string &_json_data, unsigned int _offset = 0);
-}// namespace http

+ 0 - 19
frameworks/C++/paozhu/paozhu_benchmark/common/websockets_method_reg.hpp

@@ -1,19 +0,0 @@
-#pragma once
-#include <map>
-#include "httppeer.h"
-#include "websockets.h"
-#include "mywebsockets.hpp"
-#include "websockets_callback.h"
-namespace http
-{
-void _initwebsocketmethodregto(WEBSOCKET_REG &methodcallback)
-{
-
-    methodcallback.emplace("wstest", [](std::weak_ptr<httppeer> p) -> std::shared_ptr<websockets_api>
-                           { return http::mywebsockets::create(p); });
-    //    methodcallback.emplace("looptest",[](std::weak_ptr<clientpeer> p)->std::shared_ptr<websockets_api>{
-    //      return http::loopwebsockets::create(p);
-    //   });
-}
-
-}// namespace http

+ 0 - 15
frameworks/C++/paozhu/paozhu_benchmark/libs/types/techempower_json.h

@@ -1,15 +0,0 @@
-#ifndef LIBS_TYPES_TECHEMPOWER_TYPE_H
-#define LIBS_TYPES_TECHEMPOWER_TYPE_H
-#include <string>
-#include <sstream>
-
-namespace http
-{
-//@reflect json to_json from_json
-struct techempower_outjson_t
-{
-    std::string message;
-};
-
-}// namespace http
-#endif

+ 0 - 290
frameworks/C++/paozhu/paozhu_benchmark/libs/types/techempower_json_jsonreflect.cpp

@@ -1,290 +0,0 @@
-#include <sstream>
-#include <string>
-#include <vector>
-#include <map>
-#include "types/techempower_json.h"
-#include "json_reflect_headers.h"
-#include "unicode.h"
-#include "func.h"
-
-namespace http
-{
-
-
-std::string json_encode(const techempower_outjson_t &json_reflectobj)
-	{
- 
-    std::stringstream _stream;
-    _stream << "{"; 
-    _stream << "\"message\":\"" << http::utf8_to_jsonstring(json_reflectobj.message)<< "\"";
-                
-    _stream << "}";
-
-    return _stream.str();
-            
-	}
-
-
-std::string json_encode(const std::vector<techempower_outjson_t> &json_reflectobj)
-        {
-        std::stringstream _stream;
-        _stream << "["; 
-    
-            for(unsigned int i=0;i<json_reflectobj.size();i++) 
-            {
-                if(i>0)
-                {
-                    _stream <<",";
-                }
-                _stream <<json_encode(json_reflectobj[i]);
-            }
-    
-        _stream << "]";
-
-        return _stream.str();
-        }
-              
-     unsigned int json_decode(techempower_outjson_t &json_reflectobj,const std::string &_json_data,unsigned int _offset)
-     {           
-             bool _isarray=false;
-        for(;_offset<_json_data.size();_offset++)
-        {
-            if(_json_data[_offset]=='{')
-            {
-                break;
-            }
-            if(_json_data[_offset]=='[')
-            {
-                _isarray=true;
-                break;
-            }
-        }
-
-        if(_isarray)
-        {
-            for(;_offset<_json_data.size();_offset++)
-            {
-                if(_json_data[_offset]=='{')
-                {
-                    _isarray=false;
-                    break;
-                }   
-            }
-        }
-
-        if(_isarray==false)
-        {
-            if(_json_data[_offset]=='{')
-            {
-                _offset++;
-            }
-            std::string _json_key_name,_json_value_name;
-            for(;_offset<_json_data.size();_offset++)
-            {
-
-                //去除空格
-                _offset=http::json_string_trim(_json_data,_offset);
-                //如果是右侧括号表示这个对象已经结束
-                if(_json_data[_offset]==0x7D)
-                {
-                    return _offset;
-                }
-                //直到引号
-                if(_json_data[_offset]==0x22)
-                {
-                    unsigned int temp_offset=_offset;
-                    _json_value_name.clear();
-                    _json_key_name=http::jsonstring_to_utf8(&_json_data[_offset],_json_data.size()-_offset,temp_offset);
-
-                    _offset=temp_offset;
-                    if(_offset < _json_data.size() &&_json_data[_offset]==0x22)
-                    {
-                        _offset+=1;
-                    }
-                    //键名 后就是键值类型 循环去除空格
-                    _offset=http::json_string_trim(_json_data,_offset);
-                    if(_offset < _json_data.size() &&_json_data[_offset]!=':')
-                    {
-                        return _offset; 
-                    }
-                    _offset++;
-                    _offset=http::json_string_trim(_json_data,_offset);
-                    
-                    if(_offset < _json_data.size() &&_json_data[_offset]=='{')
-                    {   //还是一个对象,表示有嵌套对象
-                        //1 内置 struct map<std::string,*>
-                        //递归代码
-                    
-                            _offset++;
-                            for ( ; _offset < _json_data.size(); _offset++)
-                            {
-                                if (_json_data[_offset] == '}')
-                                {
-                                    //offset++;
-                                    break;
-                                }
-                                if (_json_data[_offset] == '"')
-                                {
-                                    _offset++;
-                                    for ( ; _offset < _json_data.size(); _offset++)
-                                    {
-                                        if (_json_data[_offset] == '"'&&_json_data[_offset-1]!=0x5C)
-                                        {
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                                                
-
-                        if(_offset < _json_data.size() && (_json_data[_offset]==']'||_json_data[_offset]=='}'))
-                        {
-                            _offset-=1;
-                        }
-                        //直接下一个,不用处理键值
-                        continue;   
-                    }
-                    else if(_json_data[_offset]=='[')
-                    {   //表示有数组 
-                        //////////////////////////////////////////////////////////////////////
-                        //begin level1 []
-                        //vector<std::string> vector<std::pair<std::string,*>>   vector<vector<int|long|float|double>>
-                        //如果是非内置类型 直接使用json_decode<>
-
-                        //递归代码     
-
-                    
-                            _offset++;
-                            for ( ; _offset < _json_data.size(); _offset++)
-                            {
-                                if (_json_data[_offset] == ']')
-                                {
-                                    //offset++;
-                                    break;
-                                }
-                                if (_json_data[_offset] == '"')
-                                {
-                                    _offset++;
-                                    for ( ; _offset < _json_data.size(); _offset++)
-                                    {
-                                        if (_json_data[_offset] == '"'&&_json_data[_offset-1]!=0x5C)
-                                        {
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                        
-                        //直接下一个,不用处理键值
-                        if(_offset < _json_data.size() && (_json_data[_offset]==']'||_json_data[_offset]=='}'))
-                        {
-                            _offset-=1;
-                        }
-                        continue;    
-                        //end level1[]
-                        ////////////////////////////////////////////////////////////////////
-                    }
-                    else if(_json_data[_offset]==0x22)
-                    {
-                        //如果键值也是字符串
-                        temp_offset=_offset;
-                        _json_value_name=http::jsonstring_to_utf8(&_json_data[_offset],_json_data.size()-_offset,temp_offset);
-                        _offset=temp_offset;
-                        if(_json_data[_offset]==0x22)
-                        {
-                            if((_offset+1)<_json_data.size())
-                            {
-                                if(_json_data[_offset+1]!=']'&&_json_data[_offset+1]!='}')
-                                {
-                                    _offset+=1;
-                                }
-                            }
-                        }
-                    }
-                    else
-                    {
-                        //表示是数字 bool NULL
-                        for(;_offset<_json_data.size();_offset++)
-                        {
-                            //结束条件
-                            if(_json_data[_offset]==','||_json_data[_offset]==']'||_json_data[_offset]=='}'||_json_data[_offset]==0x20||_json_data[_offset]==0x0A||_json_data[_offset]==0x0D||_json_data[_offset]=='\t')
-                            {
-                                break;
-                            }
-                            _json_value_name.push_back(_json_data[_offset]);
-                        }
-                        //让前面循环退出或返回
-                        if(_offset < _json_data.size() && _json_data[_offset]=='}')
-                        {
-                            _offset-=1;
-                        }
-                    }
-                    ////////////////////////////////////////////////////////
-                    // level1
-                    //处理对象赋值
-                    if (http::str_casecmp(_json_key_name, "message"))
-                            {
-
-                                json_reflectobj.message=_json_value_name;     
-                            }
-                            
-                    ////////////////////////////////////////////////////////
-                    //继续循环下一个键值
-                    continue;
-                }
-            }
-        }
-        return _offset;
-    }
-  
-unsigned int json_decode(std::vector<techempower_outjson_t> &json_reflectobj,const std::string &_json_data,unsigned int _offset)
-      {          
-             bool _isarray=false;
-        for(;_offset<_json_data.size();_offset++)
-        {
-            if(_json_data[_offset]=='{')
-            {
-                break;
-            }
-            if(_json_data[_offset]=='[')
-            {
-                _isarray=true;
-                break;
-            }
-        }
-
-        if(_isarray)
-        {
-            if(_json_data[_offset]=='[')
-            {
-                _offset+=1;
-            }
-            for(;_offset<_json_data.size();_offset++)
-            {
-                _offset=http::json_string_trim(_json_data,_offset);
-                //直接返回,这样可以防插入空的对象
-                if(_json_data[_offset]==0x5D)
-                {
-                    return _offset;
-                }else if(_json_data[_offset]=='{')
-                {
-                    techempower_outjson_t temp;
-                    _offset=json_decode(temp,_json_data,_offset);
-                    json_reflectobj.push_back(temp);
-                }
-
-            }
-            
-        }
-        else
-        {
-            techempower_outjson_t temp;
-            _offset=json_decode(temp,_json_data,_offset);
-            json_reflectobj.push_back(temp);
-            
-        }
-
-        return _offset; 
-    }
-         
-}

+ 0 - 5
frameworks/C++/paozhu/paozhu_benchmark/orm/_rawsqlfile/default_Fortune.sql

@@ -1,5 +0,0 @@
-CREATE TABLE `fortune` (
-  `id` int unsigned NOT NULL AUTO_INCREMENT,
-  `message` varchar(2048) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

+ 0 - 5
frameworks/C++/paozhu/paozhu_benchmark/orm/_rawsqlfile/default_World.sql

@@ -1,5 +0,0 @@
-CREATE TABLE `world` (
-  `id` int unsigned NOT NULL AUTO_INCREMENT,
-  `randomNumber` int NOT NULL DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

+ 0 - 2556
frameworks/C++/paozhu/paozhu_benchmark/orm/include/fortunebase.h

@@ -1,2556 +0,0 @@
-#ifndef ORM_DEFAULT_FORTUNEBASEMATA_H
-#define ORM_DEFAULT_FORTUNEBASEMATA_H
-/*
-*This file is auto create from cli
-*本文件为自动生成 Sun, 21 Jan 2024 08:50:49 GMT
-***/
-#include <iostream>
-#include <cstdio>
-#include <sstream>
-#include <array>
-#include <map> 
-#include <string_view> 
-#include <string> 
-#include <vector>
-#include <ctime>
-#include <array>
-#include "mysql.h"
-namespace orm { 
-   
-    
-struct fortunebase
-{
-    struct meta{
-    unsigned  int id= 0; //
- std::string message=""; //
- } data;
- std::vector<fortunebase::meta> record;
-std::string _rmstag="default";//this value must be default or tag value, tag in mysqlconnect config file .
-std::vector<unsigned char> _keypos{0x00};
-MYSQL_ROW _row;
-std::vector<fortunebase::meta>::iterator begin(){     return record.begin(); }
-std::vector<fortunebase::meta>::iterator end(){     return record.end(); }
-std::vector<fortunebase::meta>::const_iterator begin() const{     return record.begin(); }
-std::vector<fortunebase::meta>::const_iterator end() const{     return record.end(); }
-const std::array<std::string,2> colnames={"id","message"};
-const std::array<unsigned char,2> colnamestype= {3,253};
-std::string tablename="fortune";
-std::string modelname="Fortune";
-
-	  unsigned char findcolpos(const std::string &coln){
-            if(coln.size()==0)
-            {
-                return 255;
-            }
-		    unsigned char  bi=coln[0];
-         
-
-	         if(bi<91&&bi>64){
-				bi+=32;
-			}
-            switch(coln[0]){
-
-
-         case 'i':
-   	 return 0;
-break;
-case 'm':
-   	 return 1;
-break;
-
-             }
-             return 255;
-           }
-         
-    int size(){ return record.size(); }   
-
-    std::string getPKname(){ 
-       return "id";
-}
-
-      void record_reset()
-      {
-            record.clear();     
-      }
-      void data_reset(){
-     fortunebase::meta metatemp;    
-            data = metatemp; 
-      }
-      
-      std::string soft_remove_sql([[maybe_unused]] const std::string &fieldsql){
-          std::string temp;
-     
-         return temp;
-     }
-     void _setColnamevalue()
-      {
-        for(unsigned char i=0;i<_keypos.size();i++)
-        {
-            switch(_keypos[i]){
-        	case 0:
-		 try{
-			data.id=std::stoul(_row[i]);
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-	case 1:
-		 try{
-			data.message.append((_row[i]==NULL?"":_row[i]));
-		}catch (...) { 
-			data.message.clear();
-			 }
-			break;
-	default:
-		 { }
-			
-
-                 }
-
-                 if(i>210){
-                     break;
-                 }
-          }
-   } 
-         void _addnewrowvalue(){
-           fortunebase::meta metatemp;   
-
-          for(unsigned char i=0;i<_keypos.size();i++){
- 
-                 switch(_keypos[i]){
-
-        	case 0:
-		 try{
-			metatemp.id=std::stoul(_row[i]);
-		}catch (...) { 
-			metatemp.id=0;
-			 }
-			break;
-	case 1:
-		 try{
-			metatemp.message.append((_row[i]==NULL?"":_row[i]));
-		}catch (...) { 
-			metatemp.message.clear();
-			 }
-			break;
-	default:
-		 { }
-			
-
-                  }
-                 if(i>210){
-                     break;
-                 }
-          }
-           record.emplace_back(std::move(metatemp)); 
-   } 
-
-  inline  std::string stringaddslash(std::string &content){
-        std::string temp;
-        for(unsigned int i=0;i<content.size();i++){
-            if(content[i]=='\''){
-                temp.append("\\'");
-                continue;
-            }else if(content[i]=='"'){
-                temp.append("\\\"");
-                continue;
-            }else if(content[i]=='\\'){
-                temp.append("\\\\");
-                continue;
-            }
-            temp.push_back(content[i]);
-        }
-        return temp;
-   }  
-  inline  std::string jsonaddslash(std::string &content){
-        std::string temp;
-        for(unsigned int i=0;i<content.size();i++){
-            if(content[i]=='"'){
-                temp.append("\\\"");
-                continue;
-            }
-            else if(content[i]=='\\'){
-                temp.append("\\\\");
-                continue;
-            }
-            temp.push_back(content[i]);
-        }
-        return temp;
-   }  
-
-   std::string _makeinsertsql(){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES (";
-
-        if(data.id==0){
-tempsql<<"null";
- }else{ 
-	tempsql<<std::to_string(data.id);
-}
-tempsql<<",'"<<stringaddslash(data.message)<<"'";
-tempsql<<")";
-
-     
-       return tempsql.str();
-   } 
-      
-      std::string _makerecordinsertsql( meta &insert_data){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES (";
-
-        if(insert_data.id==0){
-tempsql<<"null";
- }else{ 
-	tempsql<<std::to_string(insert_data.id);
-}
-tempsql<<",'"<<stringaddslash(insert_data.message)<<"'";
-tempsql<<")";
-
-     
-       return tempsql.str();
-   } 
-       
-      std::string _makerecordinsertsql( std::vector<meta> &insert_data){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES ";
-
-    for(unsigned int i=0;i<insert_data.size();i++)
-    {
-		if(i>0)
-		{
-			tempsql<<",";	
-		}
-		tempsql<<"(";
-
-
-        	if(insert_data[i].id==0){
-	tempsql<<"null";
-	 }else{ 
-	tempsql<<std::to_string(insert_data[i].id);
-	}
-		tempsql<<",'"<<stringaddslash(insert_data[i].message)<<"'";
-		tempsql<<")";
-	 } 
-
-     
-       return tempsql.str();
-   } 
-       
-    std::string _makeupdatesql(const std::string &fileld){
-       //int j=0;
-            std::ostringstream tempsql;
-                 tempsql<<"UPDATE ";
-                 tempsql<<tablename;
-                 tempsql<<" SET ";
-
-            bool isall=false;
-            if(fileld.empty()){
-                isall=true;
-            }
-            if(isall){
-
-        if(data.id==0){
-	tempsql<<"`id`=0";
- }else{ 
-	tempsql<<"`id`="<<std::to_string(data.id);
-}
-tempsql<<",`message`='"<<stringaddslash(data.message)<<"'";
- }else{ 
-
-     
-  unsigned int jj=0;
-                  std::string keyname;
-                  std::vector<unsigned char> keypos;
-                  for(;jj<fileld.size();jj++){
-                        if(fileld[jj]==','){
-                                unsigned char bpos_i=findcolpos(keyname);
-                               keypos.emplace_back(bpos_i); 
-#ifdef DEBUG
-                    if (bpos_i == 254)
-                    {
-                        std::cout << "\033[1m\033[31m-----------\n"
-                                  << keyname << " not in " << tablename << " table Field.\n-----------\033[0m"
-                                  << std::endl;
-                    }
-#endif                               
-                               keyname.clear();
-                             continue;   
-                        }
-                        if(fileld[jj]==0x20){
-
-                             continue;   
-                        }
-                        keyname.push_back(fileld[jj]);
-
-                  }  
-                 if(keyname.size()>0){
-                                unsigned char bpos_i=findcolpos(keyname);
- #ifdef DEBUG
-                    if (bpos_i == 254)
-                    {
-                        std::cout << "\033[1m\033[31m-----------\n"
-                                  << keyname << " not in " << tablename << " table Field.\n-----------\033[0m"
-                                  << std::endl;
-                    }
-#endif                                       
-                                keypos.emplace_back(bpos_i); 
-                                keyname.clear();
-                 }
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(data.id==0){
-	tempsql<<"`id`=0";
- }else{ 
-	tempsql<<"`id`="<<std::to_string(data.id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-tempsql<<"`message`='"<<stringaddslash(data.message)<<"'";
- break;
-
-     
-                  default:
-                                ;
-                     }
-                 }   
-
-            }        
-
-        return tempsql.str();
-   } 
-   
-   std::vector<std::string> data_toarray(std::string fileld=""){
-        std::vector<std::string> temparray;
-        std::string keyname;
-        unsigned char jj=0;
-        std::vector<unsigned char> keypos;
-        if(fileld.size()>1){
-            for(;jj<fileld.size();jj++){
-                    if(fileld[jj]==','){
-                        keypos.emplace_back(findcolpos(keyname)); 
-                        keyname.clear();
-                        continue;   
-                    }
-                    if(fileld[jj]==0x20){
-
-                        continue;   
-                    }
-                    keyname.push_back(fileld[jj]);
-
-            }  
-            if(keyname.size()>0){
-                            keypos.emplace_back(findcolpos(keyname)); 
-                            keyname.clear();
-            }
-        }else{
-            for(jj=0;jj<colnames.size();jj++){
-                keypos.emplace_back(jj); 
-            }
-        }
-               
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
-if(data.id==0){
-	temparray.push_back("0");
- }else{ 
-	temparray.push_back(std::to_string(data.id));
-}
- break;
- case 1:
-	temparray.push_back(data.message);
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-   
-     return temparray;             
-   }   
-   
-   std::map<std::string,std::string> data_tomap(std::string fileld=""){
-       std::map<std::string,std::string> tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>1){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
-if(data.id==0){
-	tempsql.insert({"id","0"});
- }else{ 
-	tempsql.insert({"id",std::to_string(data.id)});
-}
- break;
- case 1:
-	tempsql.insert({"message",data.message});
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-    
-     return tempsql;             
-   }   
-   
-   std::string data_tojson(){
-       std::ostringstream tempsql;
-
-        tempsql<<"{";
-if(data.id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(data.id);
-}
-tempsql<<",\"message\":\""<<http::utf8_to_jsonstring(data.message);
-tempsql<<"\"";
-tempsql<<"}";
-
-     
-     return tempsql.str();             
-   }   
-   
-   std::string data_tojson(std::string fileld){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                 tempsql<<"{";
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(data.id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(data.id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-tempsql<<"\"message\":\""<<http::utf8_to_jsonstring(data.message)<<"\"";
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-     return tempsql.str();             
-   }   
-   
-    void from_json(const std::string &json_content)
-   {
-        record.clear();
-        fortunebase::meta metatemp; 
-        data=metatemp;
-        unsigned int json_offset=0;
-        bool isarray=false;
-        //std::vector<std::string> list_content;
-        for(;json_offset<json_content.size();json_offset++)
-        {
-            if(json_content[json_offset]=='{')
-            {
-                break;
-            }
-            if(json_content[json_offset]=='[')
-            {
-                isarray=true;
-                break;
-            }
-        }
-        if(isarray)
-        {
-            json_offset+=1; 
-            std::string json_key_name,json_value_name; 
-            for(;json_offset<json_content.size();json_offset++)
-            {
-                for(;json_offset<json_content.size();json_offset++)
-                {
-                    if(json_content[json_offset]=='{')
-                    {
-                        json_offset+=1;
-                        break;
-                    }
-                }
-                if(record.size()>0)
-                {
-                    data=metatemp;
-                }
-                if(json_offset>=json_content.size())
-                {
-                    break;
-                }
-                for(;json_offset<json_content.size();json_offset++)
-                {
-    
-                            if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                            {
-                                continue;
-                            }
-                            else
-                            {
-                                if(json_content[json_offset]==0x22)
-                                {
-                                    unsigned int temp_offset=json_offset;
-                                    json_key_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                    json_offset=temp_offset;
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        json_offset+=1;
-                                    }
-                                    for(;json_offset<json_content.size();json_offset++)
-                                    {
-                                    
-                                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                        {
-                                            continue;
-                                        }
-                                        break;
-                                    }       
-                                    if(json_content[json_offset]!=':')
-                                    {
-                                        break;
-                                    }
-                                    for(;json_offset<json_content.size();json_offset++)
-                                    {
-                                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                        {
-                                            continue;
-                                        }
-                                        break;
-                                    } 
-                                    json_offset+=1;
-                                    if(json_offset>=json_content.size())
-                                    {
-                                        break;
-                                    }
-                                    json_value_name.clear();
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        
-                                        temp_offset=json_offset;
-                                        json_value_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                        json_offset=temp_offset;
-                                        if(json_content[json_offset]==0x22)
-                                        {
-                                            json_offset+=1;
-                                        }
-                                    }
-                                    else
-                                    {
-                                        if(json_content[json_offset]!='{'&&json_content[json_offset]!=']')
-                                        {
-                                            for(;json_offset<json_content.size();json_offset++)
-                                            {
-                                                if(json_content[json_offset]==0x5D||json_content[json_offset]==0x7D||json_content[json_offset]==0x22||json_content[json_offset]==0x2C||json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                                {
-                                                    if(json_content[json_offset]==0x7D)
-                                                    {
-                                                        json_offset-=1;
-                                                    } 
-                                                    break;
-                                                }
-                                                json_value_name.push_back(json_content[json_offset]);
-                                            }   
-                                        }
-                                    }
-                                    //////////////////////////
-                                    set_val(json_key_name,json_value_name);
-                                    continue;
-                                }
-                                else
-                                {
-                                    break;
-                                }
-                            }
-    
-                }
-                record.emplace_back(data);
-                
-                json_offset+=1;
-            }
-            if(record.size()>1)
-            {
-                data=record[0];
-            }
-        }
-        else
-        {
-           if(json_content[json_offset]=='{')
-            {
-                json_offset+=1; 
-                std::string json_key_name,json_value_name; 
-                 
-                
-                for(;json_offset<json_content.size();json_offset++)
-                {
- 
-                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                        {
-                            continue;
-                        }
-                        else
-                        {
-                            if(json_content[json_offset]==0x22)
-                            {
-                                 unsigned int temp_offset=json_offset;
-                                 json_key_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                 json_offset=temp_offset;
-                                 if(json_content[json_offset]==0x22)
-                                 {
-                                    json_offset+=1;
-                                 }
-                                for(;json_offset<json_content.size();json_offset++)
-                                {
-                                
-                                    if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                    {
-                                        continue;
-                                    }
-                                    break;
-                                }       
-                                if(json_content[json_offset]!=':')
-                                {
-                                    break;
-                                }
-                                for(;json_offset<json_content.size();json_offset++)
-                                {
-                                    if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                    {
-                                        continue;
-                                    }
-                                    break;
-                                } 
-                                json_offset+=1;
-                                if(json_offset>=json_content.size())
-                                {
-                                    break;
-                                }
-                                json_value_name.clear();
-                                if(json_content[json_offset]==0x22)
-                                {
-                                    
-                                    temp_offset=json_offset;
-                                    json_value_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                    json_offset=temp_offset;
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        json_offset+=1;
-                                    }
-                                }
-                                else
-                                {
-                                    if(json_content[json_offset]!='{'&&json_content[json_offset]!=']')
-                                    {
-                                        for(;json_offset<json_content.size();json_offset++)
-                                        {
-                                            if(json_content[json_offset]==0x5D||json_content[json_offset]==0x7D||json_content[json_offset]==0x22||json_content[json_offset]==0x2C||json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                            {
-                                               if(json_content[json_offset]==0x7D)
-                                               {
-                                                   json_offset-=1;
-                                               } 
-                                               break;
-                                            }
-                                            json_value_name.push_back(json_content[json_offset]);
-                                        }   
-                                    }
-                                }
-                                //////////////////////////
-                                set_val(json_key_name,json_value_name);
-                                continue;
-                            }
-                            else
-                            {
-                                break;
-                            }
-                        }
- 
-                }
-                record.emplace_back(data);
-            } 
-        }
-   }   
-    
-    void set_val(const std::string& set_key_name,const std::string& set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=std::stoul(set_value_name);
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.message.append(set_value_name);
-		}catch (...) { 
-			data.message.clear();
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-    void set_val(const std::string& set_key_name,const long long set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=set_value_name;
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.message=std::to_string(set_value_name);
-		}catch (...) { 
-			data.message.clear();
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-    void set_val(const std::string& set_key_name,const double set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=(unsigned int)set_value_name;
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.message=std::to_string(set_value_name);
-		}catch (...) { 
-			data.message.clear();
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-   std::string to_json(std::string fileld=""){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                tempsql<<"[";
-              for(size_t n=0;n<record.size();n++){
-                  if(n>0){
-                      tempsql<<",{";
-                  }else{
-                      tempsql<<"{";
-                  }  
-                 
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(record[n].id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(record[n].id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-tempsql<<"\"message\":\""<<http::utf8_to_jsonstring(record[n].message)<<"\"";
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-            }
-      tempsql<<"]";
-     return tempsql.str();             
-   }   
-   
-   std::string to_json(std::function<bool(std::string&,meta&)> func,std::string fileld=""){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                tempsql<<"[";
-              for(size_t n=0;n<record.size();n++){
-                 keyname.clear();
-                 if(func(keyname,record[n])){ 
-                            if(n>0){
-                                tempsql<<",{";
-                            }else{
-                                tempsql<<"{";
-                            } 
-                            tempsql<<keyname;
-                 }else{
-                    continue;
-                 } 
-                  
-                 for(jj=0;jj<keypos.size();jj++){
-                        
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(record[n].id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(record[n].id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-tempsql<<"\"message\":\""<<http::utf8_to_jsonstring(record[n].message)<<"\"";
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-            }
-      tempsql<<"]";
-     return tempsql.str();             
-   }   
-   long long getPK(){  return data.id; } 
- void setPK(long long val){  data.id=val;} 
-unsigned  int  getId(){  return data.id; } 
- void setId(unsigned  int  val){  data.id=val;} 
-
-std::string getMessage(){  return data.message; } 
-std::string& getRefMessage(){  return std::ref(data.message); } 
- void setMessage(std::string &val){  data.message=val;} 
- void setMessage(std::string_view val){  data.message=val;} 
-
-fortunebase::meta getnewData(){
- 	 struct meta newdata;
-	 return newdata; 
-} 
-fortunebase::meta getData(){
- 	 return data; 
-} 
-std::vector<fortunebase::meta> getRecord(){
- 	 return record; 
-} 
-
-
-    template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		 if(key_name=="message")
-		{
-			return data.message;
-		}
-		return nullptr; 
-	}
-
-
-    template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true>
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		 if(key_name=="id")
-		{
-			return data.id;
-		}
-		return nullptr; 
-	}
-
-
-    template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true >
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		return nullptr; 
-	}
-
-            template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >  
-            std::vector<T> getCol([[maybe_unused]] std::string keyname)
-            {
-                std::vector<T> a;
-                
-   
-                unsigned char kpos;
-                kpos=findcolpos(keyname);               
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-   			case 0: 
- 				 a.emplace_back(iter.id);
-				 break;
-
-                    }
-                }
-    
-                return a;
-            }
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true >    
-			std::vector<T> getCol([[maybe_unused]] std::string keyname)
-			{
-				std::vector<T> a;
-				
-
-                return a;
-            }
-    
-            template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >   
-            T getVal([[maybe_unused]] std::string keyname)
-            {
-   
-                    unsigned char kpos;
-                    kpos=findcolpos(keyname);                   
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 return data.id;
-				 break;
-			}
-                return 0;
-            }  
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true > 
-        T getVal([[maybe_unused]] fortunebase::meta & iter,[[maybe_unused]] std::string keyname)
-        {
-
-          
-            unsigned char kpos;
-            kpos=findcolpos(keyname);   
-            switch(kpos)
-            {
-   			case 0: 
- 				 return iter.id;
-				 break;
-
-			}
-
-            return 0;
-        }  
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true > 
-            T getVal(std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-            
-                switch(kpos)
-                {
-
-    
-                    }
-                   
-    
-                    return 0.0;
-            }  
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true > 
-            T getVal([[maybe_unused]] fortunebase::meta & iter,std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-                switch(kpos)
-                {
-   
-                }
-                 
-    
-            
-                return 0.0;
-            }  
-    
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true > 
-            std::string getVal(std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-        
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 return data.message;
-				 break;
-
-                }
-                return "";
-            }  
-   
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true > 
-            std::string getVal([[maybe_unused]] fortunebase::meta & iter,std::string keyname)
-            {
-         
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-       
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 return iter.message;
-				 break;
-
-                }
-                
-    
-                 
-                return "";
-            }  
-     
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >   
-            std::vector<std::string> getCol([[maybe_unused]] std::string keyname)
-            {
-                std::vector<std::string> a;
-
-           
-                unsigned char kpos;
-                kpos=findcolpos(keyname);                    
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-    			case 1: 
- 				 a.emplace_back(iter.message);
-					 break;
-					}
-				}
-
-        return a;
-    }
-     
-        std::string getstrCol(std::string keyname,[[maybe_unused]] bool isyinhao=false)
-        {
-            std::ostringstream a;
-    
-            unsigned char kpos;
-            kpos=findcolpos(keyname);   
-            int j=0;
-            if(isyinhao&&record.size()>0)
-            {
-                a<<'"';
-            }
-            for(auto &iter:record)
-            {
-                    if(j>0)
-                    {
-                        if(isyinhao)
-                        {
-                            a<<"\",\"";
-                        }else{
-                            a<<',';    
-                        }
-                    }
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 a<<std::to_string(iter.id);
-				 break;
-			case 1: 
- 				 if(isyinhao){ a<<jsonaddslash(iter.message); 
-				 }else{
-				 a<<iter.message;
-				 }
-				 break;
-
-                    }
-                    j++;
-            } 
-            if(isyinhao&&j>0){
-                a<<'"';
-            }      
-    
-                return a.str();
-        }
-    
-    template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>     
-    std::map<std::string,std::string> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-    {
-        std::map<std::string,std::string> a;
-    
-        unsigned char kpos,vpos;
-        kpos=findcolpos(keyname);
-        vpos=findcolpos(valname);        
-         std::string ktemp,vtemp;
-         for(auto &iter:record)
-         {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-				 } 
-			switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-
-        
-            return a;
-        } 
-    
-
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<std::string,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::map<std::string,U> a;
-      
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);            
-                std::string ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {    
-                    switch(kpos)
-                    {
- 
-       			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 } 
-		 switch(vpos){
-
-                    }
-                    if(ktemp.size()>0)
-                    {
-                        a.emplace(ktemp,vtemp);
-                    }
-                }       
-        
-            return a;
-        } 
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>       
-        std::map<T,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,U> a;
-       
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);        
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
- 
-       case 0: 
- 	 ktemp=iter.id;
-	 break;
-	 } 
- 		  switch(vpos){
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-     
-        return a;
-    }  
-            template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>      
-            std::map<T,std::string> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-            {
-                std::map<T,std::string> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);         
-                T ktemp;
-                std::string vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
- 			switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-
-                    }
-                    if(ktemp.size()>0)
-                    {
-                        a.emplace(ktemp,vtemp);
-                    }
-                } 
-         
-                return a;
-            }     
-        
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>       
-        std::map<std::string,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<std::string,U> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            std::string  ktemp;
-            U  vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
- 			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-      
-        return a;
-    }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>   
-        std::map<T,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,U> a;
-    
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
- 			switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-    
-            return a;
-        }   
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >         
-        std::map<T,meta> getmapRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,meta> a;
-    
-            unsigned char kpos;
-            kpos=findcolpos(keyname);                        
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 a.emplace(iter.id,iter);
-				 break;
-
-                }
-            }       
-     
-            return a;
-        }     
-    
-        template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >    
-        std::map<std::string,meta> getmapRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<std::string,meta> a;
-
-    
-            unsigned char kpos;
-            kpos=findcolpos(keyname);            
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 a.emplace(iter.message,iter);
-			 break;
-
-                }
-                //a.emplace(ktemp,iter);
-            }       
-    
-
-        return a;
-    }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>  
-        std::vector<std::pair<std::string,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::vector<std::pair<std::string,U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);                   
-            std::string ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-	 		 }
- 			switch(vpos){
-
-                   }
-
-                 a.emplace_back(ktemp,vtemp);
-            }       
-
-     
-
-            return a;
-        }   
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-			 break;
-			  }
-			 switch(vpos){
-
-                   }
-
-                   a.emplace_back(ktemp,vtemp);
-                }       
-
-    
-
-            return a;
-        }   
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
- 			switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-
-                   }
-
-                    a.emplace_back(ktemp,vtemp);
-                }       
-    
-            return a;
-        }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>     
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);                
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    
-                    switch(kpos)
-                    {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
- 			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-
-                   }
-                    a.emplace_back(ktemp,vtemp);
-                }       
-    
-            return a;
-        }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-
-                   }
-                    a.emplace_back(ktemp,vtemp);
-                }       
-      
-            return a;
-        }   
-    
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>     
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   case 1: 
- 	 ktemp=iter.message;
-	 break;
-	  }
- switch(vpos){
-case 1: 
- 	 vtemp=iter.message;
-	 break;
-
-                   }
-
-                    a.emplace_back(ktemp,vtemp);
-                }       
-    
-            return a;
-        }  
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >   
-        std::vector<std::pair<T,meta>> getvecRows([[maybe_unused]] std::string keyname)
-        {
-            std::vector<std::pair<T,meta>> a;
-     
-            unsigned char kpos;
-            kpos=findcolpos(keyname);                  
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   case 0: 
- 	 a.emplace_back(iter.id,iter);
-	 break;
-
-                }
-            }       
-    
-        return a;
-    }
-        template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >  
-        std::vector<std::pair<std::string,meta>> getvecRows([[maybe_unused]] std::string keyname)
-        {
-            std::vector<std::pair<std::string,meta>> a;
-      
-            unsigned char kpos;
-            kpos=findcolpos(keyname);                     
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   case 1: 
- 	 a.emplace_back(iter.message,iter);
-	 break;
-
-                }
-            }       
-    
-
-        return a;
-    }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-    
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);      
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-    
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);          
-            T ktemp;
-            U vtemp;
-            //D vtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			  }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);       
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-				  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			 }
-
-			 switch(dpos){
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.message);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-                std::map<T,std::map<U,std::vector<D>>> a;
-   
-                unsigned char kpos,vpos,dpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                dpos=findcolpos(dataname);
-                T ktemp;
-                U vtemp;
-            // D dtemp;
-
-                for(auto &iter:record)
-                {
-                    
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                   }
-                }       
-    
-            return a;
-        }
-    
-    template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-    std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-    {
-        std::map<T,std::map<U,std::vector<D>>> a;
-
-   
-        unsigned char kpos,vpos,dpos;
-        kpos=findcolpos(keyname);
-        vpos=findcolpos(valname);
-        dpos=findcolpos(dataname);             
-        T ktemp;
-        U vtemp;
-       // D dtemp;
-
-         for(auto &iter:record)
-         {
-            switch(kpos)
-            {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-
-            }
-         }       
-    
-        return a;
-    }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			  }
-
-			 switch(dpos){
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.message);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-                std::map<T,std::map<U,std::vector<D>>> a;
-   
-                unsigned char kpos,vpos,dpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                dpos=findcolpos(dataname);               
-                T ktemp;
-                U vtemp;
-                //D vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                    }
-                }       
-    
-
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);            
-            T ktemp;
-            U vtemp;
-            //D vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-    template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-    std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-    {
-        std::map<T,std::map<U,std::vector<D>>> a;
-
-   
-        unsigned char kpos,vpos,dpos;
-        kpos=findcolpos(keyname);
-        vpos=findcolpos(valname);
-        dpos=findcolpos(dataname);
-        T ktemp;
-        U vtemp;
-        // D dtemp;
-
-         for(auto &iter:record)
-         {
-             
-            switch(kpos)
-            {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 }
-
-			switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			 }
-
-			switch(dpos){
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.message);
-				 break;
-
-            }
-         }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);        
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                }
-            }       
-
-    
-            return a;
-        }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);        
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 1: 
- 				 vtemp=iter.message;
-				 break;
-			  }
-
-			 switch(dpos){
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.message);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 1: 
- 				 a[ktemp].emplace_back(iter.message);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 }
-
-			 switch(vpos){
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp].emplace_back(iter.id);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 1: 
- 				 a[ktemp].emplace_back(iter.message);
-				 break;
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-               
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-
-			 switch(vpos){
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp].emplace_back(iter.id);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename std::enable_if<std::is_integral_v<T>,bool>::type = true>    
-        std::map<T,std::vector<meta>> getgroupRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,std::vector<meta>> a;
-   
-            unsigned char kpos;
-            kpos=findcolpos(keyname);
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 a[iter.id].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<meta>> getgroupRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,std::vector<meta>> a;
-   
-            unsigned char kpos;
-            kpos=findcolpos(keyname);
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 a[iter.message].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 1: 
- 				 a[ktemp][iter.message].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 1: 
- 				 ktemp=iter.message;
-				 break;
-	  }
-
- switch(vpos){
-			case 0: 
- 				 a[ktemp][iter.id].emplace_back(iter);
-				 break;
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<U>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);        
-        T ktemp;
-        
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp][iter.id].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 1: 
- 				 a[ktemp][iter.message].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-  };
-    
-
-}
-#endif
-   

+ 0 - 2370
frameworks/C++/paozhu/paozhu_benchmark/orm/include/worldbase.h

@@ -1,2370 +0,0 @@
-#ifndef ORM_DEFAULT_WORLDBASEMATA_H
-#define ORM_DEFAULT_WORLDBASEMATA_H
-/*
-*This file is auto create from cli
-*本文件为自动生成 Sun, 21 Jan 2024 08:50:49 GMT
-***/
-#include <iostream>
-#include <cstdio>
-#include <sstream>
-#include <array>
-#include <map> 
-#include <string_view> 
-#include <string> 
-#include <vector>
-#include <ctime>
-#include <array>
-#include "mysql.h"
-namespace orm { 
-   
-    
-struct worldbase
-{
-    struct meta{
-    unsigned  int id= 0; //
- int randomnumber= 0; //
- } data;
- std::vector<worldbase::meta> record;
-std::string _rmstag="default";//this value must be default or tag value, tag in mysqlconnect config file .
-std::vector<unsigned char> _keypos{0x00};
-MYSQL_ROW _row;
-std::vector<worldbase::meta>::iterator begin(){     return record.begin(); }
-std::vector<worldbase::meta>::iterator end(){     return record.end(); }
-std::vector<worldbase::meta>::const_iterator begin() const{     return record.begin(); }
-std::vector<worldbase::meta>::const_iterator end() const{     return record.end(); }
-const std::array<std::string,2> colnames={"id","randomnumber"};
-const std::array<unsigned char,2> colnamestype= {3,3};
-std::string tablename="world";
-std::string modelname="World";
-
-	  unsigned char findcolpos(const std::string &coln){
-            if(coln.size()==0)
-            {
-                return 255;
-            }
-		    unsigned char  bi=coln[0];
-         
-
-	         if(bi<91&&bi>64){
-				bi+=32;
-			}
-            switch(coln[0]){
-
-
-         case 'i':
-   	 return 0;
-break;
-case 'r':
-   	 return 1;
-break;
-
-             }
-             return 255;
-           }
-         
-    int size(){ return record.size(); }   
-
-    std::string getPKname(){ 
-       return "id";
-}
-
-      void record_reset()
-      {
-            record.clear();     
-      }
-      void data_reset(){
-     worldbase::meta metatemp;    
-            data = metatemp; 
-      }
-      
-      std::string soft_remove_sql([[maybe_unused]] const std::string &fieldsql){
-          std::string temp;
-     
-         return temp;
-     }
-     void _setColnamevalue()
-      {
-        for(unsigned char i=0;i<_keypos.size();i++)
-        {
-            switch(_keypos[i]){
-        	case 0:
-		 try{
-			data.id=std::stoul(_row[i]);
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-	case 1:
-		 try{
-			data.randomnumber=std::stoi(_row[i]);
-		}catch (...) { 
-			data.randomnumber=0;
-			 }
-			break;
-	default:
-		 { }
-			
-
-                 }
-
-                 if(i>210){
-                     break;
-                 }
-          }
-   } 
-         void _addnewrowvalue(){
-           worldbase::meta metatemp;   
-
-          for(unsigned char i=0;i<_keypos.size();i++){
- 
-                 switch(_keypos[i]){
-
-        	case 0:
-		 try{
-			metatemp.id=std::stoul(_row[i]);
-		}catch (...) { 
-			metatemp.id=0;
-			 }
-			break;
-	case 1:
-		 try{
-			metatemp.randomnumber=std::stoi(_row[i]);
-		}catch (...) { 
-			metatemp.randomnumber=0;
-			 }
-			break;
-	default:
-		 { }
-			
-
-                  }
-                 if(i>210){
-                     break;
-                 }
-          }
-           record.emplace_back(std::move(metatemp)); 
-   } 
-
-  inline  std::string stringaddslash(std::string &content){
-        std::string temp;
-        for(unsigned int i=0;i<content.size();i++){
-            if(content[i]=='\''){
-                temp.append("\\'");
-                continue;
-            }else if(content[i]=='"'){
-                temp.append("\\\"");
-                continue;
-            }else if(content[i]=='\\'){
-                temp.append("\\\\");
-                continue;
-            }
-            temp.push_back(content[i]);
-        }
-        return temp;
-   }  
-  inline  std::string jsonaddslash(std::string &content){
-        std::string temp;
-        for(unsigned int i=0;i<content.size();i++){
-            if(content[i]=='"'){
-                temp.append("\\\"");
-                continue;
-            }
-            else if(content[i]=='\\'){
-                temp.append("\\\\");
-                continue;
-            }
-            temp.push_back(content[i]);
-        }
-        return temp;
-   }  
-
-   std::string _makeinsertsql(){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES (";
-
-        if(data.id==0){
-tempsql<<"null";
- }else{ 
-	tempsql<<std::to_string(data.id);
-}
-if(data.randomnumber==0){
-	tempsql<<",0";
- }else{ 
-	tempsql<<","<<std::to_string(data.randomnumber);
-}
-tempsql<<")";
-
-     
-       return tempsql.str();
-   } 
-      
-      std::string _makerecordinsertsql( meta &insert_data){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES (";
-
-        if(insert_data.id==0){
-tempsql<<"null";
- }else{ 
-	tempsql<<std::to_string(insert_data.id);
-}
-if(insert_data.randomnumber==0){
-	tempsql<<",0";
- }else{ 
-	tempsql<<","<<std::to_string(insert_data.randomnumber);
-}
-tempsql<<")";
-
-     
-       return tempsql.str();
-   } 
-       
-      std::string _makerecordinsertsql( std::vector<meta> &insert_data){
-      unsigned int j=0;
-                std::ostringstream tempsql;
-                tempsql<<"INSERT INTO ";
-                    tempsql<<tablename;
-                   tempsql<<" (";
-                    for(;j<colnames.size();j++){
-                            if(j>0){
-                                tempsql<<"`,`";
-                            }else{
-                                tempsql<<"`";
-                            }
-                            tempsql<<colnames[j];
-                    }
-                    if(j>0){
-                        tempsql<<"`";
-                    }
-            tempsql<<") VALUES ";
-
-    for(unsigned int i=0;i<insert_data.size();i++)
-    {
-		if(i>0)
-		{
-			tempsql<<",";	
-		}
-		tempsql<<"(";
-
-
-        	if(insert_data[i].id==0){
-	tempsql<<"null";
-	 }else{ 
-	tempsql<<std::to_string(insert_data[i].id);
-	}
-	if(insert_data[i].randomnumber==0){
-	tempsql<<",0";
-	 }else{ 
-	tempsql<<","<<std::to_string(insert_data[i].randomnumber);
-	}
-		tempsql<<")";
-	 } 
-
-     
-       return tempsql.str();
-   } 
-       
-    std::string _makeupdatesql(const std::string &fileld){
-       //int j=0;
-            std::ostringstream tempsql;
-                 tempsql<<"UPDATE ";
-                 tempsql<<tablename;
-                 tempsql<<" SET ";
-
-            bool isall=false;
-            if(fileld.empty()){
-                isall=true;
-            }
-            if(isall){
-
-        if(data.id==0){
-	tempsql<<"`id`=0";
- }else{ 
-	tempsql<<"`id`="<<std::to_string(data.id);
-}
-if(data.randomnumber==0){
-	tempsql<<",`randomnumber`=0";
- }else{ 
-	tempsql<<",`randomnumber`="<<std::to_string(data.randomnumber);
-}
- }else{ 
-
-     
-  unsigned int jj=0;
-                  std::string keyname;
-                  std::vector<unsigned char> keypos;
-                  for(;jj<fileld.size();jj++){
-                        if(fileld[jj]==','){
-                                unsigned char bpos_i=findcolpos(keyname);
-                               keypos.emplace_back(bpos_i); 
-#ifdef DEBUG
-                    if (bpos_i == 254)
-                    {
-                        std::cout << "\033[1m\033[31m-----------\n"
-                                  << keyname << " not in " << tablename << " table Field.\n-----------\033[0m"
-                                  << std::endl;
-                    }
-#endif                               
-                               keyname.clear();
-                             continue;   
-                        }
-                        if(fileld[jj]==0x20){
-
-                             continue;   
-                        }
-                        keyname.push_back(fileld[jj]);
-
-                  }  
-                 if(keyname.size()>0){
-                                unsigned char bpos_i=findcolpos(keyname);
- #ifdef DEBUG
-                    if (bpos_i == 254)
-                    {
-                        std::cout << "\033[1m\033[31m-----------\n"
-                                  << keyname << " not in " << tablename << " table Field.\n-----------\033[0m"
-                                  << std::endl;
-                    }
-#endif                                       
-                                keypos.emplace_back(bpos_i); 
-                                keyname.clear();
-                 }
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(data.id==0){
-	tempsql<<"`id`=0";
- }else{ 
-	tempsql<<"`id`="<<std::to_string(data.id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-if(data.randomnumber==0){
-	tempsql<<"`randomnumber`=0";
- }else{ 
-	tempsql<<"`randomnumber`="<<std::to_string(data.randomnumber);
-}
- break;
-
-     
-                  default:
-                                ;
-                     }
-                 }   
-
-            }        
-
-        return tempsql.str();
-   } 
-   
-   std::vector<std::string> data_toarray(std::string fileld=""){
-        std::vector<std::string> temparray;
-        std::string keyname;
-        unsigned char jj=0;
-        std::vector<unsigned char> keypos;
-        if(fileld.size()>1){
-            for(;jj<fileld.size();jj++){
-                    if(fileld[jj]==','){
-                        keypos.emplace_back(findcolpos(keyname)); 
-                        keyname.clear();
-                        continue;   
-                    }
-                    if(fileld[jj]==0x20){
-
-                        continue;   
-                    }
-                    keyname.push_back(fileld[jj]);
-
-            }  
-            if(keyname.size()>0){
-                            keypos.emplace_back(findcolpos(keyname)); 
-                            keyname.clear();
-            }
-        }else{
-            for(jj=0;jj<colnames.size();jj++){
-                keypos.emplace_back(jj); 
-            }
-        }
-               
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
-if(data.id==0){
-	temparray.push_back("0");
- }else{ 
-	temparray.push_back(std::to_string(data.id));
-}
- break;
- case 1:
-if(data.randomnumber==0){
-	temparray.push_back("0");
- }else{ 
-	temparray.push_back(std::to_string(data.randomnumber));
-}
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-   
-     return temparray;             
-   }   
-   
-   std::map<std::string,std::string> data_tomap(std::string fileld=""){
-       std::map<std::string,std::string> tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>1){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
-if(data.id==0){
-	tempsql.insert({"id","0"});
- }else{ 
-	tempsql.insert({"id",std::to_string(data.id)});
-}
- break;
- case 1:
-if(data.randomnumber==0){
-	tempsql.insert({"randomnumber","0"});
- }else{ 
-	tempsql.insert({"randomnumber",std::to_string(data.randomnumber)});
-}
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-    
-     return tempsql;             
-   }   
-   
-   std::string data_tojson(){
-       std::ostringstream tempsql;
-
-        tempsql<<"{";
-if(data.id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(data.id);
-}
-if(data.randomnumber==0){
-	tempsql<<",\"randomnumber\":0";
- }else{ 
-	tempsql<<",\"randomnumber\":"<<std::to_string(data.randomnumber);
-}
-tempsql<<"}";
-
-     
-     return tempsql.str();             
-   }   
-   
-   std::string data_tojson(std::string fileld){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                 tempsql<<"{";
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(data.id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(data.id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-if(data.randomnumber==0){
-	tempsql<<"\"randomnumber\":0";
- }else{ 
-	tempsql<<"\"randomnumber\":"<<std::to_string(data.randomnumber);
-}
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-     return tempsql.str();             
-   }   
-   
-    void from_json(const std::string &json_content)
-   {
-        record.clear();
-        worldbase::meta metatemp; 
-        data=metatemp;
-        unsigned int json_offset=0;
-        bool isarray=false;
-        //std::vector<std::string> list_content;
-        for(;json_offset<json_content.size();json_offset++)
-        {
-            if(json_content[json_offset]=='{')
-            {
-                break;
-            }
-            if(json_content[json_offset]=='[')
-            {
-                isarray=true;
-                break;
-            }
-        }
-        if(isarray)
-        {
-            json_offset+=1; 
-            std::string json_key_name,json_value_name; 
-            for(;json_offset<json_content.size();json_offset++)
-            {
-                for(;json_offset<json_content.size();json_offset++)
-                {
-                    if(json_content[json_offset]=='{')
-                    {
-                        json_offset+=1;
-                        break;
-                    }
-                }
-                if(record.size()>0)
-                {
-                    data=metatemp;
-                }
-                if(json_offset>=json_content.size())
-                {
-                    break;
-                }
-                for(;json_offset<json_content.size();json_offset++)
-                {
-    
-                            if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                            {
-                                continue;
-                            }
-                            else
-                            {
-                                if(json_content[json_offset]==0x22)
-                                {
-                                    unsigned int temp_offset=json_offset;
-                                    json_key_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                    json_offset=temp_offset;
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        json_offset+=1;
-                                    }
-                                    for(;json_offset<json_content.size();json_offset++)
-                                    {
-                                    
-                                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                        {
-                                            continue;
-                                        }
-                                        break;
-                                    }       
-                                    if(json_content[json_offset]!=':')
-                                    {
-                                        break;
-                                    }
-                                    for(;json_offset<json_content.size();json_offset++)
-                                    {
-                                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                        {
-                                            continue;
-                                        }
-                                        break;
-                                    } 
-                                    json_offset+=1;
-                                    if(json_offset>=json_content.size())
-                                    {
-                                        break;
-                                    }
-                                    json_value_name.clear();
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        
-                                        temp_offset=json_offset;
-                                        json_value_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                        json_offset=temp_offset;
-                                        if(json_content[json_offset]==0x22)
-                                        {
-                                            json_offset+=1;
-                                        }
-                                    }
-                                    else
-                                    {
-                                        if(json_content[json_offset]!='{'&&json_content[json_offset]!=']')
-                                        {
-                                            for(;json_offset<json_content.size();json_offset++)
-                                            {
-                                                if(json_content[json_offset]==0x5D||json_content[json_offset]==0x7D||json_content[json_offset]==0x22||json_content[json_offset]==0x2C||json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                                {
-                                                    if(json_content[json_offset]==0x7D)
-                                                    {
-                                                        json_offset-=1;
-                                                    } 
-                                                    break;
-                                                }
-                                                json_value_name.push_back(json_content[json_offset]);
-                                            }   
-                                        }
-                                    }
-                                    //////////////////////////
-                                    set_val(json_key_name,json_value_name);
-                                    continue;
-                                }
-                                else
-                                {
-                                    break;
-                                }
-                            }
-    
-                }
-                record.emplace_back(data);
-                
-                json_offset+=1;
-            }
-            if(record.size()>1)
-            {
-                data=record[0];
-            }
-        }
-        else
-        {
-           if(json_content[json_offset]=='{')
-            {
-                json_offset+=1; 
-                std::string json_key_name,json_value_name; 
-                 
-                
-                for(;json_offset<json_content.size();json_offset++)
-                {
- 
-                        if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                        {
-                            continue;
-                        }
-                        else
-                        {
-                            if(json_content[json_offset]==0x22)
-                            {
-                                 unsigned int temp_offset=json_offset;
-                                 json_key_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                 json_offset=temp_offset;
-                                 if(json_content[json_offset]==0x22)
-                                 {
-                                    json_offset+=1;
-                                 }
-                                for(;json_offset<json_content.size();json_offset++)
-                                {
-                                
-                                    if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                    {
-                                        continue;
-                                    }
-                                    break;
-                                }       
-                                if(json_content[json_offset]!=':')
-                                {
-                                    break;
-                                }
-                                for(;json_offset<json_content.size();json_offset++)
-                                {
-                                    if(json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                    {
-                                        continue;
-                                    }
-                                    break;
-                                } 
-                                json_offset+=1;
-                                if(json_offset>=json_content.size())
-                                {
-                                    break;
-                                }
-                                json_value_name.clear();
-                                if(json_content[json_offset]==0x22)
-                                {
-                                    
-                                    temp_offset=json_offset;
-                                    json_value_name=http::jsonstring_to_utf8(&json_content[json_offset],json_content.size()-json_offset,temp_offset);
-                                    json_offset=temp_offset;
-                                    if(json_content[json_offset]==0x22)
-                                    {
-                                        json_offset+=1;
-                                    }
-                                }
-                                else
-                                {
-                                    if(json_content[json_offset]!='{'&&json_content[json_offset]!=']')
-                                    {
-                                        for(;json_offset<json_content.size();json_offset++)
-                                        {
-                                            if(json_content[json_offset]==0x5D||json_content[json_offset]==0x7D||json_content[json_offset]==0x22||json_content[json_offset]==0x2C||json_content[json_offset]==0x20||json_content[json_offset]==0x0A||json_content[json_offset]==0x0D||json_content[json_offset]=='\t')
-                                            {
-                                               if(json_content[json_offset]==0x7D)
-                                               {
-                                                   json_offset-=1;
-                                               } 
-                                               break;
-                                            }
-                                            json_value_name.push_back(json_content[json_offset]);
-                                        }   
-                                    }
-                                }
-                                //////////////////////////
-                                set_val(json_key_name,json_value_name);
-                                continue;
-                            }
-                            else
-                            {
-                                break;
-                            }
-                        }
- 
-                }
-                record.emplace_back(data);
-            } 
-        }
-   }   
-    
-    void set_val(const std::string& set_key_name,const std::string& set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=std::stoul(set_value_name);
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.randomnumber=std::stoi(set_value_name);
-		}catch (...) { 
-			data.randomnumber=0;
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-    void set_val(const std::string& set_key_name,const long long set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=set_value_name;
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.randomnumber=set_value_name;
-		}catch (...) { 
-			data.randomnumber=0;
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-    void set_val(const std::string& set_key_name,const double set_value_name)
-    {
-        switch(findcolpos(set_key_name))
-        {
-    		case 0:
-		 try{
-			data.id=(unsigned int)set_value_name;
-		}catch (...) { 
-			data.id=0;
-			 }
-			break;
-		case 1:
-		 try{
-			data.randomnumber=(int)set_value_name;
-		}catch (...) { 
-			data.randomnumber=0;
-			 }
-			break;
-	default:
-		 { }
-			
-
-
-        }
-   } 
-    
-   std::string to_json(std::string fileld=""){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                tempsql<<"[";
-              for(size_t n=0;n<record.size();n++){
-                  if(n>0){
-                      tempsql<<",{";
-                  }else{
-                      tempsql<<"{";
-                  }  
-                 
-                 for(jj=0;jj<keypos.size();jj++){
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(record[n].id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(record[n].id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-if(record[n].randomnumber==0){
-	tempsql<<"\"randomnumber\":0";
- }else{ 
-	tempsql<<"\"randomnumber\":"<<std::to_string(record[n].randomnumber);
-}
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-            }
-      tempsql<<"]";
-     return tempsql.str();             
-   }   
-   
-   std::string to_json(std::function<bool(std::string&,meta&)> func,std::string fileld=""){
-       std::ostringstream tempsql;
-            std::string keyname;
-            unsigned char jj=0;
-                  std::vector<unsigned char> keypos;
-                  if(fileld.size()>0){
-                    for(;jj<fileld.size();jj++){
-                            if(fileld[jj]==','){
-                                keypos.emplace_back(findcolpos(keyname)); 
-                                keyname.clear();
-                                continue;   
-                            }
-                            if(fileld[jj]==0x20){
-
-                                continue;   
-                            }
-                            keyname.push_back(fileld[jj]);
-
-                    }  
-                    if(keyname.size()>0){
-                                    keypos.emplace_back(findcolpos(keyname)); 
-                                    keyname.clear();
-                    }
-                 }else{
-                     for(jj=0;jj<colnames.size();jj++){
-                         keypos.emplace_back(jj); 
-                     }
-                 }
-                tempsql<<"[";
-              for(size_t n=0;n<record.size();n++){
-                 keyname.clear();
-                 if(func(keyname,record[n])){ 
-                            if(n>0){
-                                tempsql<<",{";
-                            }else{
-                                tempsql<<"{";
-                            } 
-                            tempsql<<keyname;
-                 }else{
-                    continue;
-                 } 
-                  
-                 for(jj=0;jj<keypos.size();jj++){
-                        
-                       switch(keypos[jj]){
-         case 0:
- if(jj>0){ tempsql<<","; } 
-if(record[n].id==0){
-	tempsql<<"\"id\":0";
- }else{ 
-	tempsql<<"\"id\":"<<std::to_string(record[n].id);
-}
- break;
- case 1:
- if(jj>0){ tempsql<<","; } 
-if(record[n].randomnumber==0){
-	tempsql<<"\"randomnumber\":0";
- }else{ 
-	tempsql<<"\"randomnumber\":"<<std::to_string(record[n].randomnumber);
-}
- break;
-
-                             default:
-                                ;
-                     }
-                 }   
-      tempsql<<"}";  
-            }
-      tempsql<<"]";
-     return tempsql.str();             
-   }   
-   long long getPK(){  return data.id; } 
- void setPK(long long val){  data.id=val;} 
-unsigned  int  getId(){  return data.id; } 
- void setId(unsigned  int  val){  data.id=val;} 
-
- int  getRandomnumber(){  return data.randomnumber; } 
- void setRandomnumber( int  val){  data.randomnumber=val;} 
-
-worldbase::meta getnewData(){
- 	 struct meta newdata;
-	 return newdata; 
-} 
-worldbase::meta getData(){
- 	 return data; 
-} 
-std::vector<worldbase::meta> getRecord(){
- 	 return record; 
-} 
-
-
-    template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		return nullptr; 
-	}
-
-
-    template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true>
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		 if(key_name=="id")
-		{
-			return data.id;
-		}
-		 if(key_name=="randomnumber")
-		{
-			return data.randomnumber;
-		}
-		return nullptr; 
-	}
-
-
-    template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true >
-    T& ref_meta([[maybe_unused]] std::string key_name)
-    {
-   		return nullptr; 
-	}
-
-            template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >  
-            std::vector<T> getCol([[maybe_unused]] std::string keyname)
-            {
-                std::vector<T> a;
-                
-   
-                unsigned char kpos;
-                kpos=findcolpos(keyname);               
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-   			case 0: 
- 				 a.emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a.emplace_back(iter.randomnumber);
-				 break;
-
-                    }
-                }
-    
-                return a;
-            }
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true >    
-			std::vector<T> getCol([[maybe_unused]] std::string keyname)
-			{
-				std::vector<T> a;
-				
-
-                return a;
-            }
-    
-            template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >   
-            T getVal([[maybe_unused]] std::string keyname)
-            {
-   
-                    unsigned char kpos;
-                    kpos=findcolpos(keyname);                   
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 return data.id;
-				 break;
-			case 1: 
- 				 return data.randomnumber;
-				 break;
-			}
-                return 0;
-            }  
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true > 
-        T getVal([[maybe_unused]] worldbase::meta & iter,[[maybe_unused]] std::string keyname)
-        {
-
-          
-            unsigned char kpos;
-            kpos=findcolpos(keyname);   
-            switch(kpos)
-            {
-   			case 0: 
- 				 return iter.id;
-				 break;
-			case 1: 
- 				 return iter.randomnumber;
-				 break;
-
-			}
-
-            return 0;
-        }  
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true > 
-            T getVal(std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-            
-                switch(kpos)
-                {
-
-    
-                    }
-                   
-    
-                    return 0.0;
-            }  
-    
-            template<typename T, typename std::enable_if<std::is_floating_point_v<T>,bool>::type = true > 
-            T getVal([[maybe_unused]] worldbase::meta & iter,std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-                switch(kpos)
-                {
-   
-                }
-                 
-    
-            
-                return 0.0;
-            }  
-    
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true > 
-            std::string getVal(std::string keyname)
-            {
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-        
-                switch(kpos)
-                {
-
-   
-                }
-                return "";
-            }  
-   
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true > 
-            std::string getVal([[maybe_unused]] worldbase::meta & iter,std::string keyname)
-            {
-         
-                unsigned char kpos;
-                kpos=findcolpos(keyname);
-       
-                switch(kpos)
-                {
-
-   
-                }
-                
-    
-                 
-                return "";
-            }  
-     
-            template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >   
-            std::vector<std::string> getCol([[maybe_unused]] std::string keyname)
-            {
-                std::vector<std::string> a;
-
-           
-
-        return a;
-    }
-     
-        std::string getstrCol(std::string keyname,[[maybe_unused]] bool isyinhao=false)
-        {
-            std::ostringstream a;
-    
-            unsigned char kpos;
-            kpos=findcolpos(keyname);   
-            int j=0;
-            if(isyinhao&&record.size()>0)
-            {
-                a<<'"';
-            }
-            for(auto &iter:record)
-            {
-                    if(j>0)
-                    {
-                        if(isyinhao)
-                        {
-                            a<<"\",\"";
-                        }else{
-                            a<<',';    
-                        }
-                    }
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 a<<std::to_string(iter.id);
-				 break;
-			case 1: 
- 				 a<<std::to_string(iter.randomnumber);
-				 break;
-
-                    }
-                    j++;
-            } 
-            if(isyinhao&&j>0){
-                a<<'"';
-            }      
-    
-                return a.str();
-        }
-    
-    template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>     
-    std::map<std::string,std::string> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-    {
-        std::map<std::string,std::string> a;
-         
-            return a;
-        } 
-    
-
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<std::string,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::map<std::string,U> a;
-         
-            return a;
-        } 
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>       
-        std::map<T,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,U> a;
-       
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);        
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
- 
-       case 0: 
- 	 ktemp=iter.id;
-	 break;
-case 1: 
- 	 ktemp=iter.randomnumber;
-	 break;
-	 } 
- 		  switch(vpos){
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-     
-        return a;
-    }  
-            template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>      
-            std::map<T,std::string> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-            {
-                std::map<T,std::string> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);         
-                T ktemp;
-                std::string vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
- 			switch(vpos){
-
-                    }
-                    if(ktemp.size()>0)
-                    {
-                        a.emplace(ktemp,vtemp);
-                    }
-                } 
-         
-                return a;
-            }     
-        
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>       
-        std::map<std::string,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<std::string,U> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            std::string  ktemp;
-            U  vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			  }
- 			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-      
-        return a;
-    }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>   
-        std::map<T,U> getCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,U> a;
-    
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
- 			switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-
-                }
-                if(ktemp.size()>0)
-                {
-                    a.emplace(ktemp,vtemp);
-                }
-            }       
-    
-            return a;
-        }   
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >         
-        std::map<T,meta> getmapRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,meta> a;
-    
-            unsigned char kpos;
-            kpos=findcolpos(keyname);                        
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 a.emplace(iter.id,iter);
-				 break;
-			case 1: 
- 				 a.emplace(iter.randomnumber,iter);
-				 break;
-
-                }
-            }       
-     
-            return a;
-        }     
-    
-        template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >    
-        std::map<std::string,meta> getmapRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<std::string,meta> a;
-
-    
-
-        return a;
-    }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>  
-        std::vector<std::pair<std::string,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::vector<std::pair<std::string,U>> a;
-   
-
-            return a;
-        }   
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-			 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-			 break;
-			  }
-			 switch(vpos){
-
-                   }
-
-                   a.emplace_back(ktemp,vtemp);
-                }       
-
-    
-
-            return a;
-        }   
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
- 			switch(vpos){
-
-                   }
-
-                    a.emplace_back(ktemp,vtemp);
-                }       
-    
-            return a;
-        }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>     
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);                
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    
-                    switch(kpos)
-                    {
-
-   			  }
- 			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-
-                   }
-                    a.emplace_back(ktemp,vtemp);
-                }       
-    
-            return a;
-        }  
-    
-        template<typename T,typename U, typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-                unsigned char kpos,vpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                T ktemp;
-                U vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-
-                   }
-                    a.emplace_back(ktemp,vtemp);
-                }       
-      
-            return a;
-        }   
-    
-        template<typename T,typename U, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>     
-        std::vector<std::pair<T,U>> getvecCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-                std::vector<std::pair<T,U>> a;
-   
-            return a;
-        }  
-    
-        template<typename T, typename std::enable_if<std::is_integral_v<T>,bool>::type = true >   
-        std::vector<std::pair<T,meta>> getvecRows([[maybe_unused]] std::string keyname)
-        {
-            std::vector<std::pair<T,meta>> a;
-     
-            unsigned char kpos;
-            kpos=findcolpos(keyname);                  
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   case 0: 
- 	 a.emplace_back(iter.id,iter);
-	 break;
-case 1: 
- 	 a.emplace_back(iter.randomnumber,iter);
-	 break;
-
-                }
-            }       
-    
-        return a;
-    }
-        template<typename T, typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true >  
-        std::vector<std::pair<std::string,meta>> getvecRows([[maybe_unused]] std::string keyname)
-        {
-            std::vector<std::pair<std::string,meta>> a;
-      
-
-        return a;
-    }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-    
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);      
-            T ktemp;
-            U vtemp;
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-    
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);          
-            T ktemp;
-            U vtemp;
-            //D vtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.randomnumber);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);       
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-				  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(dpos){
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-                std::map<T,std::map<U,std::vector<D>>> a;
-   
-                unsigned char kpos,vpos,dpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                dpos=findcolpos(dataname);
-                T ktemp;
-                U vtemp;
-            // D dtemp;
-
-                for(auto &iter:record)
-                {
-                    
-                    switch(kpos)
-                    {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(vpos){
-			  }
-
-			 switch(dpos){
-
-                   }
-                }       
-    
-            return a;
-        }
-    
-    template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-    std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-    {
-        std::map<T,std::map<U,std::vector<D>>> a;
-
-   
-        unsigned char kpos,vpos,dpos;
-        kpos=findcolpos(keyname);
-        vpos=findcolpos(valname);
-        dpos=findcolpos(dataname);             
-        T ktemp;
-        U vtemp;
-       // D dtemp;
-
-         for(auto &iter:record)
-         {
-            switch(kpos)
-            {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(vpos){
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.randomnumber);
-				 break;
-
-            }
-         }       
-    
-        return a;
-    }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            { 
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(vpos){
-			  }
-
-			 switch(dpos){
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-                std::map<T,std::map<U,std::vector<D>>> a;
-   
-                unsigned char kpos,vpos,dpos;
-                kpos=findcolpos(keyname);
-                vpos=findcolpos(valname);
-                dpos=findcolpos(dataname);               
-                T ktemp;
-                U vtemp;
-                //D vtemp;
-                for(auto &iter:record)
-                {
-                    switch(kpos)
-                    {
-
-   			 }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(dpos){
-
-                    }
-                }       
-    
-
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);            
-            T ktemp;
-            U vtemp;
-            //D vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			  }
-
-			 switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.randomnumber);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-    template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-    std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-    {
-        std::map<T,std::map<U,std::vector<D>>> a;
-
-   
-        unsigned char kpos,vpos,dpos;
-        kpos=findcolpos(keyname);
-        vpos=findcolpos(valname);
-        dpos=findcolpos(dataname);
-        T ktemp;
-        U vtemp;
-        // D dtemp;
-
-         for(auto &iter:record)
-         {
-             
-            switch(kpos)
-            {
-
-   			 }
-
-			switch(vpos){
-			case 0: 
- 				 vtemp=iter.id;
-				 break;
-			case 1: 
- 				 vtemp=iter.randomnumber;
-				 break;
-			 }
-
-			switch(dpos){
-
-            }
-         }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_floating_point<D>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            return a;
-        }
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_integral_v<D>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            unsigned char kpos,vpos,dpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            dpos=findcolpos(dataname);
-            T ktemp;
-            U vtemp;
-            // D dtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			  }
-
-			 switch(vpos){
-			 }
-
-			 switch(dpos){
-			case 0: 
- 				 a[ktemp][vtemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp][vtemp].emplace_back(iter.randomnumber);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<D,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<D>>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname,[[maybe_unused]] std::string dataname)
-        {
-            std::map<T,std::map<U,std::vector<D>>> a;
-   
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-
-   
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			  }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp].emplace_back(iter.randomnumber);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(vpos){
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_floating_point<U>::value,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-               
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(vpos){
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::vector<U>> getgroupCols([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::vector<U>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);
-            T ktemp;
-            //U vtemp;
-
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp].emplace_back(iter.id);
-				 break;
-			case 1: 
- 				 a[ktemp].emplace_back(iter.randomnumber);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename std::enable_if<std::is_integral_v<T>,bool>::type = true>    
-        std::map<T,std::vector<meta>> getgroupRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,std::vector<meta>> a;
-   
-            unsigned char kpos;
-            kpos=findcolpos(keyname);
-
-            for(auto &iter:record)
-            {
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 a[iter.id].emplace_back(iter);
-				 break;
-			case 1: 
- 				 a[iter.randomnumber].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true>    
-        std::map<T,std::vector<meta>> getgroupRows([[maybe_unused]] std::string keyname)
-        {
-            std::map<T,std::vector<meta>> a;
-   
-            return a;
-        }
-    
-        template<typename T,typename U,typename D,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true, typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_same<T,std::string>::value,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   	  }
-
- switch(vpos){
-			case 0: 
- 				 a[ktemp][iter.id].emplace_back(iter);
-				 break;
-			case 1: 
- 				 a[ktemp][iter.randomnumber].emplace_back(iter);
-				 break;
-
-                }
-            }       
-
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<U>,bool>::type = true,typename std::enable_if<std::is_integral_v<U>,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);        
-        T ktemp;
-        
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			 }
-
-			 switch(vpos){
-			case 0: 
- 				 a[ktemp][iter.id].emplace_back(iter);
-				 break;
-			case 1: 
- 				 a[ktemp][iter.randomnumber].emplace_back(iter);
-				 break;
-
-                }
-            }       
-    
-            return a;
-        }
-    
-        template<typename T,typename U,typename std::enable_if<std::is_integral_v<T>,bool>::type = true,typename std::enable_if<std::is_same<U,std::string>::value,bool>::type = true>    
-        std::map<T,std::map<U,std::vector<meta>>> getgroupRows([[maybe_unused]] std::string keyname,[[maybe_unused]] std::string valname)
-        {
-            std::map<T,std::map<U,std::vector<meta>>> a;
-
-   
-            unsigned char kpos,vpos;
-            kpos=findcolpos(keyname);
-            vpos=findcolpos(valname);            
-            T ktemp;
-            
-            for(auto &iter:record)
-            {
-                
-                switch(kpos)
-                {
-
-   			case 0: 
- 				 ktemp=iter.id;
-				 break;
-			case 1: 
- 				 ktemp=iter.randomnumber;
-				 break;
-			  }
-
-			 switch(vpos){
-
-                }
-            }       
-    
-            return a;
-        }
-    
-  };
-    
-
-}
-#endif
-   

+ 0 - 4
frameworks/C++/paozhu/paozhu_benchmark/orm/orm.h

@@ -1,4 +0,0 @@
-/*build this file time Tue, 20 Dec 2022 11:40:56 GMT*/
-
-#include "Fortune.h"
-#include "World.h"

+ 0 - 126
frameworks/C++/paozhu/paozhu_benchmark/test/testbenchmark.cpp

@@ -1,126 +0,0 @@
-#include <string>
-#include <iostream>
-#include <thread>
-#include <chrono>
-#include <filesystem>
-#include "server.h"
-
-static sigjmp_buf env_startacs;
-static void sig_child(int signo);
-namespace fs = std::filesystem;
-int main(int argc, char *argv[])
-{
-    std::string argv_str;
-    if (argc > 1)
-    {
-        // server.conf filepath or confpath
-        argv_str.append(argv[1]);
-        fs::path conf_path = argv_str;
-        if (fs::is_regular_file(conf_path))
-        {
-        }
-        else
-        {
-            if (argv_str.back() == '/')
-            {
-                argv_str = argv_str + "server.conf";
-            }
-            else
-            {
-                argv_str = argv_str + "/server.conf";
-            }
-            conf_path = argv_str;
-            if (fs::is_regular_file(conf_path))
-            {
-            }
-            else
-            {
-                std::cout << "Not found server.conf file.";
-                return 0;
-            }
-        }
-    }
-    else
-    {
-
-        fs::path conf_path = fs::current_path();
-        argv_str           = conf_path.string() + "/conf/server.conf";
-        conf_path          = argv_str;
-        if (fs::is_regular_file(conf_path))
-        {
-        }
-        else
-        {
-            argv_str  = "/usr/local/etc/paozhu/server.conf";
-            conf_path = argv_str;
-            if (fs::is_regular_file(conf_path))
-            {
-            }
-            else
-            {
-                std::cout << "Not found server.conf file. Please copy conf Directory rename to /usr/local/etc/paozhu\n";
-                return 0;
-            }
-        }
-    }
-
-    pid_t pid;//, subpid = 0;
-    signal(SIGCHLD, sig_child);
-    if (sigsetjmp(env_startacs, 1) == 0)// 设置记号
-    {
-        printf("setjmp ok.....\n");
-    }
-    else
-    {
-        printf("longjmp ok.....\n");
-    }
-
-    pid = fork();
-    printf("fork id %d \n", pid);
-    if (pid < 0)
-    {
-        perror("fork error:");
-        exit(1);
-    }
-    else if (pid == 0)
-    {
-
-        try
-        {
-            http::httpserver &httpmy = http::get_server_app();
-            httpmy.run(argv_str);
-        }
-        catch (std::exception &e)
-        {
-            std::printf("Exception: %s\n", e.what());
-        }
-        exit(0);
-    }
-    else
-    {
-
-        while (1)
-        {
-            std::this_thread::sleep_for(std::chrono::seconds(10));
-            //Future features are added here
-        }
-        return 0;
-    }
-}
-static void sig_child(int signo)
-{
-    /*pid_t */ int pid;
-    int stat;
-    // 处理僵尸进程
-
-    switch (signo)
-    {
-    case SIGCHLD:
-
-        pid = wait(&stat);
-        printf("SIGCHLD...farter id %d..%d\n", getpid(), pid);
-        siglongjmp(env_startacs, 1);// jump setjmp begin
-        break;
-    }
-    exit(0);
-}