initial commit
This commit is contained in:
27
internal/migration/migration.go
Normal file
27
internal/migration/migration.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package migration
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"github.com/golang-migrate/migrate/v4"
|
||||
_ "github.com/golang-migrate/migrate/v4/database/sqlite3"
|
||||
_ "github.com/golang-migrate/migrate/v4/source/file"
|
||||
"github.com/golang-migrate/migrate/v4/source/iofs"
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
//go:embed sql/*.sql
|
||||
var migrationFS embed.FS
|
||||
|
||||
func Up(url string) error {
|
||||
d, err := iofs.New(migrationFS, "sql")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
m, err := migrate.NewWithSourceInstance("iofs", d, url)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return m.Up()
|
||||
}
|
50
internal/migration/sql/1_initial.up.sql
Normal file
50
internal/migration/sql/1_initial.up.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
CREATE TABLE IF NOT EXISTS workspaces
|
||||
(
|
||||
id TEXT NOT NULL UNIQUE,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
container_id TEXT NOT NULL,
|
||||
image_tag TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT pk_workspaces PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS templates
|
||||
(
|
||||
id TEXT NOT NULL UNIQUE,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
description TEXT NOT NULL,
|
||||
created_on TEXT NOT NULL,
|
||||
last_modified_on TEXT NOT NULL,
|
||||
is_built INTEGER NOT NULL,
|
||||
|
||||
CONSTRAINT pk_templates PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS template_files
|
||||
(
|
||||
template_id TEXT NOT NULL,
|
||||
file_path TEXT NOT NULL,
|
||||
content BLOB NOT NULL,
|
||||
|
||||
CONSTRAINT pk_template_files PRIMARY KEY (template_id, file_path)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS template_images
|
||||
(
|
||||
template_id TEXT NOT NULL,
|
||||
image_tag TEXT NOT NULL,
|
||||
image_id TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT pk_template_images PRIMARY KEY (template_id, image_tag, image_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS port_mappings
|
||||
(
|
||||
workspace_id TEXT NOT NULL,
|
||||
container_port INTEGER NOT NULL,
|
||||
host_port INTEGER NOT NULL,
|
||||
subdomain TEXT,
|
||||
|
||||
CONSTRAINT pk_port_mappings PRIMARY KEY (workspace_id, container_port, host_port)
|
||||
)
|
Reference in New Issue
Block a user