Skip to content

Commit 36bdcb6

Browse files
authored
Reworking the create to handle variant and clone complexity. (#436)
1 parent e8ddc5d commit 36bdcb6

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

service/src/main/kotlin/app/cash/backfila/ui/pages/BackfillCreateAction.kt

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,32 @@ class BackfillCreateAction @Inject constructor(
4444
fun get(
4545
@PathParam service: String,
4646
@PathParam variantOrBackfillNameOrId: String,
47-
@PathParam backfillNameOrId: String? = "",
47+
@PathParam backfillNameOrIdOrBlank: String? = "",
4848
): Response<ResponseBody> {
49-
val variantOrBlank = if (backfillNameOrId.isNullOrBlank()) {
49+
val variant: String
50+
val variantOrBlank: String?
51+
val backfillNameOrId: String
52+
if (backfillNameOrIdOrBlank.isNullOrBlank()) {
5053
// This means variant is null or default
51-
null
54+
variant = "default"
55+
variantOrBlank = null
56+
backfillNameOrId = variantOrBackfillNameOrId
5257
} else {
53-
variantOrBackfillNameOrId
58+
variant = variantOrBackfillNameOrId.orEmpty().ifBlank { "default" }
59+
variantOrBlank = variantOrBackfillNameOrId
60+
backfillNameOrId = backfillNameOrIdOrBlank
5461
}
55-
56-
val variant = variantOrBlank.orEmpty().ifBlank { "default" }
5762
val label = if (variant == "default") service else "$service ($variant)"
58-
val backfillName: String? =
59-
listOf(variantOrBackfillNameOrId, backfillNameOrId).firstOrNull { it?.toIntOrNull() == null }
60-
val backfillIdToClone: String? =
61-
listOf(variantOrBackfillNameOrId, backfillNameOrId).firstOrNull { it?.toIntOrNull() != null }
63+
64+
val backfillIdToClone: String?
65+
val backfillName: String?
66+
if (backfillNameOrId.toIntOrNull() != null) {
67+
backfillIdToClone = backfillNameOrId
68+
backfillName = null
69+
} else {
70+
backfillName = backfillNameOrId
71+
backfillIdToClone = null
72+
}
6273

6374
// If service + variant + backfill id to clone are valid, pre-fill form with backfill details
6475
val backfillRuns = getBackfillRunsAction.backfillRuns(service, variant)
@@ -96,10 +107,7 @@ class BackfillCreateAction @Inject constructor(
96107
if ((backfillToClone?.id ?: registeredBackfill?.name) != null) {
97108
Link(
98109
backfillToClone?.id?.let { "Clone" } ?: registeredBackfill?.name ?: "",
99-
PATH
100-
.replace("{service}", service)
101-
.replace("{variantOrBackfillNameOrId}", variantOrBackfillNameOrId)
102-
.replace("{backfillNameOrId}", backfillNameOrId ?: ""),
110+
BackfillCreateAction.path(service, variantOrBackfillNameOrId, backfillNameOrIdOrBlank ?: ""),
103111
)
104112
} else {
105113
null
@@ -398,10 +406,10 @@ class BackfillCreateAction @Inject constructor(
398406
}
399407

400408
companion object {
401-
private const val PATH = "/backfills/create/{service}/{variantOrBackfillNameOrId}/{backfillNameOrId}"
402-
fun path(service: String, variantOrBackfillNameOrId: String, backfillNameOrId: String) = PATH
409+
private const val PATH = "/backfills/create/{service}/{variantOrBackfillNameOrId}/{backfillNameOrIdOrBlank}"
410+
fun path(service: String, variantOrBackfillNameOrId: String, backfillNameOrIdOrBlank: String) = PATH
403411
.replace("{service}", service)
404412
.replace("{variantOrBackfillNameOrId}", variantOrBackfillNameOrId)
405-
.replace("{backfillNameOrId}", backfillNameOrId)
413+
.replace("{backfillNameOrIdOrBlank}", backfillNameOrIdOrBlank)
406414
}
407415
}

service/src/main/kotlin/app/cash/backfila/ui/pages/BackfillCreateServiceIndexAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class BackfillCreateServiceIndexAction @Inject constructor(
4444
val newPath = BackfillCreateAction.path(
4545
service = service,
4646
variantOrBackfillNameOrId = variantOrBlank.orEmpty(),
47-
backfillNameOrId = "",
47+
backfillNameOrIdOrBlank = "",
4848
)
4949
return Response(
5050
body = "go to $newPath".toResponseBody(),
@@ -95,7 +95,7 @@ class BackfillCreateServiceIndexAction @Inject constructor(
9595
href = BackfillCreateAction.path(
9696
service = service,
9797
variantOrBackfillNameOrId = variantOrBackfillNameOrId,
98-
backfillNameOrId = if (variantOrBackfillNameOrId == it.name) "" else it.name,
98+
backfillNameOrIdOrBlank = if (variantOrBackfillNameOrId == it.name) "" else it.name,
9999
)
100100

101101
this@ul.li("registration col-span-1 divide-y divide-gray-200 rounded-lg bg-white shadow") {

service/src/main/kotlin/app/cash/backfila/ui/pages/BackfillShowAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class BackfillShowAction @Inject constructor(
8686
href = BackfillCreateAction.path(
8787
service = backfill.service_name,
8888
variantOrBackfillNameOrId = if (backfill.variant != "default") backfill.variant else id.toString(),
89-
backfillNameOrId = if (backfill.variant != "default") id.toString() else "",
89+
backfillNameOrIdOrBlank = if (backfill.variant != "default") id.toString() else "",
9090
)
9191

9292
button(classes = "rounded-full bg-indigo-600 px-3 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600") {

0 commit comments

Comments
 (0)