fix: prevent schema drift in fuzz tests with AutoMigrate

This commit is contained in:
2026-01-12 22:35:56 +01:00
parent 250ff79eeb
commit 2f964b0c79

View File

@@ -1,6 +1,8 @@
package fuzz package fuzz
import ( import (
"goyco/internal/database"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
@@ -14,68 +16,16 @@ func GetFuzzDB() (*gorm.DB, error) {
return nil, err return nil, err
} }
err = db.Exec(` err = db.AutoMigrate(
CREATE TABLE IF NOT EXISTS users ( &database.User{},
id INTEGER PRIMARY KEY AUTOINCREMENT, &database.Post{},
username TEXT UNIQUE NOT NULL, &database.Vote{},
email TEXT UNIQUE NOT NULL, &database.AccountDeletionRequest{},
password TEXT NOT NULL, &database.RefreshToken{},
email_verified INTEGER DEFAULT 0 NOT NULL, )
email_verified_at DATETIME, if err != nil {
email_verification_token TEXT, return nil, err
email_verification_sent_at DATETIME, }
password_reset_token TEXT,
password_reset_sent_at DATETIME,
password_reset_expires_at DATETIME,
locked INTEGER DEFAULT 0,
session_version INTEGER DEFAULT 1 NOT NULL,
created_at DATETIME,
updated_at DATETIME,
deleted_at DATETIME
);
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
url TEXT UNIQUE,
content TEXT,
author_id INTEGER,
author_name TEXT,
up_votes INTEGER DEFAULT 0,
down_votes INTEGER DEFAULT 0,
score INTEGER DEFAULT 0,
created_at DATETIME,
updated_at DATETIME,
deleted_at DATETIME,
FOREIGN KEY(author_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS votes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
post_id INTEGER NOT NULL,
type TEXT NOT NULL,
vote_hash TEXT,
created_at DATETIME,
updated_at DATETIME,
FOREIGN KEY(user_id) REFERENCES users(id),
FOREIGN KEY(post_id) REFERENCES posts(id)
);
CREATE TABLE IF NOT EXISTS account_deletion_requests (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
token_hash TEXT UNIQUE NOT NULL,
expires_at DATETIME NOT NULL,
created_at DATETIME,
FOREIGN KEY(user_id) REFERENCES users(id)
);
CREATE TABLE IF NOT EXISTS refresh_tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
token_hash TEXT UNIQUE NOT NULL,
expires_at DATETIME NOT NULL,
created_at DATETIME,
FOREIGN KEY(user_id) REFERENCES users(id)
);
`).Error
return db, err return db, nil
} }