zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

appreciation.ex (1874B)


      1 # Zenflows is designed to implement the Valueflows vocabulary,
      2 # written and maintained by srfsh <info@dyne.org>.
      3 # Copyright (C) 2021-2023 Dyne.org foundation <foundation@dyne.org>.
      4 #
      5 # This program is free software: you can redistribute it and/or modify
      6 # it under the terms of the GNU Affero General Public License as published by
      7 # the Free Software Foundation, either version 3 of the License, or
      8 # (at your option) any later version.
      9 #
     10 # This program is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU Affero General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU Affero General Public License
     16 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
     17 
     18 defmodule Zenflows.VF.Appreciation do
     19 @moduledoc """
     20 A way to tie an economic event that is given in loose fulfilment for
     21 another economic event, without commitments or expectations.  Supports the
     22 gift economy.
     23 """
     24 
     25 use Zenflows.DB.Schema
     26 
     27 alias Ecto.Changeset
     28 alias Zenflows.DB.{Schema, Validate}
     29 alias Zenflows.VF.EconomicEvent
     30 
     31 @type t() :: %__MODULE__{
     32 	appreciation_of: EconomicEvent.t(),
     33 	appreciation_with: EconomicEvent.t(),
     34 	note: String.t() | nil,
     35 }
     36 
     37 schema "vf_appreciation" do
     38 	belongs_to :appreciation_of, EconomicEvent
     39 	belongs_to :appreciation_with, EconomicEvent
     40 	field :note, :string
     41 	timestamps()
     42 end
     43 
     44 @reqr ~w[appreciation_of_id appreciation_with_id]a
     45 @cast @reqr ++ [:note]
     46 
     47 @doc false
     48 @spec changeset(Schema.t(), Schema.params()) :: Changeset.t()
     49 def changeset(schema \\ %__MODULE__{}, params) do
     50 	schema
     51 	|> Changeset.cast(params, @cast)
     52 	|> Changeset.validate_required(@reqr)
     53 	|> Validate.note(:note)
     54 	|> Changeset.assoc_constraint(:appreciation_of)
     55 	|> Changeset.assoc_constraint(:appreciation_with)
     56 end
     57 end