37 lines
1.0 KiB
Go
37 lines
1.0 KiB
Go
package updates
|
|
|
|
import (
|
|
"github.com/go-gormigrate/gormigrate/v2"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var apiTokenMigrations = []*gormigrate.Migration{
|
|
{
|
|
ID: "202610040001_create_user_api_tokens",
|
|
Migrate: func(tx *gorm.DB) error {
|
|
return tx.Exec(`CREATE TABLE user_api_tokens (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
name VARCHAR(255) NULL,
|
|
token_hash VARCHAR(64) NOT NULL UNIQUE,
|
|
scopes TEXT NULL,
|
|
collection_ids TEXT NULL,
|
|
expires_at TIMESTAMPTZ NULL,
|
|
revoked_at TIMESTAMPTZ NULL,
|
|
last_used_at TIMESTAMPTZ NULL,
|
|
last_used_ip VARCHAR(64) NULL,
|
|
oauth_client_id TEXT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE INDEX user_api_tokens_user_id_index ON user_api_tokens (user_id);
|
|
CREATE INDEX user_api_tokens_oauth_client_id_index ON user_api_tokens (oauth_client_id)`).Error
|
|
},
|
|
Rollback: func(tx *gorm.DB) error {
|
|
return tx.Exec("DROP TABLE IF EXISTS user_api_tokens").Error
|
|
},
|
|
},
|
|
}
|
|
|
|
func init() { Register(apiTokenMigrations...) }
|