auto migrazione gorm
This commit is contained in:
Binary file not shown.
76
main.go
76
main.go
@@ -118,72 +118,20 @@ func initDB(path string) (*gorm.DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
schema := `
|
||||
CREATE TABLE IF NOT EXISTS subscribers (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
email TEXT NOT NULL UNIQUE,
|
||||
ip_address TEXT NOT NULL,
|
||||
user_agent TEXT NOT NULL,
|
||||
accept_language TEXT,
|
||||
browser_data TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);`
|
||||
if err := db.Exec(schema).Error; err != nil {
|
||||
models := []any{
|
||||
&Subscriber{},
|
||||
&User{},
|
||||
&Session{},
|
||||
&PasswordResetToken{},
|
||||
&EmailVerificationToken{},
|
||||
}
|
||||
for _, model := range models {
|
||||
if db.Migrator().HasTable(model) {
|
||||
continue
|
||||
}
|
||||
if err := db.AutoMigrate(model); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
userSchema := `
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
email TEXT NOT NULL UNIQUE,
|
||||
password_hash TEXT NOT NULL,
|
||||
email_verified INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);`
|
||||
if err := db.Exec(userSchema).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sessionSchema := `
|
||||
CREATE TABLE IF NOT EXISTS sessions (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
token_hash TEXT NOT NULL UNIQUE,
|
||||
expires_at INTEGER NOT NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
if err := db.Exec(sessionSchema).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resetSchema := `
|
||||
CREATE TABLE IF NOT EXISTS password_reset_tokens (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
token_hash TEXT NOT NULL UNIQUE,
|
||||
expires_at INTEGER NOT NULL,
|
||||
used_at INTEGER,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
if err := db.Exec(resetSchema).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
verifySchema := `
|
||||
CREATE TABLE IF NOT EXISTS email_verification_tokens (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
token_hash TEXT NOT NULL UNIQUE,
|
||||
expires_at INTEGER NOT NULL,
|
||||
used_at INTEGER,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);`
|
||||
if err := db.Exec(verifySchema).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return db, nil
|
||||
|
||||
Reference in New Issue
Block a user