1# frozen_string_literal: true
2
3require "value_semantics/monkey_patched"
4require_relative "./validators"
5
6class DbPort
7 module Status
8 SUBMITTED = "submitted"
9 COMPLETE = "complete"
10 FOC = "foc"
11 end
12
13 value_semantics do
14 id String
15 processing_status PortProcessingStatus
16 actual_foc_date Either(DateTime, nil), default: nil, coerce: true
17 updated_at DateTime, coerce: true
18 tel ValidTelString
19 customer_id String
20 backend_sgx String
21 end
22
23 def self.coerce_actual_foc_date(time)
24 time&.to_datetime
25 end
26
27 def self.coerce_updated_at(raw)
28 raw.to_datetime
29 end
30
31 def self.from(**kwargs)
32 new(**kwargs)
33 end
34end