我应该如何为实体设计状态字段
how should I design status field for an enitity
我目前正在做一个托管项目,所以这就是我设计用于存储托管信息的实体的方式。
// entity design for storing hosting instance
data class HostingInstance(
val hostingId: String,
val customerId: String,
val active: Boolean,
val status: HostingStatus,
...
)
// enum class for status
enum class HostingStatus {
CREATION_PENDING,
CREATION_SUCCESS,
CREATION_FAILED,
RENEW_PENDING,
RENEW_SUCCESS,
RENEW_FAILED,
SUSPEND_PENDING,
SUSPEND_SUCCESS,
SUSPEND_FAILED,
UPGRADE_PENDING,
UPGRADE_SUCCESS,
UPGRADE_FAILED,
...
}
如您所见,我必须存储很多状态。在前端他们也有一个固定的状态图标比如active, suspend, fail(upgrade_failed and renew_failed are also active)我觉得不好对于他们来说,因为他们必须将我所有的枚举状态映射到他们的图标上,这是一项非常艰巨的工作。所以我的问题是我应该如何设计我的状态字段以便前端团队可以轻松使用?
您可以在对前端的响应中包含一个新属性,其中包含此“活动、暂停、失败”信息。另一种选择是在您对前端的响应中将 HostingStatus
替换为 HostingSimpleStatus
。类似于以下内容:
enum class HostingSimpleStatus {
ACTIVE,
SUSPEND,
FAIL
}
那么您的 HostingStatus
可能包含如下映射:
enum class HostingStatus(val simpleStatus: HostingSimpleStatus) {
CREATION_PENDING (SUSPEND),
CREATION_SUCCESS (ACTIVE),
CREATION_FAILED (FAIL),
(...)
}
这样一来,您就可以将所有逻辑都放在一个地方。
我目前正在做一个托管项目,所以这就是我设计用于存储托管信息的实体的方式。
// entity design for storing hosting instance
data class HostingInstance(
val hostingId: String,
val customerId: String,
val active: Boolean,
val status: HostingStatus,
...
)
// enum class for status
enum class HostingStatus {
CREATION_PENDING,
CREATION_SUCCESS,
CREATION_FAILED,
RENEW_PENDING,
RENEW_SUCCESS,
RENEW_FAILED,
SUSPEND_PENDING,
SUSPEND_SUCCESS,
SUSPEND_FAILED,
UPGRADE_PENDING,
UPGRADE_SUCCESS,
UPGRADE_FAILED,
...
}
如您所见,我必须存储很多状态。在前端他们也有一个固定的状态图标比如active, suspend, fail(upgrade_failed and renew_failed are also active)我觉得不好对于他们来说,因为他们必须将我所有的枚举状态映射到他们的图标上,这是一项非常艰巨的工作。所以我的问题是我应该如何设计我的状态字段以便前端团队可以轻松使用?
您可以在对前端的响应中包含一个新属性,其中包含此“活动、暂停、失败”信息。另一种选择是在您对前端的响应中将 HostingStatus
替换为 HostingSimpleStatus
。类似于以下内容:
enum class HostingSimpleStatus {
ACTIVE,
SUSPEND,
FAIL
}
那么您的 HostingStatus
可能包含如下映射:
enum class HostingStatus(val simpleStatus: HostingSimpleStatus) {
CREATION_PENDING (SUSPEND),
CREATION_SUCCESS (ACTIVE),
CREATION_FAILED (FAIL),
(...)
}
这样一来,您就可以将所有逻辑都放在一个地方。