db_port.rb

 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