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