To gitea and beyond, let's go(-yco)
This commit is contained in:
89
internal/fuzz/db.go
Normal file
89
internal/fuzz/db.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package fuzz
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var (
|
||||
fuzzDBOnce sync.Once
|
||||
fuzzDB *gorm.DB
|
||||
fuzzDBErr error
|
||||
)
|
||||
|
||||
func GetFuzzDB() (*gorm.DB, error) {
|
||||
fuzzDBOnce.Do(func() {
|
||||
dbName := "file:memdb_fuzz?mode=memory&cache=shared&_journal_mode=WAL&_synchronous=NORMAL"
|
||||
fuzzDB, fuzzDBErr = gorm.Open(sqlite.Open(dbName), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Silent),
|
||||
})
|
||||
if fuzzDBErr == nil {
|
||||
fuzzDBErr = fuzzDB.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
email TEXT UNIQUE NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
email_verified INTEGER DEFAULT 0 NOT NULL,
|
||||
email_verified_at DATETIME,
|
||||
email_verification_token TEXT,
|
||||
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 fuzzDB, fuzzDBErr
|
||||
}
|
||||
Reference in New Issue
Block a user