Skip to content

Commit 00df30e

Browse files
committed
Parse Story, StoryTransaction and CicleTimeDetails
1 parent e2b4d31 commit 00df30e

2 files changed

Lines changed: 48 additions & 3 deletions

File tree

lib/extracker/parser.ex

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,49 @@ defmodule ExTracker.Parser do
117117
def parse_label(object) do
118118
struct(ExTracker.Record.Label, object)
119119
end
120+
121+
@doc """
122+
Parse stories from the API response json.
123+
"""
124+
@spec parse_stories([Map.t] | nil) :: [ExTracker.Record.Story.t] | nil
125+
def parse_stories(nil), do: nil
126+
def parse_stories(object) do
127+
object |> Enum.map(&ExTracker.Parser.parse_story/1)
128+
%{ object | story_transactions: parse_story_transactions(object.story_transactions),
129+
cicle_time_details: parse_cicle_time_details(object.cicle_time_details)
130+
}
131+
end
132+
133+
@doc """
134+
Parse story from the API response json.
135+
"""
136+
@spec parse_story(Map.t) :: ExTracker.Record.Story.t
137+
def parse_story(object) do
138+
struct(ExTracker.Record.Story, object)
139+
end
140+
141+
@doc """
142+
Parse story transactions from the API response json.
143+
"""
144+
@spec parse_story_transactions([Map.t] | nil) :: [ExTracker.Record.StoryTransaction.t] | nil
145+
def parse_story_transactions(nil), do: nil
146+
def parse_story_transactions(object) do
147+
object |> Enum.map(&ExTracker.Parser.parse_story_transaction/1)
148+
end
149+
150+
@doc """
151+
Parse story transactions from the API response json.
152+
"""
153+
@spec parse_story_transaction(Map.t) :: ExTracker.Record.StoryTransaction.t
154+
def parse_story_transaction(object) do
155+
struct(ExTracker.Record.StoryTransaction, object)
156+
end
157+
158+
@doc """
159+
Parse cicle time details from the API response json.
160+
"""
161+
@spec parse_cicle_time_details(Map.t) :: ExTracker.Record.CicleTimeDetails.t
162+
def parse_cicle_time_details(object) do
163+
struct(ExTracker.Record.CicleTimeDetails, object)
164+
end
120165
end

lib/extracker/record.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ defmodule ExTracker.Record.Story do
156156
:before_id, :after_id, :integration_id, :external_id, :url, :transitions,
157157
:cycle_time_details, :kind]
158158

159-
@type t :: %__MODULE__{
159+
@type t :: %ExTracker.Record.Story{
160160
id: pos_integer,
161161
project_id: pos_integer,
162162
name: binary,
@@ -188,7 +188,7 @@ end
188188
defmodule ExTracker.Record.StoryTransition do
189189
defstruct [:state, :story_id, :project_id, :project_version, :occurred_at, :performed_by_id, :kind]
190190

191-
@type t :: %__MODULE__{
191+
@type t :: %ExTracker.Record.StoryTransition{
192192
state: binary,
193193
story_id: pos_integer,
194194
project_id: pos_integer,
@@ -204,7 +204,7 @@ defmodule ExTracker.Record.CycleTimeDetails do
204204
:finished_count, :delivered_time, :delivered_count, :rejected_time,
205205
:rejected_count, :story_id, :kind]
206206

207-
@type t :: %__MODULE__{
207+
@type t :: %ExTracker.Record.CycleTimeDetails{
208208
total_cycle_time: pos_integer,
209209
started_time: pos_integer,
210210
started_count: pos_integer,

0 commit comments

Comments
 (0)