classDiagram
  direction LR

  class Server {
    +string id
    +string name
    +string primaryIpAddress
    +string secondaryIpAddress
    +string operatingSystem
    +string location
    +string provider
    +string description
    +server_status status
    +Date createdAt
    +Date updatedAt
  }

  class Service {
    +string id
    +string serverId
    +string name
    +service_type type
    +int internalPort
    +int externalPort
    +service_protocol protocol
    +service_status status
    +string description
    +Date createdAt
    +Date updatedAt
  }

  class Domain {
    +string id
    +string serviceId
    +string name
    +string expectedServerIp
    +string lastResolvedIp
    +string[] lastResolvedIps
    +domain_resolution_status resolutionStatus
    +Date lastCheckedAt
    +string remarks
    +string lastCheckMessage
    +Date createdAt
    +Date updatedAt
  }

  class Catatan {
    +string id
    +string serverId
    +string title
    +string content
    +string category
    +Date createdAt
    +Date updatedAt
  }

  Server "1" o-- "0..*" Service : memiliki
  Server "1" o-- "0..*" Catatan : memiliki
  Service "1" o-- "0..*" Domain : memiliki

  note for Domain "resolutionStatus: MATCH, MISMATCH, atau UNRESOLVED"
