Files
bds/modules/datas/database.go
Matheus Sampaio Queiroga ad65c0a9b0 Refactor user management and server templates
- Removed old SQLite user schema and replaced it with a new structure that includes password handling and cookie management.
- Updated user.go to implement password encryption and user creation logic.
- Modified web templates to reflect the new server management system, including the removal of outdated templates and the addition of new server creation and listing functionalities.
- Introduced error handling templates for better user feedback on bad requests and server errors.
- Added a makefile for easier database setup and management with Docker.

Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2025-05-09 22:03:06 -03:00

73 lines
1.9 KiB
Go

package datas
import (
"database/sql"
"fmt"
zfg "github.com/chaindead/zerocfg"
"sirherobrine23.com.br/go-bds/bds/modules/datas/server"
"sirherobrine23.com.br/go-bds/bds/modules/datas/user"
"sirherobrine23.com.br/go-bds/bds/modules/datas/user/cookie"
"sirherobrine23.com.br/go-bds/bds/modules/datas/user/token"
_ "sirherobrine23.com.br/go-bds/bds/modules/datas/internal/sqlclients" // Load database clients
)
var (
Driver *string = zfg.Str("db.type", "sqlite3", "Database drive, example sqlite") // Database driver
Host *string = zfg.Str("db.host", "./bds.db", "Database connection") // Host connection
Name *string = zfg.Str("db.name", "bds", "Database name") // Database name
)
type DatabaseSchemas struct {
Database *sql.DB // Drive connection
User *user.UserSearch // User database
Token *token.Token // Token database
Cookie *cookie.Cookie // Web cookies
Servers *server.ServerList // Servers
}
func Connect() (*DatabaseSchemas, error) {
db, err := sql.Open(*Driver, *Host)
if err != nil {
return nil, fmt.Errorf("cannot open database: %s", err)
}
rootDB := &DatabaseSchemas{
Database: db,
User: &user.UserSearch{Driver: *Driver, DB: db},
Token: &token.Token{Driver: *Driver, DB: db},
Cookie: &cookie.Cookie{Driver: *Driver, DB: db},
Servers: &server.ServerList{Driver: *Driver, DB: db},
}
switch *Driver {
case "sqlite3":
if err = user.CreateSqliteTable(db); err != nil {
return nil, err
} else if err = token.SqliteStartTable(db); err != nil {
return nil, err
} else if err = cookie.CreateSqliteTable(db); err != nil {
return nil, err
} else if err = server.CreateSqliteTable(db); err != nil {
return nil, err
}
case "postgres":
fallthrough
case "mysql":
fallthrough
case "mssql":
fallthrough
case "sqlserver":
fallthrough
default:
db.Close()
return nil, fmt.Errorf("database not supported by bds dashboard")
}
return rootDB, nil
}