diff --git a/services/user/cmd/migrate/main.go b/services/user/cmd/migrate/main.go new file mode 100644 index 00000000..91c23bfd --- /dev/null +++ b/services/user/cmd/migrate/main.go @@ -0,0 +1,24 @@ +package migrate + +import ( + "log" + + "github.com/golang-migrate/migrate/v4" + _ "github.com/golang-migrate/migrate/v4/database/postgres" + _ "github.com/golang-migrate/migrate/v4/source/file" +) + +// RunMigrations applies all migrations +func RunMigrations(databaseURL string, migrationsDir string) { + m, err := migrate.New("file://"+migrationsDir, databaseURL) + + if err != nil { + log.Fatal(err) + } + + if err := m.Up(); err != nil && err != migrate.ErrNoChange { + log.Fatal(err) + } + + log.Println("Migrations applied successfully!") +} diff --git a/services/user/migrations/000001_create_users_table.down.sql b/services/user/migrations/000001_create_users_table.down.sql new file mode 100644 index 00000000..cc1f647d --- /dev/null +++ b/services/user/migrations/000001_create_users_table.down.sql @@ -0,0 +1 @@ +DROP TABLE users; diff --git a/services/user/migrations/000001_create_users_table.up.sql b/services/user/migrations/000001_create_users_table.up.sql new file mode 100644 index 00000000..dac7885e --- /dev/null +++ b/services/user/migrations/000001_create_users_table.up.sql @@ -0,0 +1,7 @@ +CREATE TABLE users ( + user_id SERIAL PRIMARY KEY, + username VARCHAR(50) UNIQUE NOT NULL, + email VARCHAR(255) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file