Added, reqrote and appended keys to validation schemas

This commit is contained in:
Alex Tavarez
2025-09-02 20:20:07 -04:00
parent 417eef3ab4
commit fe508ec21e

View File

@@ -1,13 +1,8 @@
defmodule Sukaato.Vschemas do
@moduledoc """
Provide validation schemas for tail parameters
of `Validate.validate`.
Provides validation schemas for tail parameters of `Validate.validate/2`.
"""
@doc """
Schema for validating updates to column `:affil` on table
corresponding to `Sukaato.User`.
"""
@affil_vschema [
required: false,
type: :list,
@@ -15,78 +10,45 @@ defmodule Sukaato.Vschemas do
required: true,
type: :map,
map: %{
affil_name: [required: false, type: :string],
affil_uri: [required: true, type: :string],
affil_icon: [required: true, type: :string],
affil_target: [required: false, type: :string, in: [
"_blank",
"_parent",
"_self",
"_top"
]
]
name: [required: false, type: :string],
icon_uri: [required: true, type: :string],
icon_name: [required: true, type: :string],
protocol: [required: true, type: :string],
address: [required: true, type: :string],
scheme_postfix: [required: true, type: :string]
}
]
]
@doc """
Schema for validating updates to column `:perms` on table
corresponding to `Sukaato.User`.
Outputs schema for validating updates to column `:affil` on table corresponding to `Sukaato.User`.
"""
def affil, do: @affil_vschema
@perms_vschema [
required: true,
type: :list,
list: [
required: true,
type: :string,
type: :integer,
#@TODO create function generating these numbers from first 4 numbers
in: [1, 2, 4, 8, 9, 10, 12, 5, 7, 3, 6, 11, 13, 14, 15]
]
]
@doc """
Schema for validating updates to column `:pub_keys` on table
corresponding to `Sukaato.User`.
Outputs schema for validating updates to column `:perms` on table corresponding to `Sukaato.User`.
"""
@pubkeys_vschema %{
oauth: [
required: false,
type: :list,
list: [
required: true,
type: :map,
map: %{
access_token: [required: true, type: :string],
auth_code: [required: false, type: :string],
refresh_token: [required: false, type: :string]
}
]
],
fido2: [
required: false,
type: :map,
map: %{
u2f: [
required: false,
type: :list,
list: [
required: true,
type: :map,
map: %{
name: [required: true, type: :string],
credential: [required: true, type: :string]
}
]
],
}
],
totp_secret: [required: false, type: :string]
}
def perms, do: @perms_vschema
@pubkeys_vschema [
required: true,
type: :map
]
@doc """
Schema for validating updates to column `:resume` on table
corresponding to `Sukaato.Folio`.
Outputs schema for validating updates to column `:pub_keys` on table corresponding to `Sukaato.User`.
"""
def pub_keys, do: @pubkeys_vschema
# @TODO change below map string keys to atoms
@resume_vschema %{
"basics" => [
required: true,
@@ -328,11 +290,11 @@ defmodule Sukaato.Vschemas do
]
]
}
@doc """
Schema for validating updates to column `:showcase` on table
corresponding to `Sukaato.Folio`.
Outputs schema for validating updates to column `:resume` on table corresponding to `Sukaato.Folio`.
"""
def resume, do: @resume_vschema
@showcase_vschema %{
audio: [
required: false,
@@ -400,4 +362,8 @@ defmodule Sukaato.Vschemas do
]
]
}
@doc """
Outputs schema for validating updates to column `:showcase` on table corresponding to `Sukaato.Folio`.
"""
def showcase, do: @showcase_vschema
end