defmodule Odoo.Result do
@moduledoc """
Structure to contain result data from odoo and helpers
"""
alias __MODULE__
defstruct [
:data,
:model,
:opts
]
@doc false
def new, do: %Result{}
@doc """
Using offset and limit, return a new set of options to operate over next results page
"""
def next(opts) do
limit = Keyword.get(opts, :limit, 0)
offset = Keyword.get(opts, :offset, 0)
opts
|> Keyword.put(:offset, offset + limit)
end
@doc """
Return previous page (offset - limit)
"""
def prev(opts) do
limit = Keyword.get(opts, :limit, 0)
offset = Keyword.get(opts, :offset, 0)
new_offset =
if offset - limit < 0 do
0
else
offset - limit
end
opts
|> Keyword.put(:offset, new_offset)
end
end