type.ex (1727B)
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.Measure.Type do 19 @moduledoc false 20 21 use Absinthe.Schema.Notation 22 23 alias Zenflows.VF.Measure.Resolv 24 25 @has_numerical_value """ 26 A number representing the quantity, will be paired with a unit. 27 """ 28 @has_unit "A unit of measure." 29 30 @desc """ 31 Semantic meaning for measurements: binds a quantity to its measurement 32 unit. See http://www.qudt.org/pages/QUDToverviewPage.html . 33 """ 34 object :measure do 35 @desc @has_numerical_value 36 field :has_numerical_value, non_null(:decimal) 37 38 @desc @has_unit 39 field :has_unit, :unit, resolve: &Resolv.has_unit/3 40 end 41 42 @desc """ 43 Mutation input structure for defining measurements. Should be nulled 44 if not present, rather than empty. 45 """ 46 input_object :imeasure, name: "IMeasure" do 47 @desc @has_numerical_value 48 field :has_numerical_value, non_null(:decimal) 49 50 @desc "(`Unit`) " <> @has_unit 51 field :has_unit_id, :id, name: "has_unit" 52 end 53 end