Skip to content

Commit

Permalink
Setup data structures for tracking tests
Browse files Browse the repository at this point in the history
  • Loading branch information
zacksiri committed Jun 19, 2024
1 parent 0745d36 commit e1ef16f
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 3 deletions.
5 changes: 5 additions & 0 deletions lib/polar/machines.ex
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
defmodule Polar.Machines do
alias __MODULE__.Manager

defdelegate create_cluster(params),
to: Manager,
as: :create
end
27 changes: 27 additions & 0 deletions lib/polar/machines/assessment.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
defmodule Polar.Machines.Assessment do
use Ecto.Schema
import Ecto.Changeset

alias Polar.Streams
alias Polar.Machines.Check
alias Polar.Machines.Cluster
s

schema "assessments" do
field :current_state, :string, default: "created"

belongs_to :check, Check
belongs_to :cluster, Cluster

belongs_to :version, Streams.Version

timestamps(type: :utc_datetime)
end

@doc false
def changeset(assessment, attrs) do
assessment
|> cast(attrs, [:current_state])
|> validate_required([:current_state])
end
end
18 changes: 18 additions & 0 deletions lib/polar/machines/check.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
defmodule Polar.Machines.Check do
use Ecto.Schema
import Ecto.Changeset

schema "checks" do
field :slug, :string
field :description, :string

timestamps(type: :utc_datetime_usec)
end

@doc false
def changeset(check, attrs) do
check
|> cast(attrs, [:slug, :description])
|> validate_required([:slug, :description])
end
end
13 changes: 10 additions & 3 deletions lib/polar/machines/cluster.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,19 @@ defmodule Polar.Machines.Cluster do
use Ecto.Schema
import Ecto.Changeset

@valid_attrs ~w(
name
type
arch
credential
)a

schema "clusters" do
field :name, :string
field :current_state, :string, default: "created"

field :type, :string
field :architecture, :string
field :arch, :string

field :credential, Polar.Encrypted.Map

Expand All @@ -17,7 +24,7 @@ defmodule Polar.Machines.Cluster do
@doc false
def changeset(cluster, attrs) do
cluster
|> cast(attrs, [:name, :type, :architecture, :current_state, :credential])
|> validate_required([:name, :type, :architecture, :current_state, :credential])
|> cast(attrs, @valid_attrs)
|> validate_required(@valid_attrs)
end
end
10 changes: 10 additions & 0 deletions lib/polar/machines/cluster/manager.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
defp Polar.Machines.Cluster do
alias Polar.Repo
alias Polar.Machines.Cluster

def create(params) do
%Cluster{}
|> Cluster.changeset(params)
|> Repo.insert()
end
end
14 changes: 14 additions & 0 deletions priv/repo/migrations/20240619130455_create_checks.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
defmodule Polar.Repo.Migrations.CreateChecks do
use Ecto.Migration

def change do
create table(:checks) do
add :slug, :citext, null: false
add :description, :citext, null: false

timestamps(type: :utc_datetime_usec)
end

create index(:checks, [:slug], unique: true)
end
end
21 changes: 21 additions & 0 deletions priv/repo/migrations/20240619130844_create_assessments.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
defmodule Polar.Repo.Migrations.CreateAssessments do
use Ecto.Migration

def change do
create table(:assessments) do
add :current_state, :citext, default: "created", null: false

add :check_id, references(:checks, on_delete: :restrict), null: false
add :version_id, references(:versions, on_delete: :restrict), null: false
add :cluster_id, references(:clusters, on_delete: :restrict), null: false

timestamps(type: :utc_datetime_utc)
end

create index(:assessments, [:check_id])
create index(:assessments, [:version_id])
create index(:assessments, [:cluster_id])

create index(:assessments, [:check_id, :version_id], unique: true)
end
end

0 comments on commit e1ef16f

Please sign in to comment.