浏览代码

generate json serialization for sp dbo

tags/0.1.8^0
Robin Thoni 8 年前
父节点
当前提交
92e7bd82c6
共有 1 个文件被更改,包括 54 次插入4 次删除
  1. 54
    4
      src/Generator/sp.php.twig

+ 54
- 4
src/Generator/sp.php.twig 查看文件

@@ -7,13 +7,17 @@
7 7
 
8 8
 namespace {{ sp_namespace.as_it }};
9 9
 
10
-use Luticate\Utils\LuSpModel;
10
+use Luticate\Utils\LuSpDbo;
11 11
 use Luticate\Utils\LuMultipleDbo;
12 12
 use Luticate\Utils\LuStringUtils;
13 13
 use Illuminate\Support\Facades\DB;
14 14
 
15
-class {{ sp.sp_name.camel_upper }} extends LuSpModel {
15
+class {{ sp.sp_name.camel_upper }} extends LuSpDbo {
16 16
 
17
+    /**
18
+    * @param $dam
19
+    * @return \{{ sp_namespace.as_it }}\{{ sp.sp_name.camel_upper }}|null
20
+    */
17 21
     protected static function damToDbo($dam)
18 22
     {
19 23
         if (is_null($dam))
@@ -21,7 +25,7 @@ class {{ sp.sp_name.camel_upper }} extends LuSpModel {
21 25
         $dbo = new {{ sp.sp_name.camel_upper }}();
22 26
 
23 27
 {% for arg in args.out %}
24
-        $dbo->set{{ arg.name.camel_upper }}($dam->{{ arg.name.as_it }});
28
+        $dbo->set{{ arg.name.camel_upper }}(LuStringUtils::convertJsonString($dam->{{ arg.name.as_it }}));
25 29
 {% endfor %}
26 30
 
27 31
         return $dbo;
@@ -30,9 +34,15 @@ class {{ sp.sp_name.camel_upper }} extends LuSpModel {
30 34
 {% set spcall %}{{ sp.sp_name.as_it }}({% for arg in args.in %}:{{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %}){% endset %}
31 35
 {% set argsarray %}{% for arg in args.in %}":{{ arg.name.as_it }}" => ${{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %}{% endset %}
32 36
 
37
+    /**
38
+{% for arg in args.in %}
39
+    * @param ${{ arg.name.as_it }} {{ arg.data_type.php.as_it }}
40
+{% endfor %}
41
+    * @return \{{ sp_namespace.as_it }}\{{ sp.sp_name.camel_upper }}{% if sp.proretset %}[]{% endif %};
42
+    */
33 43
     public static function execute({% for arg in args.in %}${{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %})
34 44
     {
35
-        $values = DB::select('SELECT * FROM {{ spcall }}', array({{ argsarray }}));
45
+        $values = DB::select('SELECT {% for arg in args.out %}to_json(data.{{ arg.name.as_it }}) AS {{ arg.name.as_it }}{{ loop.last ? "" : ", " }}{% endfor %} FROM {{ spcall }} data', array({{ argsarray }}));
36 46
 {% if sp.proretset %}
37 47
         $dboValues = array();
38 48
         foreach ($values as $value)
@@ -44,6 +54,14 @@ class {{ sp.sp_name.camel_upper }} extends LuSpModel {
44 54
     }
45 55
 
46 56
 {% if sp.proretset %}
57
+    /**
58
+{% for arg in args.in %}
59
+    * @param ${{ arg.name.as_it }} {{ arg.data_type.php.as_it }}
60
+{% endfor %}
61
+    * @param $page int The page number, 0 based
62
+    * @param $perPage int The number of items per page
63
+    * @return \Luticate\Utils\LuMultipleDbo;
64
+    */
47 65
     public static function getMultipleJson({% for arg in args.in %}${{ arg.name.as_it }}, {% endfor %}$page, $perPage)
48 66
     {
49 67
         $values = DB::select('SELECT (SELECT count(*) FROM {{ spcall }}) as count, (SELECT json_agg(q) FROM (SELECT * FROM {{ spcall }} OFFSET (:page::int * :perPage::int) LIMIT :perPage) q) as data',
@@ -58,6 +76,38 @@ class {{ sp.sp_name.camel_upper }} extends LuSpModel {
58 76
     }
59 77
 {% endif %}
60 78
 
79
+    public function jsonSerialize()
80
+    {
81
+        return array(
82
+{% for arg in args.out %}
83
+            "{{ arg.name.camel_upper }}" => $this->_{{ arg.name.camel_lower }}{{ loop.last ? "" : "," }}
84
+{% endfor %}
85
+        );
86
+    }
87
+
88
+    public static function jsonDeserialize($json)
89
+    {
90
+        $dbo = new {{ sp.sp_name.camel_upper }}();
91
+{% for arg in args.out %}
92
+        if (isset($json["{{ arg.name.camel_upper }}"])) {
93
+            $dbo->set{{ arg.name.camel_upper }}($json["{{ arg.name.camel_upper }}"]);
94
+        }
95
+{% endfor %}
96
+        return $dbo;
97
+    }
98
+
99
+    public static function generateSample()
100
+    {
101
+        $dbo = new {{ sp.sp_name.camel_upper }}();
102
+{% for arg in args.out %}
103
+        $dbo->set{{ arg.name.camel_upper }}({% if arg.data_type.php.as_it == "double" %}42.42{%
104
+elseif arg.data_type.php.as_it == "integer" %}42{%
105
+elseif arg.data_type.php.as_it == "boolean" %}true{%
106
+else %}"sample string"{% endif %});
107
+{% endfor %}
108
+        return $dbo;
109
+    }
110
+
61 111
 {% for arg in args.out %}
62 112
 
63 113
     /**

正在加载...
取消
保存