ns_service_pack 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/History CHANGED
@@ -35,3 +35,9 @@
35
35
  * 修改方法名:
36
36
  生成mapping: ModelName.dump_mapping
37
37
  生成示例初始数据:ModelName.dump_new
38
+
39
+ #==0.0.8
40
+ * 支持更灵活的index查询方法
41
+ 直接提供子类的
42
+ get_page_data
43
+
data/README CHANGED
@@ -1,5 +1,23 @@
1
- ##==NS Service Pack使用指南
1
+ ##==README
2
+
3
+ Service层基础共享代码模式抽取
4
+
5
+ 功能列表:
6
+ * 支持自定义json格式的资源crud操作
7
+ * 提供全局字典常量/转换管理
8
+ * 提供数据库层-业务层字段自动转换
2
9
 
10
+ #==TODO TASK LIST
11
+ * 更好用的安装使用接口,自动完成,可配置
12
+ * rake 任务的引入, 产品模式将数据文件预编译成一个数据文件
13
+ * fieldmapping 和 常量管理的分离
14
+ 让使用者可以决定是否使用mapping,目前可以通过注释initializer中片段完成
15
+ * 用模板的方法生成initializer,以便插入一些动态数据
16
+ * 提供scaffold结构化方法,辅助开发
17
+ * application_controller_module的引入还是有问题!!!
18
+ * index默认查询条件加入,传入条件的merge(目前已提供传入条件的精确搜索)
19
+
20
+ ##==NS Service Pack使用指南
3
21
  *1 在rails3项目Gemfile中引入
4
22
  gem 'ns_service_pack'
5
23
 
@@ -10,10 +28,11 @@
10
28
  config/code_hashes/**/*.yml中数据会作为CodeHash加载
11
29
  可在控制台下用以下命令辅助生成:
12
30
  <ModelName>.dump_mapping
13
- 生成buz-db field_mapping, 可配置, --><app>/config/code_hashes
31
+ 生成buz-db field_mapping, 可配置, --><app>/config/code_hashes/fields/*.yml
32
+
33
+ <ModelName>.dump_new
34
+ 客户new该资源时的结构,--> <app>/data/*.yml
14
35
 
15
- <ModelName>.dump_init_hash
16
- 为远端客户端生成初始项hash结构,--> <app>/data/*.yml
17
36
  常量的使用:
18
37
  GlobalConst.ns_statuses[key_or_value]
19
38
 
@@ -25,6 +44,7 @@ class AddressesController < ApplicationController
25
44
  #引用的模型类,是ActiveRecord::Base子类
26
45
  end
27
46
 
47
+ #已提供默认条件查询
28
48
  def index
29
49
  #定义@conds实例变量,组织查询的条件,默认支持分页
30
50
  end
@@ -1,16 +1,27 @@
1
1
  #coding: utf-8
2
2
  module ApplicationControllerModule
3
3
  def index
4
- @conds ||= {}
5
- where_conds = if (params.key?(:not_default) || @conds.present?)
4
+ result = paginate(params) do |start, page_size|
5
+ get_page_data(start, page_size, params)
6
+ end
7
+ render :json=>ResultPacker.data(result.as_json)
8
+ end
9
+
10
+ #return [total_count, page_data]
11
+ #可在子类中覆盖定制
12
+ def get_page_data(start = 0, size = 10, params = {})
13
+ logger.debug "===================in module..."
14
+ where_conds = if @conds.present?
6
15
  @conds
7
16
  else
8
17
  query_conditionize(params, @conds)
9
18
  end
10
19
  logger.debug "====>conds: #{where_conds.inspect}"
11
-
12
- result = paginate(model_class, where_conds, params)
13
- render :json=>ResultPacker.data(result.as_json)
20
+ conds = {:conditions=>where_conds}
21
+ total_count = model_class.count(conds)
22
+ page_params = conds.merge!(:offset=>start, :limit=>page_size, :order=>params[:order])
23
+ model_class.all(page_params)
24
+ [total_count, page_data]
14
25
  end
15
26
 
16
27
  def query_conditionize(params = {}, conds = {})
@@ -20,31 +31,19 @@ module ApplicationControllerModule
20
31
  end
21
32
 
22
33
  #分页方法
23
- def paginate(base_class = nil, where_conds = {}, params = {})
24
- #raise "参数无效!" unless base_class.superclass == ActiveRecord::Base #TODO
25
-
26
- #计算page参数
27
- page_num = params[:current_page].to_i
28
- page_num = page_num < 1 ? 1 : page_num
34
+ def paginate(params = {})
35
+ current_page = params[:current_page].to_i
36
+ current_page = current_page < 1 ? 1 : current_page
29
37
  page_size = params[:page_size].to_i
30
38
  page_size = page_size <= 0 ? 10 : page_size
31
39
  page_size = page_size > 250 ? 250 : page_size
32
- offset = (page_num-1)*page_size
33
-
34
- #db 查询
35
- conds = {:conditions=>where_conds}
36
- total_count = base_class.count(conds)
37
- conds.merge!(:limit=>page_size,
38
- :offset=>offset,
39
- :order=>params[:order])
40
- new_conds = conds #yield conds
41
- #添加select子句 TODO
42
- page_data = base_class.all(new_conds)
43
-
40
+ offset = (current_page-1)*page_size
41
+ #返回总数和当前页数据 起始位置, 数量
42
+ total_count, page_data = yield(offset, page_size)
44
43
  {
45
44
  :total_size=>total_count,
46
45
  :page_size=>page_size,
47
- :current_page=>page_num,
46
+ :current_page=>current_page,
48
47
  :page_from=>offset + 1,
49
48
  :page_to=>offset + page_data.size,
50
49
  :page_items=>page_data
@@ -85,7 +84,6 @@ module ApplicationControllerModule
85
84
  #ABORTED NOW, keep here
86
85
  def query_fields
87
86
  data = model_class.buz_hashize
88
- #field_maps.keys.inject({}){|result, k| result[k]=nil; result}
89
87
  render :json=>ResultPacker.data(:fields=>data)
90
88
  end
91
89
 
@@ -1,3 +1,3 @@
1
1
  module NsServicePack
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ns_service_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2011-11-17 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
18
- requirement: &82958800 !ruby/object:Gem::Requirement
18
+ requirement: &78489940 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,7 +23,7 @@ dependencies:
23
23
  version: 3.1.0
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *82958800
26
+ version_requirements: *78489940
27
27
  description: Service package for our service lier
28
28
  email: cao7113@gmail.com
29
29
  executables: []