Skip to content

Commit e09d9cd

Browse files
committed
feat: Add TimeBand data class and router for time band operations
1 parent b2e13a6 commit e09d9cd

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.ctrlhub.core.settings.timebands
2+
3+
import com.ctrlhub.core.Api
4+
import com.ctrlhub.core.settings.timebands.response.TimeBand
5+
import com.ctrlhub.core.router.Router
6+
import com.ctrlhub.core.router.request.AbstractRequestParameters
7+
import com.ctrlhub.core.router.request.FilterOption
8+
import io.ktor.client.HttpClient
9+
10+
class TimeBandsRequestParameters(
11+
offset: Int? = 0,
12+
limit: Int? = 100,
13+
filterOptions: List<FilterOption> = emptyList()
14+
) : AbstractRequestParameters(offset, limit, filterOptions)
15+
16+
class TimeBandsRouter(httpClient: HttpClient) : Router(httpClient) {
17+
/**
18+
* Retrieve a list of all time bands
19+
*
20+
* @return A list of all time bands
21+
*/
22+
suspend fun all(
23+
requestParameters: TimeBandsRequestParameters = TimeBandsRequestParameters()
24+
): java.util.List<TimeBand> {
25+
val endpoint = "/settings/time-bands"
26+
return fetchJsonApiResource(endpoint, requestParameters.toMap())
27+
}
28+
29+
/**
30+
* Retrieve a single time band by ID
31+
*
32+
* @param timeBandId String The time band ID to retrieve
33+
* @return The time band with the given ID
34+
*/
35+
suspend fun one(
36+
timeBandId: String,
37+
requestParameters: TimeBandsRequestParameters = TimeBandsRequestParameters()
38+
): TimeBand {
39+
val endpoint = "/settings/time-bands/$timeBandId"
40+
return fetchJsonApiResource(endpoint, requestParameters.toMap(), TimeBand::class.java)
41+
}
42+
}
43+
44+
val Api.timeBands: TimeBandsRouter
45+
get() = TimeBandsRouter(httpClient)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.ctrlhub.core.settings.timebands.response
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
5+
import com.fasterxml.jackson.annotation.JsonProperty
6+
import com.github.jasminb.jsonapi.annotations.Id
7+
import com.github.jasminb.jsonapi.annotations.Meta
8+
import com.github.jasminb.jsonapi.annotations.Type
9+
10+
@Type("time-bands")
11+
@JsonIgnoreProperties(ignoreUnknown = true)
12+
data class TimeBand @JsonCreator constructor(
13+
@Id var id: String = "",
14+
@JsonProperty("end") var end: String = "",
15+
@JsonProperty("name") var name: String = "",
16+
@JsonProperty("start") var start: String = "",
17+
@JsonProperty("meta") @Meta var meta: TimeBandMeta? = null
18+
) {
19+
@JsonIgnoreProperties(ignoreUnknown = true)
20+
data class TimeBandMeta @JsonCreator constructor(
21+
@JsonProperty("created_at") var createdAt: String = "",
22+
@JsonProperty("updated_at") var updatedAt: String = "",
23+
@JsonProperty("modified_at") var modifiedAt: String = ""
24+
)
25+
}

0 commit comments

Comments
 (0)