Commit 724c1cbe05051e44f65ec67325a08926692561b1
1 parent
0f29247c
add to readme; fix queryobject
Showing
3 changed files
with
101 additions
and
4 deletions
Show diff stats
README.md
... | ... | @@ -72,6 +72,103 @@ logged_off = Syspro::Logoff.logoff(guid) |
72 | 72 | ``` |
73 | 73 | `logged_off` will be `true` if the user has been successfully logged off, and will contain an error string if an error has occured. |
74 | 74 | |
75 | +### Query | |
76 | + | |
77 | +#### Browse | |
78 | +Browse returns a paginated view of a particular table. | |
79 | + | |
80 | +This is an example using the generic Browse Business Object, `COMBRW`. | |
81 | +```rb | |
82 | +combrw = Syspro::BusinessObject::ComBrw.new | |
83 | +combrw.browse_name = "InvMaster" | |
84 | +combrw.start_condition = "" | |
85 | +combrw.return_rows = 5 | |
86 | +combrw.filters = [] | |
87 | +combrw.table_name = "InvMaster" | |
88 | +combrw.title = "StockCodes" | |
89 | +combrw.columns = [ | |
90 | + {name: "StockCode"} | |
91 | +] | |
92 | + | |
93 | +browse_result = combrw.call(user_id.guid) | |
94 | +``` | |
95 | + | |
96 | +`browse_result` will be a BrowseObject, which has the following structure: | |
97 | + | |
98 | +```rb | |
99 | +{ | |
100 | + title: "Title", | |
101 | + rows: [ { name: "", value: "", data_type: "" } ], | |
102 | + next_prev_key: { name: "", text: "" }, | |
103 | + header_details: { name: "", text: "" } | |
104 | +} | |
105 | +``` | |
106 | + | |
107 | +#### Query | |
108 | + | |
109 | +Query gives control over joins between multiple tables over a single Business Object. | |
110 | + | |
111 | +This is an example using the generic Query Business Object, `COMFND`. | |
112 | + | |
113 | +```rb | |
114 | +comfnd = Syspro::BusinessObjects::ComFnd.new | |
115 | +comfnd.table_name = "InvMaster" | |
116 | +comfnd.return_rows = 5 | |
117 | +comfnd.columns = [ | |
118 | + { | |
119 | + name: "StockCode" | |
120 | + } | |
121 | +] | |
122 | +comfnd.expressions = [ | |
123 | + { | |
124 | + andor: "And", | |
125 | + column: "StockCode", | |
126 | + condition: "EQ", | |
127 | + value: "02" | |
128 | + } | |
129 | +] | |
130 | +comfnd.order_by = "StockCode" | |
131 | + | |
132 | +query_result = comfnd.call(user_id.guid) | |
133 | +``` | |
134 | + | |
135 | +This will return a QueryObject, which looks like this: | |
136 | + | |
137 | +```rb | |
138 | +{ | |
139 | + header_details: { name: "", text: "" }, | |
140 | + rows: [ { name: "", value: "" } ], | |
141 | + row_count: 1 | |
142 | +} | |
143 | +``` | |
144 | + | |
145 | +#### Fetch | |
146 | + | |
147 | +Fetch selects the `TOP 1` of the query. | |
148 | + | |
149 | +This is an example using the generic Fetch Business Object, `COMFCH`. | |
150 | + | |
151 | +```rb | |
152 | +comfch = Syspro::BusinessObjects::ComFch.new | |
153 | +comfch.table_name = "InvMaster" | |
154 | +comfch.key = "02" | |
155 | +comfch.optional_keys = [] | |
156 | +comfch.full_key_provided = false | |
157 | +comfch.default_type = "" | |
158 | +comfch.espresso_fetch = true | |
159 | + | |
160 | +fetch_result = comfch.call(user_id.guid) | |
161 | +``` | |
162 | + | |
163 | +This will return a FetchObject, with the following structure: | |
164 | + | |
165 | +```rb | |
166 | +{ | |
167 | + table_name: "", | |
168 | + columns: [ { name: "", value: "" } ] | |
169 | +} | |
170 | +``` | |
171 | + | |
75 | 172 | ## Development |
76 | 173 | |
77 | 174 | After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. | ... | ... |
lib/syspro/business_objects/parsers/comfnd_parser.rb
... | ... | @@ -30,14 +30,14 @@ module Syspro |
30 | 30 | } |
31 | 31 | }.flatten(1).compact |
32 | 32 | |
33 | - FindObject.new( | |
33 | + QueryObject.new( | |
34 | 34 | header_details_obj, |
35 | 35 | rows_obj, |
36 | 36 | doc.first_element_child.xpath('//RowsReturned').text.to_i |
37 | 37 | ) |
38 | 38 | end |
39 | 39 | |
40 | - FindObject = Struct.new(:header_details, :rows, :row_count) | |
40 | + QueryObject = Struct.new(:header_details, :rows, :row_count) | |
41 | 41 | end |
42 | 42 | end |
43 | 43 | end | ... | ... |
test/query_test.rb
... | ... | @@ -41,9 +41,9 @@ class QueryTest < Minitest::Test |
41 | 41 | ] |
42 | 42 | comfnd.order_by = "StockCode" |
43 | 43 | |
44 | - find_result = comfnd.call(user_id.guid) | |
44 | + query_result = comfnd.call(user_id.guid) | |
45 | 45 | |
46 | - refute_nil find_result | |
46 | + refute_nil query_result | |
47 | 47 | end |
48 | 48 | |
49 | 49 | def test_query_fetch | ... | ... |