package db import ( "fmt" "os" pgsql "github.com/fergusstrange/embedded-postgres" "github.com/jmoiron/sqlx" "github.com/rs/zerolog/log" "mapyweb/config" ) var accountsSchema = `create table accounts ( id serial constraint accounts_pkey primary key, username varchar(13) not null, password varchar not null, creation date not null, last_login date not null, last_ip varchar not null, ban integer not null, admin integer not null, gender smallint default 0 not null );` var authlog *secLog func install(db *sqlx.DB) { if _, err := db.Exec(accountsSchema); err != nil { panic(err) } println("accounts table installed!") } func loginTest() { var kayos *User var err error println("logging in as kayos...") if kayos, err = AttemptWebLogin( "kayos", "yeet", "192.168.69.5", "yeetBrowser 420"); err != nil { println("FAIL: " + err.Error()) return } println("logged in as kayos!") println(kayos.Password) } func registerTest() { println("registering kayos...") if err := RegisterNewUser("kayos", "yeet", "127.0.0.1", 0, true); err != nil { println("REG_TEST_FAIL: " + err.Error()) return } println("kayos registered!") return } func argParse() { for _, arg := range os.Args { if arg == "--install" { println("installing...") install(db) } if arg == "--regtest" { registerTest() } if arg == "--logintest" { loginTest() } } } // StartDatabases initializes our embeded postgresql database and our embeded bitcask database. func StartDatabases() { var err error // embedded postgres - if config.UseEmbeddedPostgres { postgres = pgsql.NewDatabase(pgsql.DefaultConfig(). DataPath("./data/pgsql"). BinariesPath("./postgresql"). Logger(os.Stdout)) if err := postgres.Start(); err != nil { log.Error().Err(err).Msg("postgres_fail") return } defer postgres.Stop() db, err = sqlx.Connect("postgres", "host=localhost port=5432 user=postgres password=postgres dbname=postgres sslmode=disable") } else { connstr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", config.SQLHost, config.SQLPort, config.SQLUsername, config.SQLPassword) db, err = sqlx.Connect("postgres", connstr) } if err != nil { log.Error().Caller().Err(err).Msg("postgres_fail") return } // ------------------- // embedded bitcask for authlog if authlog, err = GetUserAuths("./data/authlog"); err != nil { log.Error().Caller().Err(err).Msg("!!! GetUserAuths failed !!!") } // ------------------- argParse() }