Sha256: 7a7d82f3fd76e9251aae7a88acd0360312130ec792c6e45454c68ecd8a1b3fc0

Contents?: true

Size: 930 Bytes

Versions: 2

Compression:

Stored size: 930 Bytes

Contents

# frozen_string_literal: true

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

      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

2 entries across 2 versions & 1 rubygems

Version Path
arbetsformedlingen-0.7.0 lib/arbetsformedlingen/models/publication.rb
arbetsformedlingen-0.6.0 lib/arbetsformedlingen/models/publication.rb