定义文件语法

安装包下载

定义文件由几个部分组成,
定义头信息classmap,表示是一个定义文件开始,
代码辅助定义,定义生成代码相关一些路径,基类名称等
错误代码定义,定义接口请求中要返回的各种错误代码信息
服务相关参数定义,定义生成的C++服务程序的各种参数,比如开启端口,配置文件名等
类映射定义,定义对类中的一些设置,字段列表,说明等
类属性映射定义,定义生成的类代码属性和http请求字段,json字段,数据表字段之间的关系
接口方法定义,对接口做定义,描述接口的参数列表,参数值验证规则,处理逻辑的代码函数名等

一个简单的例子

classmap MyAccountItem MyAccount {
[
  target_path    : ".\auto" ;
  logic_path    : ".\logic" ;
  class_mgr      : CSMyAccountMgr ;
  class_mgr_split : "";
  class_http_mgr : CSMyAccountHttpMgr ;
  class_logic    : CSMyAccountLogic ;
  class_validator: CSHttpFormValidator minLen,maxLen ;


  table_baseprefix : "";

  //class_dac : CSMySQLDac;
  //class_dacmgr : CSMySQLDacMgr;

  //class_filter : CSFilter filterXXX;
  //class_fieldsfilter: CSFieldsFilter filterXXX;

  check_filter   : 1 ;
  check_validator: 1 ;
  check_auth     : 0 ;

  error_retmethod: withdata;
  error_noparam  : 90002 ;
  error_db       : 90001 ;
  error_invalidreq: 90019999;
  error_unknown  : 99999;

  fun_jsonstr    : strToJsonStr;
  use_jsoncpp    : 0 ;
  parse_json     : 0;
  to_json        : 1 ;
  gen_preto      : 0;

  parse_xml      : 0;
  to_xml         : 0;

  dispatch_method: uri ;
  dispatch_methodfield: method ;

  field_filter   : 0;
  uri_filter     : 0;
  data_crypt     : 0;
  
  db_select      : 0;
  db_tablefix    : 0;
  
  mgr_getinaction : 0;
  mgr_logicneedhttp: 0;


  uri_head       : "1.0";
  field_fields   : _fields ;
  field_orderby  : _orderby ;
  field_page     : _page ;
  field_pagesize : _pagesize ;

  status_deleted : -2 ;

  app_info       : [
    service_name  : "MyAccount";
    service_port  : "12800";
    service_platform: "linux";
    net_framework : libevent;
    file_cfg   : "/etc/myaccount.ini";
    file_pid   : "/var/run/myaccount.pid";

    cron_enable       : 0;
    cachelist_enable  : 0;
    checktable_enable : 0;

    cmd_limitips  : "127.0.0.1";
    status_enable : 0;
    unload_enable : 1;

    wadl_enable  : 1;
    http_disable : 0;
    db_disable   : 0;

    log_enable   : 1;
    log_file     : "myaccount";
    log_path     : "/var/log/myserv";

    run_user   : root;
    run_group  : root;

    max_threads: 10;
    max_conns  : 1000;

    bits       : 64;
    db_server  : "127.0.0.1";
    db_port    : "3306";
    db_username: "root";
    db_userpwd : "";
    db_name    : "test";
    db_poolcount: "10";
  ];

  sql_connection: "server=127.0.0.1,port=3306,username=root,password=,database=test" ;

  error_codes_ext: [
    sql_conn      : "server=192.168.1.235,username=svr_test01,password=svr_test01,database=svr_help";

    // 数据库连接信息
    sql_query     : "select `name` as codename, `value` as code,`message` as codedesc, httpstatus  from api_errorcodes";

    // 查询的sql,要有codename,code,codedesc三个字段返回
    file_name     : "";

    // 错误代码定义文件完整路径
    file_type     : csv;// csv,xls or mysql
    skip_line     : 1; // ingore lines
    col_name      : 3;
    col_code      : 4;
    col_desc      : 5;
    col_httpcode  : 6;
    col_httpstatus: 7;
    code_heads: "100,900";
    // 错误代码定义前缀,逗号分隔,可以过滤需要的地代码
  ]

  error_codes  : [
    'API_ERR_NAME_MINLEN'                    => array(10001, "帐号名长度小于最小值"),
    'API_ERR_NAME_MAXLEN'                    => array(20002, "账号名长度大于最大值"),
    'API_ERR_ID_EMPTY'                       => array(31001, "id字段为空"),
    'API_ERR_NODATA'                         => array(21404, "没有数据"),
    'API_DB_ERR'                             => array(90001, "数据库操作错误"),
    'API_NOPARAM'                            => array(90002, "没有参数值"),
    'API_UNKNOW'                             => array(99999, "未知错误"),
  ];

]

MyAccountItem : tb_myaccount {
[
  fields_checker : "name=minLen:4=10001|maxLen:16=20002" ;
  fields_list  : "id,name,pass,status,createtime,lastoperate" ;
  fields_create: "name" ;
  fields_update: "name" ;

  field_id     : "id=31001,21404" ;
  field_idauto : 1 ;  // 标志id字段是否是自增字段,影响Insert插入数据语句

  http_method  : "myapp.account"
    C : "create" [ ("create") ]
    U : "update" [ ("update") ]
    R : "get"    [ ("get") ]
    L : "list"   [ ("list") ]
    U : "forbiden" [ ("forbiden")
      update_fields  : "status=1"
    ]

    R : "getbyname" [ ("getbyname")
      fields_cond    : "name"
    ]

    O : "login"  [ ("login")
      logic          : Login,
      fields_param   : "name,pass"
    ] ;
]

  // 类属性名       [JSON字段名]     (HTTP参数名)     ,表字段名         :字段类型  (IDX类型)
  id              [id]            (id)            ,id             :int            (id);
  ("帐号名")
  name            [name]          (name)          ,name           :string         (key); 
  ("帐号密码")
  pass            [pass]          (pass)          ,pass           :string         ;
  ("帐号状态")
  status          [status]        (status)        ,status         :int            ;
  createtime      [createtime]    (createtime)    ,createtime     :idate          ;
  lastoperate     [lastoperate]   (lastoperate)   ,lastoperate    :idate          ;
}

安装包下载