improvement: remove sqlite

This commit is contained in:
Zach Daniel 2024-01-12 12:43:25 -05:00
parent 87546cc7ca
commit 86c96c31a9
57 changed files with 1837 additions and 215 deletions

View file

@ -4,7 +4,6 @@
:phoenix,
:ash,
:ash_postgres,
:ash_sqlite,
:ash_graphql,
:surface,
:ash_admin,

View file

@ -18,7 +18,6 @@ RUN apt-get install -y esl-erlang
RUN apt-get install -y apt-transport-https
RUN apt-get install -y ca-certificates
RUN apt-get install -y fuse3 libfuse3-dev libglib2.0-dev
RUN apt-get install -y sqlite3
COPY --from=flyio/litefs:0.5 /usr/local/bin/litefs /usr/local/bin/litefs
ENV NODE_MAJOR=16
RUN mkdir -p /etc/apt/keyrings

View file

@ -8,7 +8,7 @@
import Config
config :ash_hq,
ecto_repos: [AshHq.Repo, AshHq.SqliteRepo]
ecto_repos: [AshHq.Repo]
config :ash, allow_flow: true

View file

@ -22,12 +22,6 @@ config :git_ops,
manage_readme_version: "README.md",
version_tag_prefix: "v"
config :ash_hq, AshHq.SqliteRepo,
database: Path.join(__DIR__, "../ash-hq.db"),
port: 5432,
show_sensitive_data_on_connection_error: true,
pool_size: 10
config :ash_hq, :show_search_ranking, true
secret_key_base = "FxKFwVYhDFah3bLLXXqWdpdcLf5e5T1UyVM6XQp7kCt/Reg5yuAEI3upAVDRoP5e"

View file

@ -21,7 +21,7 @@ config :ash_hq, :analytics?, true
config :ash_hq, :download_ua_on_start, true
if config_env() == :prod do
config :ash_hq, AshHq.SqliteRepo,
config :ash_hq, AshHq.Repo,
database: "/litefs/db",
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
end

View file

@ -26,7 +26,7 @@ config :ash_hq, AshHqWeb.Endpoint,
secret_key_base: secret_key_base,
server: false
config :ash_hq, AshHq.SqliteRepo,
config :ash_hq, AshHq.Repo,
database: Path.join(__DIR__, "../ash-hq#{System.get_env("MIX_TEST_PARTITION")}.db"),
pool_size: 10

View file

@ -9,10 +9,6 @@ processes = []
[env]
RELEASE_COOKIE = "VsipafjUVIYVpiYiljPg6DNZB8XiSnEf4zLi8WOf9bAU0XK7HuHQqA=="
[mounts]
source = "litefs"
destination = "/var/lib/litefs"
[[services]]
internal_port = 4000
protocol = "tcp"

View file

@ -22,7 +22,6 @@ defmodule AshHq.Application do
AshHq.Vault,
# Start the Ecto repository
AshHq.Repo,
AshHq.SqliteRepo,
# Start the Telemetry supervisor
AshHqWeb.Telemetry,
# Start the PubSub system

View file

@ -2,12 +2,12 @@ defmodule AshHq.Docs.Dsl do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "dsls"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete
@ -17,24 +17,6 @@ defmodule AshHq.Docs.Dsl do
migration_defaults optional_args: "[]"
end
search do
doc_attribute :doc
load_for_search [
:extension_module,
:library_name
]
weight_content(0.2)
sanitized_name_attribute :sanitized_path
use_path_for_name? true
end
render_markdown do
render_attributes doc: :doc_html
end
actions do
defaults [:update, :destroy]
@ -65,6 +47,24 @@ defmodule AshHq.Docs.Dsl do
end
end
search do
doc_attribute :doc
load_for_search [
:extension_module,
:library_name
]
weight_content(0.2)
sanitized_name_attribute :sanitized_path
use_path_for_name? true
end
render_markdown do
render_attributes doc: :doc_html
end
attributes do
uuid_primary_key :id

View file

@ -2,11 +2,11 @@ defmodule AshHq.Docs.Extension do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer
data_layer: AshPostgres.DataLayer
sqlite do
postgres do
table "extensions"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete

View file

@ -2,18 +2,39 @@ defmodule AshHq.Docs.Function do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "functions"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete
end
end
actions do
defaults [:update, :destroy]
read :read do
primary? true
pagination offset?: true,
keyset?: true,
countable: true,
default_limit: 25,
required?: false
end
create :create do
primary? true
argument :library_version, :uuid
change manage_relationship(:library_version, type: :append_and_remove)
end
end
search do
doc_attribute :doc
@ -35,27 +56,6 @@ defmodule AshHq.Docs.Function do
header_ids? false
end
actions do
defaults [:update, :destroy]
read :read do
primary? true
pagination offset?: true,
keyset?: true,
countable: true,
default_limit: 25,
required?: false
end
create :create do
primary? true
argument :library_version, :uuid
change manage_relationship(:library_version, type: :append_and_remove)
end
end
attributes do
uuid_primary_key :id

View file

@ -1,7 +1,7 @@
defmodule AshHq.Docs.Guide do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [
AshHq.Docs.Extensions.Search,
AshHq.Docs.Extensions.RenderMarkdown,
@ -9,8 +9,8 @@ defmodule AshHq.Docs.Guide do
AshAdmin.Resource
]
sqlite do
repo AshHq.SqliteRepo
postgres do
repo AshHq.Repo
table "guides"
references do
@ -18,6 +18,31 @@ defmodule AshHq.Docs.Guide do
end
end
actions do
defaults [:create, :update, :destroy]
read :read do
primary? true
pagination keyset?: true,
offset?: true,
countable: true,
default_limit: 25,
required?: false
end
read :read_for_version do
argument :library_versions, {:array, :uuid} do
allow_nil? false
constraints max_length: 20, min_length: 1
end
pagination offset?: true, countable: true, default_limit: 25, required?: false
filter expr(library_version.id in ^arg(:library_versions))
end
end
search do
doc_attribute :text
show_docs_on [:sanitized_name, :sanitized_route]
@ -46,31 +71,6 @@ defmodule AshHq.Docs.Guide do
end
end
actions do
defaults [:create, :update, :destroy]
read :read do
primary? true
pagination keyset?: true,
offset?: true,
countable: true,
default_limit: 25,
required?: false
end
read :read_for_version do
argument :library_versions, {:array, :uuid} do
allow_nil? false
constraints max_length: 20, min_length: 1
end
pagination offset?: true, countable: true, default_limit: 25, required?: false
filter expr(library_version.id in ^arg(:library_versions))
end
end
attributes do
uuid_primary_key :id

View file

@ -75,7 +75,7 @@ defmodule AshHq.Docs.Library.Actions.Import do
Ash.Query.for_read(AshHq.Docs.LibraryVersion, :read)
|> Ash.Query.filter(library_id == ^library.id and version == ^version)
) do
AshHq.SqliteRepo.transaction(
AshHq.Repo.transaction(
fn ->
library_version =
AshHq.Docs.LibraryVersion.build!(
@ -107,7 +107,7 @@ defmodule AshHq.Docs.Library.Actions.Import do
|> Ash.Query.data_layer_query()
|> case do
{:ok, query} ->
AshHq.SqliteRepo.delete_all(query)
AshHq.Repo.delete_all(query)
other ->
raise "bad match #{inspect(other)}"

View file

@ -1,12 +1,12 @@
defmodule AshHq.Docs.Library do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshOban]
sqlite do
postgres do
table "libraries"
repo AshHq.SqliteRepo
repo AshHq.Repo
migration_defaults module_prefixes: "[]", skip_versions: "[]"
end

View file

@ -2,17 +2,12 @@ defmodule AshHq.Docs.LibraryVersion do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "library_versions"
repo AshHq.SqliteRepo
end
search do
name_attribute :version
load_for_search [:library_name, :library_display_name]
repo AshHq.Repo
end
actions do
@ -91,6 +86,11 @@ defmodule AshHq.Docs.LibraryVersion do
end
end
search do
name_attribute :version
load_for_search [:library_name, :library_display_name]
end
attributes do
uuid_primary_key :id

View file

@ -2,36 +2,18 @@ defmodule AshHq.Docs.MixTask do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "mix_tasks"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete
end
end
search do
doc_attribute :doc
load_for_search [
:version_name,
:library_name,
:library_id
]
item_type "Mix Task"
type "Mix Tasks"
end
render_markdown do
render_attributes doc: :doc_html
end
actions do
defaults [:update, :destroy]
@ -53,6 +35,24 @@ defmodule AshHq.Docs.MixTask do
end
end
search do
doc_attribute :doc
load_for_search [
:version_name,
:library_name,
:library_id
]
item_type "Mix Task"
type "Mix Tasks"
end
render_markdown do
render_attributes doc: :doc_html
end
attributes do
uuid_primary_key :id

View file

@ -2,36 +2,18 @@ defmodule AshHq.Docs.Module do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "modules"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete
end
end
search do
doc_attribute :doc
weight_content(0.5)
load_for_search [
:version_name,
:library_name,
:library_id
]
type "Code"
end
render_markdown do
render_attributes doc: :doc_html
end
actions do
defaults [:update, :destroy]
@ -56,6 +38,24 @@ defmodule AshHq.Docs.Module do
end
end
search do
doc_attribute :doc
weight_content(0.5)
load_for_search [
:version_name,
:library_name,
:library_id
]
type "Code"
end
render_markdown do
render_attributes doc: :doc_html
end
attributes do
uuid_primary_key :id

View file

@ -2,12 +2,12 @@ defmodule AshHq.Docs.Option do
@moduledoc false
use Ash.Resource,
data_layer: AshSqlite.DataLayer,
data_layer: AshPostgres.DataLayer,
extensions: [AshHq.Docs.Extensions.Search, AshHq.Docs.Extensions.RenderMarkdown]
sqlite do
postgres do
table "options"
repo AshHq.SqliteRepo
repo AshHq.Repo
references do
reference :library_version, on_delete: :delete
@ -15,24 +15,6 @@ defmodule AshHq.Docs.Option do
end
end
search do
doc_attribute :doc
load_for_search [
:extension_module,
:library_name
]
sanitized_name_attribute :sanitized_path
use_path_for_name? true
add_name_to_path? false
show_docs_on :dsl_sanitized_path
end
render_markdown do
render_attributes doc: :doc_html
end
actions do
defaults [:update, :destroy]
@ -59,6 +41,24 @@ defmodule AshHq.Docs.Option do
end
end
search do
doc_attribute :doc
load_for_search [
:extension_module,
:library_name
]
sanitized_name_attribute :sanitized_path
use_path_for_name? true
add_name_to_path? false
show_docs_on :dsl_sanitized_path
end
render_markdown do
render_attributes doc: :doc_html
end
attributes do
uuid_primary_key :id

View file

@ -6,7 +6,6 @@ defmodule AshHq.Release do
@app :ash_hq
def migrate do
load_app()
System.cmd("sqlite3", ["litefs/db", "VACUUM;"])
for repo <- repos() do
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))

View file

@ -1,5 +0,0 @@
defmodule AshHq.SqliteRepo do
@moduledoc "Ecto repo for interacting with Sqlite"
use AshSqlite.Repo,
otp_app: :ash_hq
end

View file

@ -186,6 +186,10 @@ defmodule AshHqWeb.AppViewLive do
{:noreply, assign(socket, :page_title, "Ash Framework - #{title}")}
end
def handle_info(_, socket) do
{:noreply, socket}
end
def handle_event("change-types", %{"types" => types}, socket) do
types =
types

View file

@ -41,7 +41,6 @@ defmodule AshHq.MixProject do
[
{:ash, github: "ash-project/ash", override: true},
{:ash_postgres, github: "ash-project/ash_postgres"},
{:ash_sqlite, github: "ash-project/ash_sqlite"},
{:ash_admin, github: "ash-project/ash_admin"},
{:ash_phoenix, github: "ash-project/ash_phoenix", override: true},
{:ash_graphql, github: "ash-project/ash_graphql"},
@ -141,13 +140,11 @@ defmodule AshHq.MixProject do
setup: [
"ash_postgres.create",
"ash_postgres.migrate",
"ash_sqlite.create",
"ash_sqlite.migrate",
"seed"
],
reset: ["drop", "setup"],
credo: "credo --strict",
drop: ["ash_postgres.drop", "ash_sqlite.drop"],
drop: ["ash_postgres.drop"],
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
sobelow: ["sobelow --skip -i Config.Headers,Config.CSRFRoute"],
"assets.deploy": [

View file

@ -16,12 +16,10 @@
"ash_oban": {:git, "https://github.com/ash-project/ash_oban.git", "36a441f78195f4f4e656f6a0cf268084704ff174", []},
"ash_phoenix": {:git, "https://github.com/ash-project/ash_phoenix.git", "35e4d2931e1664383c9a085a90f846e58986c8c8", []},
"ash_postgres": {:git, "https://github.com/ash-project/ash_postgres.git", "40c1a13652dc65406692ffbcaf6d78d1d8aa07c4", []},
"ash_sqlite": {:git, "https://github.com/ash-project/ash_sqlite.git", "75ffda1076a81cf1793fe0a170c1df73021e83c9", []},
"assent": {:hex, :assent, "0.2.7", "aa68f68e577077c091ce722bff8fe1ae56b95b274bb8107f7a5406cc15a65da7", [:mix], [{:certifi, ">= 0.0.0", [hex: :certifi, repo: "hexpm", optional: true]}, {:finch, "~> 0.15", [hex: :finch, repo: "hexpm", optional: true]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: true]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:ssl_verify_fun, ">= 0.0.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: true]}], "hexpm", "08106af439de4f9de114c0334de4c848de7cfbe53a5a52d342a784c4f6bc86f3"},
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"},
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
"castore": {:hex, :castore, "1.0.4", "ff4d0fb2e6411c0479b1d965a814ea6d00e51eb2f58697446e9c41a97d940b28", [:mix], [], "hexpm", "9418c1b8144e11656f0be99943db4caf04612e3eaecefb5dae9a2a87565584f8"},
"cc_precompiler": {:hex, :cc_precompiler, "0.1.8", "933a5f4da3b19ee56539a076076ce4d7716d64efc8db46fd066996a7e46e2bfd", [:mix], [{:elixir_make, "~> 0.7.3", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "176bdf4366956e456bf761b54ad70bc4103d0269ca9558fd7cee93d1b3f116db"},
"certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
"chacha20": {:hex, :chacha20, "1.0.4", "0359d8f9a32269271044c1b471d5cf69660c362a7c61a98f73a05ef0b5d9eb9e", [:mix], [], "hexpm", "2027f5d321ae9903f1f0da7f51b0635ad6b8819bc7fe397837930a2011bc2349"},
"cloak": {:hex, :cloak, "1.1.2", "7e0006c2b0b98d976d4f559080fabefd81f0e0a50a3c4b621f85ceeb563e80bb", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "940d5ac4fcd51b252930fd112e319ea5ae6ab540b722f3ca60a85666759b9585"},
@ -45,7 +43,6 @@
"ecto": {:hex, :ecto, "3.10.3", "eb2ae2eecd210b4eb8bece1217b297ad4ff824b4384c0e3fdd28aaf96edd6135", [: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", "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.10", "e14d400930f401ca9f541b3349212634e44027d7f919bbb71224d7ac0d0e8acd", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15.7 or ~> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "505e8cd81e4f17c090be0f99e92b1b3f0fd915f98e76965130b8ccfb891e7088"},
"ecto_sql": {:hex, :ecto_sql, "3.10.2", "6b98b46534b5c2f8b8b5f03f126e75e2a73c64f3c071149d32987a5378b0fdbd", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.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", "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007"},
"ecto_sqlite3": {:hex, :ecto_sqlite3, "0.12.0", "9ee845ac45a76e3c5c0fe65898f3538f5b0969912a95f0beef3d4ae8e63f6a06", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:exqlite, "~> 0.9", [hex: :exqlite, repo: "hexpm", optional: false]}], "hexpm", "4eaf8550df1fd0043bcf039a5dce407fd8afc30a115ced173fe6b9815eeedb55"},
"ed25519": {:hex, :ed25519, "1.4.1", "479fb83c3e31987c9cad780e6aeb8f2015fb5a482618cdf2a825c9aff809afc4", [:mix], [], "hexpm", "0dacb84f3faa3d8148e81019ca35f9d8dcee13232c32c9db5c2fb8ff48c80ec7"},
"eflame": {:hex, :eflame, "1.0.1", "0664d287e39eef3c413749254b3af5f4f8b00be71c1af67d325331c4890be0fc", [:mix], [], "hexpm", "e0b08854a66f9013129de0b008488f3411ae9b69b902187837f994d7a99cf04e"},
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
@ -56,7 +53,6 @@
"ex_check": {:hex, :ex_check, "0.14.0", "d6fbe0bcc51cf38fea276f5bc2af0c9ae0a2bb059f602f8de88709421dae4f0e", [:mix], [], "hexpm", "8a602e98c66e6a4be3a639321f1f545292042f290f91fa942a285888c6868af0"},
"ex_doc": {:hex, :ex_doc, "0.28.5", "3e52a6d2130ce74d096859e477b97080c156d0926701c13870a4e1f752363279", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "d2c4b07133113e9aa3e9ba27efb9088ba900e9e51caa383919676afdf09ab181"},
"excoveralls": {:hex, :excoveralls, "0.14.6", "610e921e25b180a8538229ef547957f7e04bd3d3e9a55c7c5b7d24354abbba70", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "0eceddaa9785cfcefbf3cd37812705f9d8ad34a758e513bb975b081dce4eb11e"},
"exqlite": {:hex, :exqlite, "0.15.0", "efa87268ffb648a29d887d6b5641cea6d0c7cdc09b83e92a34377ab5b96913c1", [:make, :mix], [{:cc_precompiler, "~> 0.1", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.7", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "bf704989342b99ea5e1621495fb94fc772516206550d3b2465a1de3d89345853"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"},
"flame": {:hex, :flame, "0.1.4", "9eea29aa405eb3114c83a18e32cf6f6833814d5844b751df63c4692364870e4e", [:mix], [{:req, "~> 0.4.5", [hex: :req, repo: "hexpm", optional: false]}], "hexpm", "6a4f267c7868b60350198520ceef2651d07440787c9d597f969b74d78c5d25c7"},

View file

@ -0,0 +1,204 @@
defmodule AshHq.Repo.Migrations.MigrateResources60 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
execute("""
ALTER TABLE dsls
DROP COLUMN searchable
""")
execute("""
ALTER TABLE extensions
DROP COLUMN searchable
""")
execute("""
ALTER TABLE functions
DROP COLUMN searchable
""")
execute("""
ALTER TABLE guides
DROP COLUMN searchable
""")
execute("""
ALTER TABLE library_versions
DROP COLUMN searchable
""")
execute("""
ALTER TABLE mix_tasks
DROP COLUMN searchable
""")
execute("""
ALTER TABLE modules
DROP COLUMN searchable
""")
execute("""
ALTER TABLE options
DROP COLUMN searchable
""")
drop_if_exists(index(:options, ["searchable"], name: "options_searchable_index"))
drop_if_exists(index(:modules, ["searchable"], name: "modules_searchable_index"))
drop_if_exists(index(:mix_tasks, ["searchable"], name: "mix_tasks_searchable_index"))
drop_if_exists(
index(:library_versions, ["searchable"], name: "library_versions_searchable_index")
)
drop_if_exists(index(:guides, ["searchable"], name: "guides_searchable_index"))
drop_if_exists(index(:functions, ["searchable"], name: "functions_searchable_index"))
drop_if_exists(index(:extensions, ["searchable"], name: "extensions_searchable_index"))
alter table(:extensions) do
remove(:order)
remove(:type)
remove(:doc_html)
remove(:doc)
remove(:default_for_target)
remove(:target)
remove(:name)
remove(:sanitized_name)
end
drop_if_exists(
unique_index(:extensions, [:library_version_id, :name],
name: "extensions_unique_name_by_library_version_index"
)
)
drop_if_exists(index(:dsls, ["searchable"], name: "dsls_searchable_index"))
end
def down do
create index(:dsls, ["searchable"], using: "GIN")
create unique_index(:extensions, [:library_version_id, :name],
name: "extensions_unique_name_by_library_version_index"
)
alter table(:extensions) do
add(:sanitized_name, :text, null: false)
add(:name, :text, null: false)
add(:target, :text)
add(:default_for_target, :boolean, default: false)
add(:doc, :text, null: false, default: "")
add(:doc_html, :text)
add(:type, :text, null: false)
add(:order, :bigint, null: false)
end
create index(:extensions, ["searchable"], using: "GIN")
create index(:functions, ["searchable"], using: "GIN")
create index(:guides, ["searchable"], using: "GIN")
create index(:library_versions, ["searchable"], using: "GIN")
create index(:mix_tasks, ["searchable"], using: "GIN")
create index(:modules, ["searchable"], using: "GIN")
create index(:options, ["searchable"], using: "GIN")
execute("""
ALTER TABLE options
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
execute("""
ALTER TABLE modules
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
execute("""
ALTER TABLE mix_tasks
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
execute("""
ALTER TABLE library_versions
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', version), 'A')
) STORED;
""")
execute("""
ALTER TABLE guides
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', text), 'D')
) STORED;
""")
execute("""
ALTER TABLE functions
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
execute("""
ALTER TABLE extensions
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
execute("""
ALTER TABLE dsls
ADD COLUMN searchable tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('english', name), 'A') ||
setweight(to_tsvector('english', doc), 'D')
) STORED;
""")
end
end

View file

@ -0,0 +1,288 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_path",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "requires_extension",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "doc",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "doc_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "[]",
"size": null,
"type": [
"array",
"text"
],
"source": "imports",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": [
"array",
"text"
],
"source": "examples",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": [
"array",
"text"
],
"source": "args",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "[]",
"size": null,
"type": [
"array",
"text"
],
"source": "optional_args",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "map",
"source": "arg_defaults",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": [
"array",
"text"
],
"source": "path",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "recursive_as",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "type",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "dsls_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "extension_id",
"references": {
"name": "dsls_extension_id_fkey",
"table": "extensions",
"on_delete": null,
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "dsl_id",
"references": {
"name": "dsls_dsl_id_fkey",
"table": "dsls",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "dsls",
"hash": "22415319BE58AA8F9C3BFCD3D8FDAA9B582B70624F8FB5C318D3B5183445475C",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,87 @@
{
"attributes": [
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "module",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "extensions_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "extensions",
"hash": "342949CF68C6CCA6EE1C76E5ABA5AEC7C63E064927FF427DCA0B2DE4A255271B",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,231 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "file",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "line",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "arity",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "type",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "[]",
"size": null,
"type": [
"array",
"text"
],
"source": "heads",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "[]",
"size": null,
"type": [
"array",
"text"
],
"source": "heads_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "doc",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "doc_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "deprecated",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "functions_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "module_id",
"references": {
"name": "functions_module_id_fkey",
"table": "modules",
"on_delete": null,
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "functions",
"hash": "FA5C6C66BBB9F232D2675255BEA6C08D52F10351BA1895202F271891AB1E5858",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,167 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "text",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "text_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "\"Topics\"",
"size": null,
"type": "text",
"source": "category",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "route",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_route",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "false",
"size": null,
"type": "boolean",
"source": "default",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "guides_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "guides",
"hash": "14F352DA23D0F993BE7ECE03B0CC6903AE9597D5F95F7B0ABF948E6677073810",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,117 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_version",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "version",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "false",
"size": null,
"type": "boolean",
"source": "hydrated",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_id",
"references": {
"name": "library_versions_library_id_fkey",
"table": "libraries",
"on_delete": null,
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "library_versions",
"hash": "C2D22CB8C4D6FA3C745114FBF4A9635E314D20C627B98BA022EC917057518CAF",
"repo": "Elixir.AshHq.Repo",
"identities": [
{
"name": "unique_version_for_library",
"keys": [
"version",
"library_id"
],
"base_filter": null,
"index_name": "library_versions_unique_version_for_library_index"
}
],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,157 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "\"Misc\"",
"size": null,
"type": "text",
"source": "category",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "file",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "module_name",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "doc",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "doc_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "mix_tasks_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "mix_tasks",
"hash": "EF5AAD30BAE9153E60C63783843D1F170D19C60E0208954C967C52858E861F35",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,147 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "\"Misc\"",
"size": null,
"type": "text",
"source": "category",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "file",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "doc",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "doc_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "modules_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "modules",
"hash": "7B1D68F9A1545DD52FC39DEF646BD47D0DAE8C345DBC4B8B0274800B3E1E1D1D",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -0,0 +1,246 @@
{
"attributes": [
{
"default": "nil",
"size": null,
"type": "text",
"source": "sanitized_path",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"uuid_generate_v4()\")",
"size": null,
"type": "uuid",
"source": "id",
"references": null,
"allow_nil?": false,
"primary_key?": true,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "name",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "type",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "\"\"",
"size": null,
"type": "text",
"source": "doc",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "doc_html",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "false",
"size": null,
"type": "boolean",
"source": "required",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "argument_index",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "%{}",
"size": null,
"type": "map",
"source": "links",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "text",
"source": "default",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": [
"array",
"text"
],
"source": "path",
"references": null,
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "bigint",
"source": "order",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "inserted_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "fragment(\"now()\")",
"size": null,
"type": "utc_datetime_usec",
"source": "updated_at",
"references": null,
"allow_nil?": false,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "dsl_id",
"references": {
"name": "options_dsl_id_fkey",
"table": "dsls",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "library_version_id",
"references": {
"name": "options_library_version_id_fkey",
"table": "library_versions",
"on_delete": "delete",
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
},
{
"default": "nil",
"size": null,
"type": "uuid",
"source": "extension_id",
"references": {
"name": "options_extension_id_fkey",
"table": "extensions",
"on_delete": null,
"on_update": null,
"destination_attribute": "id",
"schema": "public",
"primary_key?": true,
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"deferrable": false,
"match_with": null,
"match_type": null,
"destination_attribute_default": null,
"destination_attribute_generated": null
},
"allow_nil?": true,
"primary_key?": false,
"generated?": false
}
],
"table": "options",
"hash": "C193F0FF2EA938991AB29989B4AAECCBF68B873843BE25F2128D41E65EE73DC9",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"schema": null,
"base_filter": null,
"check_constraints": [],
"custom_indexes": [],
"multitenancy": {
"global": null,
"strategy": null,
"attribute": null
},
"custom_statements": [],
"has_create_action": true
}

View file

@ -263,7 +263,7 @@
],
"table": "dsls",
"hash": "1F9579EE107DF7B8C1697382D5D26B103E514DC76F1F6ED574AE1D4D9A63D52A",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -274,4 +274,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -263,7 +263,7 @@
],
"table": "dsls",
"hash": "48AE588FFC6527FCB577BAF5BED1D2BC77DDFB5F77DDE0530068B2C551A0D8DE",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -148,7 +148,7 @@
],
"table": "extensions",
"hash": "85594B24618F7EC6EE267F52CF2D16401E54DB023649FDC9ADA49BA33FECB6B7",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [
{
"name": "unique_name_by_library_version",
@ -169,4 +169,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -148,7 +148,7 @@
],
"table": "extensions",
"hash": "B7E48389399B495B626A3B5DA3BD8DFB84020D6110AFC74C98282963D47532E1",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -98,7 +98,7 @@
],
"table": "extensions",
"hash": "D5A8C840F686B00B4BBF777766E090ABF33DF738E31C4B55C9A74021F6DE5F93",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"custom_indexes": [],
"custom_statements": [],
"multitenancy": {

View file

@ -88,7 +88,7 @@
],
"table": "extensions",
"hash": "434F994CE5D27E22BB6C339D676EE91C369BF6EB4A229A3572FB0E63F9C1D585",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"multitenancy": {
"global": null,

View file

@ -68,7 +68,7 @@
],
"table": "extensions",
"hash": "1AC8484F12B89285D069CA667A143EAEAE254A3242DF31B11951A459DCC23E10",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"strategy": null,

View file

@ -209,7 +209,7 @@
],
"table": "functions",
"hash": "95D436C4E7FFEAAFB97F1C986637213AE7BC0F86C2F10DC5A7988AFB375E32A6",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -220,4 +220,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -209,7 +209,7 @@
],
"table": "functions",
"hash": "19BEF85ED8D07D786EB4686B1920B0532A09E604A80F436BDFC314DF9DF87E1A",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -148,7 +148,7 @@
],
"table": "guides",
"hash": "25F122033820A577CE8A2BA71F5B82A32884B4FF50B844923CB2BE4D264428F5",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -159,4 +159,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -148,7 +148,7 @@
],
"table": "guides",
"hash": "D1E405AB450572FE202B233DF061DD74A52A4512692A321CDF57BF22736B6D7B",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -119,7 +119,7 @@
],
"table": "libraries",
"hash": "2731C131CB28C040C03C0E6BADE2779536AD7B1E9DA86C870B8DC2D14B2A5DD8",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [
{
"name": "unique_name",

View file

@ -119,7 +119,7 @@
],
"table": "libraries",
"hash": "E15F5D47277F5D12F1F2B4F5FC7F3E94B76D5423833044A6D18FD34FF6B2382A",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -88,7 +88,7 @@
],
"table": "library_versions",
"hash": "D491A51EE472E1A5DF2EA4F32E1D014DD937D10879FE2C694E726EDB8E871FFA",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [
{
"name": "unique_version_for_library",
@ -109,4 +109,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -88,7 +88,7 @@
],
"table": "library_versions",
"hash": "9D3B7DCCFD6D9DBE0CA3B5D44A9BD06741EDEBC133CFD67D979D50A248C3488D",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -138,7 +138,7 @@
],
"table": "mix_tasks",
"hash": "D3C538359FA20C7C0CC52FE78BCC1509231B5020985AAEA4E638587370012F33",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -149,4 +149,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -138,7 +138,7 @@
],
"table": "mix_tasks",
"hash": "B015AAFD4B61EA96B5305765B2F485F68013A330169D84AA079BBC20BAABA29C",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -128,7 +128,7 @@
],
"table": "modules",
"hash": "1E61E69895F51572F798E771261BD5545AC33F24BFD6F56498D82B6B2F8E1503",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -139,4 +139,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -128,7 +128,7 @@
],
"table": "modules",
"hash": "309E8CCA77F8E197373E7B87C09BF24DD1FC3E7E8C5ED8553E4899A5E7688399",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -221,7 +221,7 @@
],
"table": "options",
"hash": "22D8D77A5D911CB88F8C061E8B7E1AAEDF81742C1DBCDA8EE3757277B04C3F52",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"identities": [],
"custom_indexes": [],
"base_filter": null,
@ -232,4 +232,4 @@
"attribute": null
},
"has_create_action": true
}
}

View file

@ -221,7 +221,7 @@
],
"table": "options",
"hash": "72E5DAC306E485BE95931E83762B6BE8F7E6C2220AA3444803504ABF1ADA6E8D",
"repo": "Elixir.AshHq.SqliteRepo",
"repo": "Elixir.AshHq.Repo",
"multitenancy": {
"global": null,
"attribute": null,

View file

@ -1,4 +1,4 @@
defmodule AshHq.SqliteRepo.Migrations.MigrateResources1 do
defmodule AshHq.Repo.Migrations.MigrateResources1 do
@moduledoc """
Updates resources based on their most recent snapshots.

View file

@ -1,4 +1,4 @@
defmodule AshHq.SqliteRepo.Migrations.MigrateResources2 do
defmodule AshHq.Repo.Migrations.MigrateResources2 do
@moduledoc """
Updates resources based on their most recent snapshots.

View file

@ -1,4 +1,4 @@
defmodule AshHq.SqliteRepo.Migrations.MigrateResources3 do
defmodule AshHq.Repo.Migrations.MigrateResources3 do
@moduledoc """
Updates resources based on their most recent snapshots.

View file

@ -1,4 +1,4 @@
defmodule AshHq.SqliteRepo.Migrations.RemoveExtensionFields do
defmodule AshHq.Repo.Migrations.RemoveExtensionFields do
@moduledoc """
Updates resources based on their most recent snapshots.