【问题标题】:how should I design status field for an enitity我应该如何为实体设计状态字段
【发布时间】:2021-11-24 02:39:25
【问题描述】:

我目前正在做一个托管项目,所以这就是我设计用于存储托管信息的实体的方式。

// 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 和 renew_failed 也处于活动状态),我为它们感到难过,因为它们必须映射我所有的枚举状态对他们的偶像来说,这是一项非常艰巨的工作。所以我的问题是我应该如何设计我的状态字段以便前端团队可以轻松使用?

【问题讨论】:

    标签: spring-boot kotlin design-patterns database-design


    【解决方案1】:

    您可以在对前端的响应中包含一个新属性,其中包含“活动、暂停、失败”信息。另一种选择是在您对前端的响应中将HostingStatus 替换为HostingSimpleStatus。类似于以下内容:

    enum class HostingSimpleStatus {
        ACTIVE,
        SUSPEND,
        FAIL
    }
    

    那么您的HostingStatus 可能包含如下映射:

    enum class HostingStatus(val simpleStatus: HostingSimpleStatus) {
    
        CREATION_PENDING (SUSPEND),
        CREATION_SUCCESS (ACTIVE),
        CREATION_FAILED (FAIL),
        (...)
    }
    

    这样,您可以将所有逻辑包含在一个地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-24
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2012-03-16
      • 2018-08-02
      相关资源
      最近更新 更多