Sha256: 6438a8b295214e53f130c45885b92cce2c5c93c5600d5d625460c758262e3e5f

Contents?: true

Size: 690 Bytes

Versions: 1

Compression:

Stored size: 690 Bytes

Contents

require_relative 'persistence'

module ArisControl
  ModificationError = Class.new(StandardError)

  class Bookkeeper
    attr_reader :persistence, :users

    def initialize(persistence = default_persistence)
      @persistence = persistence
      @users = persistence.load_users
    end

    def list
      users
    end

    def add(name:, email:, **opts)
      raise ArisControl::ModificationError if users.has_key?(name)
      users[name] = opts.merge(email: email)
      persistence.store_users(users)
    end

    def delete(name)
      users.delete(name)
      persistence.store_users(users)
    end

    def default_persistence
      ArisControl::Persistence.new
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aris-control-1.0.0 lib/aris-control/bookkeeper.rb