This commit is contained in:
Zach Daniel 2022-06-04 16:58:50 -04:00
parent 4e219667f2
commit 6085b1bbca
18 changed files with 567 additions and 205 deletions

View file

@ -256,7 +256,7 @@ liveSocket.connect()
// expose liveSocket on window for web console debug logs and latency simulation:
// >> liveSocket.enableDebug()
liveSocket.enableDebug()
// >> liveSocket.enableLatencySim(1000) // enabled for duration of browser session
// >> liveSocket.disableLatencySim()
window.liveSocket = liveSocket

View file

@ -0,0 +1,127 @@
# defmodule AshHq.Docs.Search.Steps.RunSearch do
# use Ash.Flow.Step
# import Ecto.Query, only: [from: 2]
# require Ecto.Query
# require Ash.Query
# @resources AshHq.Docs.Registry
# |> Ash.Registry.entries()
# |> Enum.filter(&(AshHq.Docs.Extensions.Search in Ash.Resource.Info.extensions(&1)))
# def run(input, _opts, _context) do
# @resources
# |> Enum.reduce(nil, fn resource, query ->
# {:ok, next_query} =
# resource
# |> Ash.Query.for_read(:search, %{
# library_versions: input[:library_versions],
# query: input[:query]
# })
# |> Ash.Query.select([:id])
# |> Ash.Query.data_layer_query()
# next_query =
# from row in next_query,
# select_merge: %{__metadata__: %{resource: ^to_string(resource)}}
# if query do
# Ecto.Query.union_all(query, ^next_query)
# else
# next_query
# end
# end)
# |> then(fn query ->
# query =
# from row in query,
# order_by: [
# fragment(
# "ts_rank(setweight(to_tsvector(?), 'A') || setweight(to_tsvector(?), 'D'), plainto_tsquery(?))",
# field(row, ^name_attribute),
# field(row, ^doc_attribute),
# ^input[:query]
# )
# ],
# limit: 20
# ids = AshHq.Repo.all(query)
# data =
# ids
# |> Enum.group_by(& &1.__metadata__.resource, & &1)
# |> Enum.reduce(%{}, fn {resource, id_data}, results ->
# resource = Module.concat([resource])
# primary_read = Ash.Resource.Info.primary_action!(resource, :read).name
# to_load = AshHq.Docs.Extensions.Search.load_for_search(resource)
# ids = Enum.map(id_data, & &1.id)
# resource
# |> Ash.Query.filter(id in ^ids)
# |> Ash.Query.load(
# search_headline: %{query: input[:query]},
# name_matches: %{query: input[:query], similarity: 0.7},
# match_rank: %{query: input[:query]}
# )
# |> Ash.Query.load(to_load)
# |> Ash.Query.for_read(primary_read)
# |> AshHq.Docs.read!()
# |> Enum.reduce(results, fn item, results ->
# Map.put(results, item.id, item)
# end)
# end)
# {:ok,
# Enum.map(ids, fn %{id: id} ->
# Map.fetch!(data, id)
# end)}
# end)
# end
# # read :options, AshHq.Docs.Option, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :dsls, AshHq.Docs.Dsl, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :guides, AshHq.Docs.Guide, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :library_versions, AshHq.Docs.LibraryVersion, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :extensions, AshHq.Docs.Extension, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :functions, AshHq.Docs.Function, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# # read :modules, AshHq.Docs.Module, :search do
# # input %{
# # library_versions: arg(:library_versions),
# # query: arg(:query)
# # }
# # end
# end

View file

@ -54,9 +54,6 @@ defmodule AshHq.Docs.Importer do
Enum.find(already_defined_versions, &(&1.version == version))
end)
end
|> tap(fn versions ->
Enum.map(versions, & &1.version)
end)
|> Enum.concat(Enum.map(library.track_branches, &{&1, true}))
|> Enum.each(fn version ->
{version, branch?} =
@ -83,7 +80,7 @@ defmodule AshHq.Docs.Importer do
if result do
AshHq.Repo.transaction(fn ->
id =
case LibraryVersion.by_version(version) do
case LibraryVersion.by_version(library.id, version) do
{:ok, version} ->
LibraryVersion.destroy!(version)
version.id
@ -92,29 +89,21 @@ defmodule AshHq.Docs.Importer do
Ash.UUID.generate()
end
LibraryVersion.build!(library.id, version, result, %{
LibraryVersion.build!(
library.id,
version,
%{
timeout: :infinity,
id: id,
extensions: result[:extensions],
doc: result[:doc],
guides: result[:guides],
modules: result[:modules]
})
end)
end
end)
end
for version <- LibraryVersion.unprocessed!() do
try do
LibraryVersion.process!(version, timeout: :infinity)
rescue
e ->
Logger.error(
"Exception while importing: #{version.id}\n#{Exception.format(:error, e, __STACKTRACE__)}"
}
)
:ok
end)
end
end)
end
end

View file

@ -36,6 +36,7 @@ defmodule AshHq.Docs.Dsl do
defaults [:read, :destroy]
create :create do
primary? true
argument :options, {:array, :map}
argument :library_version, :uuid
@ -49,19 +50,6 @@ defmodule AshHq.Docs.Dsl do
change manage_relationship(:options, type: :direct_control)
change manage_relationship(:library_version, type: :replace)
end
update :update do
argument :options, {:array, :map}
argument :library_version, :uuid
change {AshHq.Docs.Changes.AddArgToRelationship,
attr: :extension_id, arg: :extension_id, rel: :options}
change {AshHq.Docs.Changes.AddArgToRelationship, arg: :library_version, rel: :options}
change manage_relationship(:options, type: :direct_control)
change manage_relationship(:library_version, type: :replace)
end
end
attributes do

View file

@ -27,14 +27,15 @@ defmodule AshHq.Docs.Extension do
code_interface do
define_for AshHq.Docs
define :import, args: [:library_version]
define :destroy
end
actions do
defaults [:read, :update, :destroy]
create :import do
create :create do
primary? true
argument :library_version, :uuid do
allow_nil? false
end
@ -46,7 +47,7 @@ defmodule AshHq.Docs.Extension do
change {AshHq.Docs.Changes.AddArgToRelationship,
attr: :id, arg: :extension_id, rel: :dsls, generate: &Ash.UUID.generate/0}
change manage_relationship(:dsls, type: :direct_control)
change manage_relationship(:dsls, type: :create)
end
end

View file

@ -1,54 +0,0 @@
defmodule AshHq.Docs.LibraryVersion.Changes.ProcessLibraryVersion do
use Ash.Resource.Change
require Logger
alias AshHq.Docs
alias AshHq.Docs.{Extension}
def change(changeset, _, _) do
Ash.Changeset.before_action(changeset, fn changeset ->
if changeset.data.processed do
changeset
else
notifications = process(changeset.data, Ash.Changeset.get_attribute(changeset, :data))
{Ash.Changeset.force_change_attribute(changeset, :processed, true),
%{notifications: notifications}}
end
end)
end
defp process(library_version, data) do
library_version = Docs.load!(library_version, :extensions)
process_extensions(library_version, data["extensions"] || [])
end
defp process_extensions(library_version, extensions) do
{extensions, notifications} =
Enum.reduce(extensions, {[], []}, fn config, {extensions, notifications} ->
case Extension.import(library_version.id, config,
upsert?: true,
upsert_identity: :unique_name_by_library_version,
return_notifications?: true
) do
{:ok, extension, new_notifications} ->
{[extension | extensions], notifications ++ new_notifications}
{:error, %{changeset: changeset} = error} ->
Logger.error(
"Error importing extension with #{inspect(changeset.params)} #{Exception.format(:error, error)}"
)
{extensions, notifications}
end
end)
destroy_notifications =
library_version.extensions
|> Enum.reject(fn extension -> Enum.any?(extensions, &(&1.name == extension.name)) end)
|> Enum.flat_map(&Extension.destroy!(&1, return_notifications?: true))
notifications ++ destroy_notifications
end
end

View file

@ -24,12 +24,10 @@ defmodule AshHq.Docs.LibraryVersion do
code_interface do
define_for AshHq.Docs
define :build, args: [:library, :version, :data]
define :build, args: [:library, :version]
define :defined_for, args: [:library, :versions]
define :by_version, args: [:version]
define :by_version, args: [:library, :version]
define :destroy
define :unprocessed
define :process
end
actions do
@ -42,7 +40,11 @@ defmodule AshHq.Docs.LibraryVersion do
allow_nil? false
end
filter expr(version == ^arg(:version))
argument :library, :uuid do
allow_nil? false
end
filter expr(version == ^arg(:version) and library == ^arg(:library))
end
create :build do
@ -60,14 +62,22 @@ defmodule AshHq.Docs.LibraryVersion do
allow_nil? false
end
argument :extensions, {:array, :map} do
allow_nil? false
end
change set_attribute(:id, {:arg, :id})
change {AshHq.Docs.Changes.AddArgToRelationship,
attr: :id, arg: :library_version, rel: :modules, generate: &Ash.UUID.generate/0}
change manage_relationship(:guides, type: :direct_control)
change {AshHq.Docs.Changes.AddArgToRelationship,
attr: :id, arg: :library_version, rel: :extensions, generate: &Ash.UUID.generate/0}
change manage_relationship(:guides, type: :create)
change manage_relationship(:library, type: :replace)
change manage_relationship(:modules, type: :direct_control)
change manage_relationship(:modules, type: :create)
change manage_relationship(:extensions, type: :create)
end
read :defined_for do
@ -81,14 +91,6 @@ defmodule AshHq.Docs.LibraryVersion do
filter expr(version in ^arg(:versions) and library_id == ^arg(:library))
end
read :unprocessed do
filter expr(processed == false)
end
update :process do
change AshHq.Docs.LibraryVersion.Changes.ProcessLibraryVersion
end
end
aggregates do
@ -103,8 +105,6 @@ defmodule AshHq.Docs.LibraryVersion do
allow_nil? false
end
attribute :data, :map
attribute :doc, :string do
allow_nil? false
constraints trim?: false, allow_empty?: true
@ -115,11 +115,6 @@ defmodule AshHq.Docs.LibraryVersion do
constraints trim?: false, allow_empty?: true
writable? false
end
attribute :processed, :boolean do
default false
writable? false
end
end
calculations do

View file

@ -211,7 +211,7 @@ defmodule AshHqWeb.Components.Search do
defp search(socket) do
if socket.assigns[:search] in [nil, ""] || socket.assigns[:selected_versions] in [nil, %{}] do
assign(socket, :results, %{})
assign(socket, results: %{}, item_list: [])
else
versions =
Enum.map(socket.assigns.selected_versions, fn

View file

@ -19,22 +19,6 @@ defmodule AshHqWeb.Pages.Home do
</div>
<SearchBar class="hidden sm:block mt-16" />
<div class="grid grid-cols-3 w-full place-content-evenly mt-12">
<div class="grid grid-cols-1 text-center">
Data Layers
<LiveRedirect to={"/"}>
AshPostgres
</LiveRedirect>
</div>
<div class="grid grid-cols-1 text-center">
APIs
</div>
<div class="grid grid-cols-1 text-center">
Build your own
</div>
</div>
<div class="pt-6 pb-6 w-full hidden sm:block mt-36">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-10">
<CodeExample

View file

@ -33,7 +33,7 @@ defmodule AshHqWeb.Routes do
},
selected_versions
) do
"/docs/module/#{sanitize_name(library_name)}/#{version(version_name, IO.inspect(library_id), selected_versions)}/#{sanitize_name(module_name)}/##{type}-#{sanitize_name(name)}-#{arity}"
"/docs/module/#{sanitize_name(library_name)}/#{version(version_name, library_id, selected_versions)}/#{sanitize_name(module_name)}/##{type}-#{sanitize_name(name)}-#{arity}"
end
def doc_link(

View file

@ -307,23 +307,14 @@ defmodule AshHqWeb.AppViewLive do
end)
end
socket =
socket
|> assign(:selected_versions, configured_library_versions)
|> AshPhoenix.LiveView.keep_live(
:libraries,
fn _socket ->
versions_query =
AshHq.Docs.LibraryVersion
|> Ash.Query.sort(version: :desc)
|> Ash.Query.filter(processed == true)
|> Ash.Query.deselect(:data)
AshHq.Docs.Library.read!(load: [versions: versions_query])
end,
after_fetch: fn results, socket ->
libraries = AshHq.Docs.Library.read!(load: [versions: versions_query])
selected_versions =
Enum.reduce(results, socket.assigns[:selected_versions] || %{}, fn library, acc ->
Enum.reduce(libraries, %{}, fn library, acc ->
case Enum.at(library.versions, 0) do
nil ->
acc
@ -333,7 +324,9 @@ defmodule AshHqWeb.AppViewLive do
end
end)
{:ok,
socket
|> assign(:libraries, libraries)
|> assign(
:selected_versions,
selected_versions
@ -342,13 +335,11 @@ defmodule AshHqWeb.AppViewLive do
:selected_types,
selected_types
)
|> assign(:selected_versions, configured_library_versions)
|> assign(configured_theme: configured_theme, sidebar_state: sidebar_state)
|> push_event("selected-versions", selected_versions)
|> push_event("selected_types", %{types: selected_types})
end
)
|> load_docs()
{:ok, assign(socket, configured_theme: configured_theme, sidebar_state: sidebar_state)}
|> load_docs()}
end
def toggle_search(js \\ %JS{}) do
@ -383,9 +374,7 @@ defmodule AshHqWeb.AppViewLive do
defp load_for_search(query) do
Ash.Query.load(
query,
IO.inspect(AshHq.Docs.Extensions.Search.load_for_search(query.resource),
label: inspect(query.resource)
)
AshHq.Docs.Extensions.Search.load_for_search(query.resource)
)
end
end

View file

@ -33,13 +33,12 @@ defmodule AshHq.MixProject do
# Type `mix help deps` for examples and options.
defp deps do
[
{:ash, github: "ash-project/ash", override: true},
# {:ash, path: "../ash", override: true},
# {:ash, github: "ash-project/ash", override: true},
{:ash, path: "../ash", override: true},
{:ash_postgres, github: "ash-project/ash_postgres"},
# {:ash_postgres, path: "../ash_postgres"},
{:ash_phoenix, github: "ash-project/ash_phoenix"},
{:earmark, "~> 1.5.0-pre1"},
{:ecto, git: "https://github.com/elixir-ecto/ecto.git", override: true},
{:earmark, "~> 1.5.0-pre1", override: true},
{:surface, "~> 0.7.3"},
{:surface_heroicons, "~> 0.6.0"},
# Syntax Highlighting

View file

@ -1,8 +1,8 @@
%{
"ash": {:git, "https://github.com/ash-project/ash.git", "ea1adcf2309e6a317cda288af949da2ae582f7eb", []},
"ash": {:git, "https://github.com/ash-project/ash.git", "a626f8d92deb117d6712f8ed7b2ddfd560c6aa66", []},
"ash_phoenix": {:git, "https://github.com/ash-project/ash_phoenix.git", "9de0ff87780bd16d06dcde1bac6a8e041a31659d", []},
"ash_postgres": {:git, "https://github.com/ash-project/ash_postgres.git", "48c6142040d389272d235b7e62d354a3a37a825e", []},
"castore": {:hex, :castore, "0.1.16", "2675f717adc700475345c5512c381ef9273eb5df26bdd3f8c13e2636cf4cc175", [:mix], [], "hexpm", "28ed2c43d83b5c25d35c51bc0abf229ac51359c170cba76171a462ced2e4b651"},
"ash_postgres": {:git, "https://github.com/ash-project/ash_postgres.git", "ff3039ee3200cc255c9d4dca3383f6092f567e1e", []},
"castore": {:hex, :castore, "0.1.17", "ba672681de4e51ed8ec1f74ed624d104c0db72742ea1a5e74edbc770c815182f", [:mix], [], "hexpm", "d9844227ed52d26e7519224525cb6868650c272d4a3d327ce3ca5570c12163f9"},
"certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"},
"combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"},
"comparable": {:hex, :comparable, "1.0.0", "bb669e91cedd14ae9937053e5bcbc3c52bb2f22422611f43b6e38367d94a495f", [:mix], [{:typable, "~> 0.1", [hex: :typable, repo: "hexpm", optional: false]}], "hexpm", "277c11eeb1cd726e7cd41c6c199e7e52fa16ee6830b45ad4cdc62e51f62eb60c"},
@ -14,15 +14,15 @@
"decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
"earmark": {:hex, :earmark, "1.5.0-pre1", "e04aca73692bc3cda3429d6df99c8dae2bf76411e5e76d006a4bc04ac81ef1c1", [:mix], [{:earmark_parser, "~> 1.4.21", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "26ec0473ad2ef995b9672f89309a7a4952887f69b78cfc7af14e320bc6546bfa"},
"earmark_parser": {:hex, :earmark_parser, "1.4.25", "2024618731c55ebfcc5439d756852ec4e85978a39d0d58593763924d9a15916f", [:mix], [], "hexpm", "56749c5e1c59447f7b7a23ddb235e4b3defe276afc220a6227237f3efe83f51e"},
"ecto": {:git, "https://github.com/elixir-ecto/ecto.git", "cda1172063753dea764e9c8ad80757dae5d1a4a7", []},
"ecto_sql": {:hex, :ecto_sql, "3.7.2", "55c60aa3a06168912abf145c6df38b0295c34118c3624cf7a6977cd6ce043081", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0 or ~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3c218ea62f305dcaef0b915fb56583195e7b91c91dcfb006ba1f669bfacbff2a"},
"ecto": {:hex, :ecto, "3.8.3", "5e681d35bc2cbb46dcca1e2675837c7d666316e5ada14eca6c9c609b6232817c", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "af92dd7815967bcaea0daaaccf31c3b23165432b1c7a475d84144efbc703d105"},
"ecto_sql": {:hex, :ecto_sql, "3.8.2", "d7d44bc8d45ba9c85485952710c80408632a7336eb811b045e791718d11ddb5b", [:mix], [{:db_connection, "~> 2.5 or ~> 2.4.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.8.1", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7b9b03d64360d6cc05dc263500a43c11740b5fd4552244c27efad358e98c75b3"},
"elasticlunr": {:hex, :elasticlunr, "0.6.6", "937a41a7293040e060f880817abac8e025ac9e146554e24042aaf8fbe94a0d1f", [:mix], [{:jason, "~> 1.3", [hex: :jason, repo: "hexpm", optional: false]}, {:stemmer, "~> 1.0", [hex: :stemmer, repo: "hexpm", optional: false]}, {:uuid, "~> 1.1", [hex: :uuid, repo: "hexpm", optional: false]}], "hexpm", "d02244cb10c46b82bbc1e68477be296aa78f2d6ecf70355722ce916ff24f6958"},
"elixir_make": {:hex, :elixir_make, "0.6.3", "bc07d53221216838d79e03a8019d0839786703129599e9619f4ab74c8c096eac", [:mix], [], "hexpm", "f5cbd651c5678bcaabdbb7857658ee106b12509cd976c2c2fca99688e1daf716"},
"esbuild": {:hex, :esbuild, "0.4.0", "9f17db148aead4cf1e6e6a584214357287a93407b5fb51a031f122b61385d4c2", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "b61e4e6b92ffe45e4ee4755a22de6211a67c67987dc02afb35a425a0add1d447"},
"ets": {:hex, :ets, "0.8.1", "8ff9bcda5682b98493f8878fc9dbd990e48d566cba8cce59f7c2a78130da29ea", [:mix], [], "hexpm", "6be41b50adb5bc5c43626f25ea2d0af1f4a242fb3fad8d53f0c67c20b78915cc"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"finch": {:hex, :finch, "0.10.2", "9ad27d68270d879f73f26604bb2e573d40f29bf0e907064a9a337f90a16a0312", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dd8b11b282072cec2ef30852283949c248bd5d2820c88d8acc89402b81db7550"},
"floki": {:hex, :floki, "0.32.0", "f915dc15258bc997d49be1f5ef7d3992f8834d6f5695270acad17b41f5bcc8e2", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "1c5a91cae1fd8931c26a4826b5e2372c284813904c8bacb468b5de39c7ececbd"},
"floki": {:hex, :floki, "0.32.1", "dfe3b8db3b793939c264e6f785bca01753d17318d144bd44b407fb3493acaa87", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "d4b91c713e4a784a3f7b1e3cc016eefc619f6b1c3898464222867cafd3c681a3"},
"gettext": {:hex, :gettext, "0.19.1", "564953fd21f29358e68b91634799d9d26989f8d039d7512622efb3c3b1c97892", [:mix], [], "hexpm", "10c656c0912b8299adba9b061c06947511e3f109ab0d18b44a866a4498e77222"},
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
"hpax": {:hex, :hpax, "0.1.1", "2396c313683ada39e98c20a75a82911592b47e5c24391363343bde74f82396ca", [:mix], [], "hexpm", "0ae7d5a0b04a8a60caf7a39fcf3ec476f35cc2cc16c05abea730d3ce6ac6c826"},
@ -45,28 +45,28 @@
"nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"},
"nimble_pool": {:hex, :nimble_pool, "0.2.6", "91f2f4c357da4c4a0a548286c84a3a28004f68f05609b4534526871a22053cde", [:mix], [], "hexpm", "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"},
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
"phoenix": {:hex, :phoenix, "1.6.6", "281c8ce8dccc9f60607346b72cdfc597c3dde134dd9df28dff08282f0b751754", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "807bd646e64cd9dc83db016199715faba72758e6db1de0707eef0a2da4924364"},
"phoenix": {:hex, :phoenix, "1.6.9", "648e660040cdc758c5401972e0f592ce622d4ce9cd16d2d9c33dda32d0c9f7fa", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "be2fe497597d6bf297dcbf9f4416b4929dbfbdcc25edc1acf6d4dcaecbe898a6"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
"phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.6.5", "1495bb014be12c9a9252eca04b9af54246f6b5c1e4cd1f30210cd00ec540cf8e", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.3", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.7", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "ef4fa50dd78364409039c99cf6f98ab5209b4c5f8796c17f4db118324f0db852"},
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"},
"phoenix_live_view": {:hex, :phoenix_live_view, "0.17.7", "05a42377075868a678d446361effba80cefef19ab98941c01a7a4c7560b29121", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.9 or ~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "25eaf41028eb351b90d4f69671874643a09944098fefd0d01d442f40a6091b6f"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"},
"phoenix_live_view": {:hex, :phoenix_live_view, "0.17.9", "36b5aa812bc3ccd64c9630f6b3234d9ea21105493237e927aae19d0ba758f0db", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f7ebc3e0ba0c5f6b6996ed6c901ddbfdaba59a6d09b569e7cb2f2f7d693b4455"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
"phoenix_view": {:hex, :phoenix_view, "1.1.2", "1b82764a065fb41051637872c7bd07ed2fdb6f5c3bd89684d4dca6e10115c95a", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "7ae90ad27b09091266f6adbb61e1d2516a7c3d7062c6789d46a7554ec40f3a56"},
"picosat_elixir": {:hex, :picosat_elixir, "0.2.1", "407dcb90755167fd9e3311b60565ff32ed0d234010363406c07cdb4175b95bc5", [:make, :mix], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "68f4bdb2ac3b594209e54625d3d58c9e2e98b90f2ec8e03235f66e88c9eda5fe"},
"plug": {:hex, :plug, "1.13.4", "addb6e125347226e3b11489e23d22a60f7ab74786befb86c14f94fb5f23ca9a4", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "06114c1f2a334212fe3ae567dbb3b1d29fd492c1a09783d52f3d489c1a6f4cf2"},
"plug": {:hex, :plug, "1.13.6", "187beb6b67c6cec50503e940f0434ea4692b19384d47e5fdfd701e93cadb4cc2", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "02b9c6b9955bce92c829f31d6284bf53c591ca63c4fb9ff81dfd0418667a34ff"},
"plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"},
"plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
"postgrex": {:hex, :postgrex, "0.16.2", "0f83198d0e73a36e8d716b90f45f3bde75b5eebf4ade4f43fa1f88c90a812f74", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "a9ea589754d9d4d076121090662b7afe155b374897a6550eb288f11d755acfa0"},
"postgrex": {:hex, :postgrex, "0.16.3", "fac79a81a9a234b11c44235a4494d8565303fa4b9147acf57e48978a074971db", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "aeaae1d2d1322da4e5fe90d241b0a564ce03a3add09d7270fb85362166194590"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"req": {:hex, :req, "0.2.1", "5d4ee7bc6666cd4d77e95f89ce75ca0ca73b6a25eeebbe2e7bc60cdd56d73865", [:mix], [{:finch, "~> 0.9.1", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}], "hexpm", "ababd5c8a334848bde2bc3c2f518df22211c8533d863d15bfefa04796abc3633"},
"sourceror": {:hex, :sourceror, "0.10.0", "a6a85d8acc874df59bedb7497374f8f7517e4d54a5805da903ff31aaee14a1a7", [:mix], [], "hexpm", "ddd94d23d96ac949696616eb89cecac977dfed7ecdfac6bbd3f83617e4daea28"},
"sourceror": {:hex, :sourceror, "0.11.1", "1b80efe84330beefb6b3da95b75c1e1cdefe9dc785bf4c5064fae251a8af615c", [:mix], [], "hexpm", "22b6828ee5572f6cec75cc6357f3ca6c730a02954cef0302c428b3dba31e5e74"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
"stemmer": {:hex, :stemmer, "1.1.0", "71221331ced40832b47e6989a12dd9de1b15c982043d1014742be83c34ec9e79", [:mix], [], "hexpm", "0cb5faf73476b84500e371ff39fd9a494f60ab31d991689c1cd53b920556228f"},
"surface": {:hex, :surface, "0.7.3", "104dbb22d828a63a9ef45edf65c1f47fa4aedbcfb5478f2cafbe649586b02a58", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.4", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:sourceror, "~> 0.9", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "ab4aa36f767042dc822b28ba0fb455bfa2cca054c7305a6cc113597ab81726e2"},
"surface": {:hex, :surface, "0.7.4", "ce9cf98a11e6572008d82b6dd1dd25fd90966d69cc72a06d69058ef3e7063df8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.4", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:sourceror, "~> 0.9", [hex: :sourceror, repo: "hexpm", optional: false]}], "hexpm", "052c2a9a35e260339ec0f9bbc667224993e7e2805c36409736f673ffe7d486ac"},
"surface_heroicons": {:hex, :surface_heroicons, "0.6.0", "04e171843439d2d52c868f8adf5294c49505f504a74a0200179e49c447d6f354", [:mix], [{:surface, ">= 0.5.0", [hex: :surface, repo: "hexpm", optional: false]}], "hexpm", "1136c88a8de44a63c050cec9b0b64f771127dfd96feabab4cd0bde8b6b727ba2"},
"swoosh": {:hex, :swoosh, "1.6.3", "598d3f07641004bedb3eede40057760ae18be1073cff72f079ca1e1fc9cd97b9", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "81ff9d7c7c4005a57465a7eb712edd71db51829aef94c8a34c30c5b9e9964adf"},
"telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"},
"swoosh": {:hex, :swoosh, "1.6.6", "6018c6f4659ac0b4f30684982993b7812b2bb97436d39f76fcfa8c9e3ae74f85", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e92c7206efd442f08484993676ab072afab2f2bb1e87e604230bb1183c5980de"},
"telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [:rebar3], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
"timex": {:hex, :timex, "3.7.7", "3ed093cae596a410759104d878ad7b38e78b7c2151c6190340835515d4a46b8a", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "0ec4b09f25fe311321f9fc04144a7e3affe48eb29481d7a5583849b6c4dfa0a7"},

View file

@ -0,0 +1,42 @@
defmodule AshHq.Repo.Migrations.MigrateResources6 do
@moduledoc """
Updates resources based on their most recent snapshots.
This file was autogenerated with `mix ash_postgres.generate_migrations`
"""
use Ecto.Migration
def up do
alter table(:library_versions) do
remove :processed
remove :data
end
alter table(:libraries) do
remove :description
modify :track_branches, {:array, :text}, default: nil
end
alter table(:functions) do
modify :heads, {:array, :text}, default: nil
end
end
def down do
alter table(:functions) do
modify :heads, {:array, :text}, default: []
end
alter table(:libraries) do
modify :track_branches, {:array, :text}, default: []
add :description, :text
end
alter table(:library_versions) do
add :data, :map
add :processed, :boolean, default: false
end
end
end

View file

@ -15,5 +15,5 @@ AshHq.Docs.Library.create!(%{name: "ash", display_name: "Ash", track_branches: [
AshHq.Docs.Library.create!(%{
name: "ash_postgres",
display_name: "AshPostgres",
track_branches: ["master"]
track_branches: ["main"]
})

View file

@ -0,0 +1,149 @@
{
"attributes": [
{
"allow_nil?": false,
"default": "fragment(\"uuid_generate_v4()\")",
"generated?": false,
"primary_key?": true,
"references": null,
"size": null,
"source": "id",
"type": "uuid"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "name",
"type": "text"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "arity",
"type": "bigint"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "type",
"type": "text"
},
{
"allow_nil?": true,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "heads",
"type": [
"array",
"text"
]
},
{
"allow_nil?": false,
"default": "\"\"",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "doc",
"type": "text"
},
{
"allow_nil?": true,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "doc_html",
"type": "text"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "order",
"type": "bigint"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": {
"destination_field": "id",
"destination_field_default": null,
"destination_field_generated": null,
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"name": "functions_library_version_id_fkey",
"on_delete": "delete",
"on_update": null,
"schema": "public",
"table": "library_versions"
},
"size": null,
"source": "library_version_id",
"type": "uuid"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": {
"destination_field": "id",
"destination_field_default": null,
"destination_field_generated": null,
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"name": "functions_module_id_fkey",
"on_delete": null,
"on_update": null,
"schema": "public",
"table": "modules"
},
"size": null,
"source": "module_id",
"type": "uuid"
}
],
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"has_create_action": true,
"hash": "15E95E5428C82FC8A1A31C846CCC1B55ECF3C1957E6399D684E4EEE3C9DD16F5",
"identities": [],
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"repo": "Elixir.AshHq.Repo",
"schema": null,
"table": "functions"
}

View file

@ -0,0 +1,61 @@
{
"attributes": [
{
"allow_nil?": false,
"default": "fragment(\"uuid_generate_v4()\")",
"generated?": false,
"primary_key?": true,
"references": null,
"size": null,
"source": "id",
"type": "uuid"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "name",
"type": "text"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "display_name",
"type": "text"
},
{
"allow_nil?": true,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "track_branches",
"type": [
"array",
"text"
]
}
],
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"has_create_action": true,
"hash": "937C265361A65909A2C903124CEB4E810B50634F4FB7420325AD9A487C954B5B",
"identities": [],
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"repo": "Elixir.AshHq.Repo",
"schema": null,
"table": "libraries"
}

View file

@ -0,0 +1,92 @@
{
"attributes": [
{
"allow_nil?": false,
"default": "fragment(\"uuid_generate_v4()\")",
"generated?": false,
"primary_key?": true,
"references": null,
"size": null,
"source": "id",
"type": "uuid"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "version",
"type": "text"
},
{
"allow_nil?": false,
"default": "\"\"",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "doc",
"type": "text"
},
{
"allow_nil?": true,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": null,
"size": null,
"source": "doc_html",
"type": "text"
},
{
"allow_nil?": false,
"default": "nil",
"generated?": false,
"primary_key?": false,
"references": {
"destination_field": "id",
"destination_field_default": null,
"destination_field_generated": null,
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"name": "library_versions_library_id_fkey",
"on_delete": null,
"on_update": null,
"schema": "public",
"table": "libraries"
},
"size": null,
"source": "library_id",
"type": "uuid"
}
],
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"has_create_action": true,
"hash": "9156E7D306BB40CFFD32BB0968EE53D2F86DA0BC5AAB860F63C878B9636001FD",
"identities": [
{
"base_filter": null,
"index_name": "library_versions_unique_version_for_library_index",
"keys": [
"library_id",
"version"
],
"name": "unique_version_for_library"
}
],
"multitenancy": {
"attribute": null,
"global": null,
"strategy": null
},
"repo": "Elixir.AshHq.Repo",
"schema": null,
"table": "library_versions"
}