Sha256: fb0ed71dfe3088c57eceea176fa8706581684a458ccb82ccb54baa07b92892ca

Contents?: true

Size: 1.62 KB

Versions: 2

Compression:

Stored size: 1.62 KB

Contents

# typed: strict
# frozen_string_literal: true

module LunchMoney
  # https://lunchmoney.dev/#crypto-object
  class CryptoBase < LunchMoney::DataObject
    include LunchMoney::Validators

    sig { returns(T.nilable(Integer)) }
    attr_accessor :id, :zabo_account_id

    sig { returns(String) }
    attr_reader :source, :created_at

    sig { returns(String) }
    attr_accessor :name, :balance

    sig { returns(T.nilable(String)) }
    attr_accessor :display_name, :institution_name

    # Valid crypto source types
    VALID_SOURCES = T.let(
      [
        "synced",
        "manual",
      ],
      T::Array[String],
    )

    sig do
      params(
        created_at: String,
        source: String,
        name: String,
        balance: String,
        institution_name: T.nilable(String),
        id: T.nilable(Integer),
        zabo_account_id: T.nilable(Integer),
        display_name: T.nilable(String),
      ).void
    end
    def initialize(created_at:, source:, name:, balance:, institution_name: nil, id: nil, zabo_account_id: nil,
      display_name: nil)
      super()
      @created_at = T.let(validate_iso8601!(created_at), String)
      @source = T.let(validate_one_of!(source, VALID_SOURCES), String)
      @name = name
      @balance = balance
      @institution_name = institution_name
      @id = id
      @zabo_account_id = zabo_account_id
      @display_name = display_name
    end

    sig { params(name: String).void }
    def source=(name)
      @source = validate_one_of!(name, VALID_SOURCES)
    end

    sig { params(time: String).void }
    def created_at=(time)
      @created_at = validate_iso8601!(time)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lunchmoney-1.0.0 lib/lunchmoney/crypto/crypto/crypto_base.rb
lunchmoney-0.10.0 lib/lunchmoney/crypto/crypto/crypto_base.rb