Sha256: 6926ad7ad9885040c8b0cf2969a12f22d2411980744340ba089dc6dc9ae2367e

Contents?: true

Size: 901 Bytes

Versions: 7

Compression:

Stored size: 901 Bytes

Contents

module Arbetsformedlingen
  PublicationSchema = Dry::Validation.Form do
    configure do
      config.type_specs = true
      config.messages_file = File.expand_path('../../../../config/locales/errors.yml', __FILE__)

      predicates(Predicates)
    end

    required(:unpublish_at, :string).filled(:yyyy_mm_dd?)
    required(:name, Types::StrippedString).filled
    required(:email, Types::StrippedString).filled(:str?, :email?)

    optional(:publish_at, :string).filled(:yyyy_mm_dd?)
  end

  class Publication < Model
    def initialize(hash)
      data = hash.dup
      publish_date = data[:publish_at] || Time.now.utc

      data[:publish_at] = publish_date.strftime('%Y-%m-%d')
      data[:unpublish_at] = data[:unpublish_at]&.strftime('%Y-%m-%d')

      # TODO: Validate that unpublish_at - publish_at is not greater that 180 days

      super(PublicationSchema.call(data))
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
arbetsformedlingen-0.4.1 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.4.0 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.3.0 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.2.0 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.1.2 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.1.1 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.1.0 lib/arbetsformedlingen/models/publication.rb