zf

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

type.ex (4745B)


      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.Satisfaction.Type do
     19 @moduledoc false
     20 
     21 use Absinthe.Schema.Notation
     22 
     23 alias Zenflows.VF.Satisfaction.Resolv
     24 
     25 @note "A textual description or comment."
     26 @satisfies """
     27 An intent satisfied fully or partially by an economic event or commitment.
     28 """
     29 @satisfies_id "(`Intent`) #{@satisfies}"
     30 @satisfied_by_event """
     31 An economic event fully or partially satisfying an intent.
     32 
     33 Mutually exclusive with commitment.
     34 """
     35 @satisfied_by_event_id "(`EconomicEvent`) #{@satisfied_by_event}"
     36 #@satisfied_by_commitment """
     37 #A commitment fully or partially satisfying an intent."
     38 #
     39 #Mutually exclusive with event.
     40 #"""
     41 #@satisfied_by_commitment_id "(`Commitment`) #{@satisfied_by_commitment}"
     42 @resource_quantity """
     43 The amount and unit of the economic resource counted or inventoried.
     44 """
     45 @effort_quantity """
     46 The amount and unit of the work or use or citation effort-based
     47 action.  This is often a time duration, but also could be cycle
     48 counts or other measures of effort or usefulness.
     49 """
     50 
     51 @desc """
     52 Represents many-to-many relationships between intents and commitments
     53 or events that partially or full satisfy one or more intents.
     54 """
     55 object :satisfaction do
     56 	field :id, non_null(:id)
     57 
     58 	@desc @note
     59 	field :note, :string
     60 
     61 	@desc @satisfies
     62 	field :satisfies, non_null(:intent), resolve: &Resolv.satisfies/3
     63 
     64 	@desc @satisfied_by_event
     65 	field :satisfied_by_event, :economic_event,
     66 		resolve: &Resolv.satisfied_by_event/3
     67 
     68 	#@desc @satisfied_by_commitment
     69 	#field :satisfied_by_commitment, :commitment,
     70 	#	resolve: &Resolv.satisfied_by_commitment/3
     71 
     72 	@desc @resource_quantity
     73 	field :resource_quantity, :measure, resolve: &Resolv.resource_quantity/3
     74 
     75 	@desc @effort_quantity
     76 	field :effort_quantity, :measure, resolve: &Resolv.effort_quantity/3
     77 end
     78 
     79 input_object :satisfaction_create_params do
     80 	@desc @note
     81 	field :note, :string
     82 
     83 	@desc @satisfies_id
     84 	field :satisfies_id, non_null(:id), name: "satisfies"
     85 
     86 	@desc @satisfied_by_event_id
     87 	field :satisfied_by_event_id, :id, name: "satisfied_by_event"
     88 
     89 	#@desc @satisfied_by_commitment_id
     90 	#field :satisfied_by_commitment_id, :id, name: "satisfied_by_commitment"
     91 
     92 	@desc @resource_quantity
     93 	field :resource_quantity, :imeasure
     94 
     95 	@desc @effort_quantity
     96 	field :effort_quantity, :imeasure
     97 end
     98 
     99 input_object :satisfaction_update_params do
    100 	field :id, non_null(:id)
    101 
    102 	@desc @note
    103 	field :note, :string
    104 
    105 	@desc @satisfies_id
    106 	field :satisfies_id, :id, name: "satisfies"
    107 
    108 	@desc @satisfied_by_event_id
    109 	field :satisfied_by_event_id, :id, name: "satisfied_by_event"
    110 
    111 	#@desc @satisfied_by_commitment_id
    112 	#field :satisfied_by_commitment_id, :id, name: "satisfied_by_commitment"
    113 
    114 	@desc @resource_quantity
    115 	field :resource_quantity, :imeasure
    116 
    117 	@desc @effort_quantity
    118 	field :effort_quantity, :imeasure
    119 end
    120 
    121 object :satisfaction_response do
    122 	field :satisfaction, non_null(:satisfaction)
    123 end
    124 
    125 object :satisfaction_edge do
    126 	field :cursor, non_null(:id)
    127 	field :node, non_null(:satisfaction)
    128 end
    129 
    130 object :satisfaction_connection do
    131 	field :page_info, non_null(:page_info)
    132 	field :edges, non_null(list_of(non_null(:satisfaction_edge)))
    133 end
    134 
    135 object :query_satisfaction do
    136 	field :satisfaction, :satisfaction do
    137 		arg :id, non_null(:id)
    138 		resolve &Resolv.satisfaction/2
    139 	end
    140 
    141 	field :satisfactions, non_null(:satisfaction_connection) do
    142 		arg :first, :integer
    143 		arg :after, :id
    144 		arg :last, :integer
    145 		arg :before, :id
    146 		resolve &Resolv.satisfactions/2
    147 	end
    148 end
    149 
    150 object :mutation_satisfaction do
    151 	field :create_satisfaction, non_null(:satisfaction_response) do
    152 		arg :satisfaction, non_null(:satisfaction_create_params)
    153 		resolve &Resolv.create_satisfaction/2
    154 	end
    155 
    156 	field :update_satisfaction, non_null(:satisfaction_response) do
    157 		arg :satisfaction, non_null(:satisfaction_update_params)
    158 		resolve &Resolv.update_satisfaction/2
    159 	end
    160 
    161 	field :delete_satisfaction, non_null(:boolean) do
    162 		arg :id, non_null(:id)
    163 		resolve &Resolv.delete_satisfaction/2
    164 	end
    165 end
    166 end