Skip to content

Commit ce75528

Browse files
authored
chore: clean node db hooks from mdw (#619)
1 parent 0910e84 commit ce75528

File tree

4 files changed

+13
-104
lines changed

4 files changed

+13
-104
lines changed

config/config.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ config :ae_mdw, AeMdw.Db.RocksDb, data_dir: "#{node_root}/rel/aeternity/data/mdw
2727

2828
config :ae_plugin,
2929
node_root: node_root,
30-
"$aec_db_create_tables": {AeMdw.Db.Setup, :create_tables},
31-
"$aec_db_check_tables": {AeMdw.Db.Setup, :check_tables}
30+
"$aec_db_create_tables": {AeMdw.Db.NodeStub, :create_tables},
31+
"$aec_db_check_tables": {AeMdw.Db.NodeStub, :check_tables}
3232

3333
config :ae_mdw,
3434
sync: true,

lib/ae_mdw/application.ex

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ defmodule AeMdw.Application do
1010
"""
1111
alias AeMdw.Contract
1212
alias AeMdw.Db.Model
13-
alias AeMdw.Db.Stream, as: DbStream
1413
alias AeMdw.Db.Sync
1514
alias AeMdw.EtsCache
1615
alias AeMdw.Extract
@@ -29,7 +28,6 @@ defmodule AeMdw.Application do
2928
:lager.set_loglevel(:epoch_sync_lager_event, :lager_console_backend, :undefined, :error)
3029
:lager.set_loglevel(:lager_console_backend, :error)
3130

32-
init(:model_records)
3331
init(:node_records)
3432
init(:meta)
3533
init_public(:contract_cache)
@@ -74,9 +72,6 @@ defmodule AeMdw.Application do
7472
# |> Enum.map(&:code.load_abs(to_charlist(Path.rootname(&1))))
7573
# end
7674

77-
defp init(:model_records),
78-
do: Enum.each(Model.records(), &SmartRecord.new(Model, &1, Model.defaults(&1)))
79-
8075
defp init(:node_records) do
8176
{:ok, aeo_oracles_code} = Extract.AbsCode.module(:aeo_oracles)
8277
{:ok, aeo_query_code} = Extract.AbsCode.module(:aeo_query)
@@ -143,14 +138,6 @@ defmodule AeMdw.Application do
143138

144139
id_fields = id_field_type_map |> Map.keys() |> Enum.map(Util.compose(&to_string/1, &hd/1))
145140

146-
stream_mod = fn db_mod ->
147-
["AeMdw", "Db", "Model", tab] = Module.split(db_mod)
148-
# credo:disable-for-next-line
149-
Module.concat(DbStream, tab)
150-
end
151-
152-
collect_stream_mod = fn t, acc -> put_in(acc[t], stream_mod.(t)) end
153-
154141
tx_types = Map.keys(type_mod_map)
155142
tx_group = &("#{&1}" |> String.split("_") |> hd |> String.to_atom())
156143
tx_group_map = Enum.group_by(tx_types, tx_group)
@@ -196,7 +183,6 @@ defmodule AeMdw.Application do
196183
tx_types: [{[], MapSet.new(tx_types)}],
197184
tx_prefixes: [{[], MapSet.new(tx_types |> Enum.map(tx_prefix))}],
198185
id_prefixes: [{[], MapSet.new(Map.keys(id_prefix_type_map))}],
199-
stream_mod: Enum.reduce(Model.tables(), %{}, collect_stream_mod),
200186
tx_group: tx_group_map,
201187
tx_groups: [{[], MapSet.new(Map.keys(tx_group_map))}],
202188
id_type: id_type_map,

lib/ae_mdw/db/model.ex

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -676,26 +676,4 @@ defmodule AeMdw.Db.Model do
676676
def record(AeMdw.Db.Model.TargetKindIntTransferTx), do: :target_kind_int_transfer_tx
677677
def record(AeMdw.Db.Model.DeltaStat), do: :delta_stat
678678
def record(AeMdw.Db.Model.TotalStat), do: :total_stat
679-
def record(AeMdw.Db.Model.None), do: :none
680-
681-
#
682-
# Stub for Node-Mdw database management
683-
#
684-
@none_defaults [index: 0, value: 0]
685-
defrecord :none, @none_defaults
686-
687-
@spec tables() :: list(atom())
688-
def tables(), do: [AeMdw.Db.Model.None]
689-
690-
@spec records() :: list(atom())
691-
def records(), do: [:none]
692-
693-
@spec table(atom()) :: atom()
694-
def table(:none), do: AeMdw.Db.Model.None
695-
696-
@spec fields(atom()) :: list(atom())
697-
def fields(record), do: for({x, _} <- defaults(record), do: x)
698-
699-
@spec defaults(atom()) :: list()
700-
def defaults(:none), do: @none_defaults
701679
end

lib/ae_mdw/db/setup.ex

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,16 @@
1-
defmodule AeMdw.Db.Setup do
2-
require AeMdw.Db.Model
3-
alias AeMdw.Db.Model
1+
defmodule AeMdw.Db.NodeStub do
2+
@moduledoc """
3+
This is a stub needed only to satisify a Node plugin requirement (expected hooks/callbacks).
44
5-
def create_tables(),
6-
do: create_tables(mode())
5+
It doesn't create any database table anymore as the Mdw now manages its own database.
6+
"""
77

8-
def create_tables(mode),
9-
do: missing_tables(mode) |> Enum.map(&create_table!/1)
8+
@spec create_tables() :: []
9+
def create_tables(), do: []
1010

11-
def handle_issues(xs),
12-
do: xs |> Enum.map(&handle_issue(&1, mode()))
11+
@spec create_tables(list()) :: []
12+
def create_tables(_list), do: []
1313

14-
def delete_tables(),
15-
do: Model.tables() |> delete_tables
16-
17-
def delete_tables(tables),
18-
do: tables |> Enum.map(&{&1, :mnesia.delete_table(&1)})
19-
20-
def clear_tables(),
21-
do: Model.tables() |> Enum.map(&:mnesia.clear_table/1)
22-
23-
def check_tables(acc) do
24-
case check_tables() do
25-
[] -> []
26-
issues -> [{:callback, {__MODULE__, :handle_issues, [issues]}}]
27-
end ++ acc
28-
end
29-
30-
def tab_defs(mode),
31-
do: Model.tables() |> Enum.map(&tab_def(&1, mode))
32-
33-
def tab_def(name, mode),
34-
do: tab_def(name, :ordered_set, mode)
35-
36-
defp tab_def(table, type, mode) do
37-
record = Model.record(table)
38-
39-
{table,
40-
[
41-
:aec_db.tab_copies(mode)
42-
| [
43-
type: type,
44-
record_name: record,
45-
attributes: Model.fields(record),
46-
user_properties: [vsn: 1]
47-
]
48-
]}
49-
end
50-
51-
defp check_table({name, definition}, acc),
52-
do: :aec_db.check_table(name, definition, acc)
53-
54-
defp create_table!({name, definition}),
55-
do: {name, {:atomic, :ok} = :mnesia.create_table(name, definition)}
56-
57-
defp handle_issue({:missing_table, name}, mode),
58-
do: create_table!(tab_def(name, mode))
59-
60-
def missing_tables(),
61-
do: missing_tables(mode())
62-
63-
def missing_tables(mode),
64-
do: for({:missing_table, name} <- check_tables(), do: tab_def(name, mode))
65-
66-
def mode,
67-
do: :aec_db.backend_mode()
68-
69-
def check_tables(),
70-
do: tab_defs(mode()) |> Enum.reduce([], &check_table/2)
14+
@spec check_tables(list()) :: []
15+
def check_tables(_list), do: []
7116
end

0 commit comments

Comments
 (0)