defmodule GitGud.Repo.Migrations.CreateRepositoryImports do
use Ecto.Migration
def change do
create table(:repository_imports) do
add :owner_id, references(:users, on_delete: :delete_all), null: false
add :organization_id, references(:organizations, on_delete: :delete_all)
add :provider, :string, null: false
add :base_url, :text, null: false
add :remote_owner, :text, null: false
# Username paired with the token. Providers ignore it (the token is
# the credential) but arbitrary git remotes may not.
add :remote_username, :text
add :visibility_mode, :string, null: false, default: "mirror"
add :default_visibility, :string, null: false, default: "private"
add :include_forks, :boolean, null: false, default: false
add :include_archived, :boolean, null: false, default: false
add :status, :string, null: false, default: "pending"
add :error, :text
# Provider token, AES-256-GCM at rest (same scheme as GitGud.Secrets).
# Cleared as soon as the import reaches a terminal state.
add :token_ciphertext, :binary
add :token_iv, :binary
add :token_tag, :binary
add :token_key_id, :string
add :token_cleared_at, :utc_datetime
timestamps(type: :utc_datetime)
end
create index(:repository_imports, [:owner_id])
create index(:repository_imports, [:organization_id])
create index(:repository_imports, [:status])
create table(:repository_import_items) do
add :repository_import_id, references(:repository_imports, on_delete: :delete_all),
null: false
add :repository_id, references(:repositories, on_delete: :nilify_all)
add :remote_name, :text, null: false
add :remote_full_name, :text, null: false
add :clone_url, :text, null: false
add :remote_description, :text
add :remote_default_branch, :text
add :remote_private, :boolean, null: false, default: false
add :remote_fork, :boolean, null: false, default: false
add :remote_archived, :boolean, null: false, default: false
add :target_name, :text, null: false
add :status, :string, null: false, default: "pending"
add :error, :text
timestamps(type: :utc_datetime)
end
create index(:repository_import_items, [:repository_import_id])
create unique_index(:repository_import_items, [:repository_import_id, :remote_full_name])
alter table(:repositories) do
add :upstream_url, :text
add :upstream_synced_at, :utc_datetime
end
end
end
neiam /gitgud
Git Gud
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Packages
⭐
Log in to mark this repository.
2.5 KiB · text
History
6280797