Bladeren bron

Create CLI command for reseting database

Also seperate stages of seeding into other functions.
master
Immanuel Onyeka 1 jaar geleden
bovenliggende
commit
987090a927
2 gewijzigde bestanden met toevoegingen van 86 en 15 verwijderingen
  1. +1
    -1
      migrations/0_29092022_setup_tables.sql
  2. +85
    -14
      skouter.go

+ 1
- 1
migrations/0_29092022_setup_tables.sql Bestand weergeven

@@ -58,7 +58,7 @@ CREATE TABLE user (
CREATE TABLE license (
id INT AUTO_INCREMENT,
user_id INT NOT NULL,
type ENUM('NMLS', 'FSRA'),
type ENUM('NMLS', 'FSRA', 'Other'),
num VARCHAR(40) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (user_id) REFERENCES user(id)


+ 85
- 14
skouter.go Bestand weergeven

@@ -30,6 +30,12 @@ import (
_ "image/jpeg"
)

type Config struct {
DBName string
DBUsername string
DBPassword string
}

type Address struct {
Id int `json:"id"`
Full string `json:"full"`
@@ -67,6 +73,12 @@ type User struct {
Password string `json:"password,omitempty"`
}

type License struct {
Id int `json:"id"`
Type string `json:"type"`
Num string `json:"num"`
}

type UserClaims struct {
Id int `json:"id"`
Role string `json:"role"`
@@ -2296,22 +2308,31 @@ func serve() {
log.Fatal(http.ListenAndServe(address, nil))
}

func dbSeed() {
db, err := sql.Open("mysql",
fmt.Sprintf("%s:%s@tcp(127.0.0.1:3306)/%s",
os.Getenv("DBUser"),
os.Getenv("DBPass"),
os.Getenv("DBName"),
))
func dbReset(db *sql.DB) {
b, err := os.ReadFile("migrations/reset.sql")
if err != nil {
log.Fatal(err)
}

err = db.Ping()
_, err = db.Exec(string(b))
if err != nil {
fmt.Println("Bad database configuration: %v\n", err)
panic(err)
// maybe os.Exit(1) instead
log.Fatal(err)
}

b, err = os.ReadFile("migrations/0_29092022_setup_tables.sql")
if err != nil {
log.Fatal(err)
}

_, err = db.Exec(string(b))
if err != nil {
log.Fatal(err)
}
}

func seedAddresses(db *sql.DB) []Address {
addresses := make([]Address, 10)
for i, a := range addresses {
a.Street = gofakeit.Street()
a.City = gofakeit.City()
@@ -2323,9 +2344,14 @@ func dbSeed() {
addresses[i].Id = id
}
return addresses
}

func seedBranches(db *sql.DB, addresses []Address) []Branch {
branches := make([]Branch, 4)
for i := range branches {
branches[i].Name = gofakeit.Street()
branches[i].Name = gofakeit.Company()
branches[i].Type = "NMLS"
branches[i].Letterhead = gofakeit.ImagePng(400, 200)
branches[i].Num = gofakeit.HexUint8()
@@ -2336,7 +2362,12 @@ func dbSeed() {
branches[i].Id = id
}
return branches
}

func seedUsers(db *sql.DB, addresses []Address, branches []Branch) []User {
users := make([]User, 10)
for i := range users {
p := gofakeit.Person()
users[i].FirstName = p.FirstName
@@ -2371,6 +2402,30 @@ func dbSeed() {
if err != nil {log.Println(err); break}
users[i].Id = u.Id
}
return users
}

func seedLicenses(db *sql.DB, users []User) []Branch {
licenses := make([]License, len(users)
for i := range licenses {
licenses[i].UserId = users[i].Id
licenses[i].Type = []string{"NMLS", "FSRA"}[gofakeit.Number(0, 1)]
licenses[i].Num = gofakeit.UUID()
// id, err := insertLicense(db, licenses[i])
if err != nil {log.Println(err); break}
licenses[i].Id = id
}
return licenses
}

func dbSeed(db *sql.DB) {
addresses := seedAddresses(db)
branches := seedBranches(db, addresses)
users := seedUsers(db, addresses, branches)
license := seedLicenses(db, users)
}

func dev(args []string) {
@@ -2378,6 +2433,20 @@ func dev(args []string) {
os.Setenv("DBUser", "tester")
os.Setenv("DBPass", "test123")
db, err := sql.Open("mysql",
fmt.Sprintf("%s:%s@tcp(127.0.0.1:3306)/%s?multiStatements=true",
os.Getenv("DBUser"),
os.Getenv("DBPass"),
os.Getenv("DBName"),
))

err = db.Ping()
if err != nil {
log.Println("Bad database configuration: %v", err)
panic(err)
// maybe os.Exit(1) instead
}
if len(args) == 0 {
serve()
return
@@ -2385,7 +2454,9 @@ func dev(args []string) {
switch args[0] {
case "seed":
dbSeed()
dbSeed(db)
case "reset":
dbReset(db)
default:
return
}


Laden…
Annuleren
Opslaan