basic admin endgame view and add (#3)

Reviewed-on: #3
This commit was merged in pull request #3.
This commit is contained in:
2026-06-22 18:44:52 +00:00
parent e955e40930
commit b47fcdffcb
82 changed files with 2031 additions and 2 deletions
@@ -0,0 +1,14 @@
defmodule Chesstrainer.Repo.Migrations.CreateTags do
use Ecto.Migration
def change do
create table(:tags) do
add :name, :string
add :category, :string
timestamps(type: :utc_datetime)
end
create unique_index(:tags, [:name, :category])
end
end
@@ -0,0 +1,23 @@
defmodule Chesstrainer.Repo.Migrations.CreateEndgames do
use Ecto.Migration
def change do
create table(:endgames, primary_key: false) do
add :id, :binary_id, primary_key: true
add :fen, :string
add :color, :string
add :key, :string
add :message, :text
add :notes, :text
add :result, :string
add :rating, :integer, default: 1500
add :rating_deviation, :integer, default: 350
add :times_attempted, :integer, default: 0
add :times_solved, :integer, default: 0
timestamps(type: :utc_datetime)
end
create unique_index(:endgames, [:fen])
end
end
@@ -0,0 +1,12 @@
defmodule Chesstrainer.Repo.Migrations.CreateEndgamesTags do
use Ecto.Migration
def change do
create table(:endgames_tags, primary_key: false) do
add :endgame_id, references(:endgames, type: :binary_id, on_delete: :delete_all)
add :tag_id, references(:tags, on_delete: :delete_all)
end
create unique_index(:endgames_tags, [:endgame_id, :tag_id])
end
end
+54
View File
@@ -9,3 +9,57 @@
#
# We recommend using the bang functions (`insert!`, `update!`
# and so on) as they will fail if something goes wrong.
alias Chesstrainer.Repo
alias Chesstrainer.Endgames.Endgame
alias Chesstrainer.Tags.Tag
now = DateTime.utc_now() |> DateTime.truncate(:second)
IO.puts("🌱 Seeding basic endgames into DB...")
Repo.insert_all(Endgame, [
%{
id: Ecto.UUID.generate(),
fen: "8/8/3k4/8/8/3K1R2/8/8 w - - 0 1",
color: :white,
key: "KR v K",
message: "Rook vs king endgame",
notes: "Basic rook endgame",
result: :win,
inserted_at: now,
updated_at: now
},
%{
id: Ecto.UUID.generate(),
fen: "6k1/5p2/6p1/8/7p/8/6PP/6K1 b - - 0 0",
color: :black,
key: "KPPP v KPP",
message: "3 pawns vs 2 pawns",
notes: "https://www.chessgames.com/perl/chessgame?gid=1017147",
result: :win,
inserted_at: now,
updated_at: now
}
])
IO.puts("✅ Done seeding endgames.")
IO.puts("🌱 Seeding endgame tags into DB...")
Repo.insert_all(Tag, [
%{
name: "mate in 2",
category: :endgame,
inserted_at: now,
updated_at: now
},
%{
name: "mate in 3",
category: :endgame,
inserted_at: now,
updated_at: now
}
])
IO.puts("✅ Done seeding endgame tags.")