db_port.rb

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