aboutsummaryrefslogtreecommitdiff
path: root/src/guff/results.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/guff/results.cr')
-rw-r--r--src/guff/results.cr34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/guff/results.cr b/src/guff/results.cr
new file mode 100644
index 0000000..0dbc351
--- /dev/null
+++ b/src/guff/results.cr
@@ -0,0 +1,34 @@
+module Guff
+ class Results(R)
+ getter :page
+ getter :limit
+ getter :num_rows
+ getter :rows
+
+ def initialize(
+ @page = 1 : Int32,
+ @limit = 1 : Int32,
+ @num_rows = 0 : Int32,
+ @rows = [] of R : Array(R),
+ )
+ end
+
+ def to_json
+ {
+ meta: {
+ page: @page,
+ limit: @limit,
+ num_pages: (@num_rows / @limit).ceil,
+ num_rows: @num_rows,
+ },
+
+ rows: @rows.map { |row|
+ row.reduce({} of String => String) do |r, k, v|
+ r[k] = v.to_s
+ r
+ end
+ },
+ }.to_json
+ end
+ end
+end