Fixed indexing on m:n table, as well as added seeding function

This commit is contained in:
2022-02-15 00:00:48 +01:00
parent 66f9df86d8
commit 205adeb118
6 changed files with 81 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package main
import (
"context"
"fmt"
"github.com/dgraph-io/ristretto"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
@@ -10,10 +11,13 @@ import (
"github.com/eko/gocache/store"
"github.com/gin-gonic/gin"
"github.com/go-co-op/gocron"
"github.com/google/uuid"
"github.com/jackc/pgx/v4/pgxpool"
"github.com/prometheus/client_golang/prometheus/promhttp"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"io/ioutil"
"log"
"net/http"
"os"
"serverctl/pkg/application/projects"
@@ -23,6 +27,8 @@ import (
"time"
)
import _ "net/http/pprof"
func setupLogger() *zap.Logger {
highPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.ErrorLevel
@@ -269,5 +275,57 @@ func main() {
projectsRepository := postgres.NewProjectsRepository(database)
projectsService := projects.NewService(logger, projectsRepository, cacheM)
setupProfiler()
addSeedData(database, usersRepository, projectsRepository)
setupApi(logger, cacheM, usersService, projectsService)
}
func setupProfiler() {
go func() {
log.Println(http.ListenAndServe(":6060", nil))
}()
}
func addSeedData(database *db.Client, ur users.Repository, pr projects.Repository) {
conn := database.GetConn(context.Background())
defer conn.Release()
var numRows int
err := conn.QueryRow(context.Background(), "select count(id) from sctl_user").Scan(&numRows)
if err != nil {
panic(err)
}
if numRows == 0 {
addTestData(conn, ur, pr)
}
}
func addTestData(conn *pgxpool.Conn, ur users.Repository, pr projects.Repository) {
ctx := context.Background()
for jobs := 0; jobs < 100; jobs++ {
go func() {
for i := 0; i < 1_000; i++ {
var (
user *users.CreateUser
err error
userId int
)
user, err = users.NewCreateUser(fmt.Sprintf("%s@test.com", uuid.New().String()), "password", users.NewPlainTextPasswordHasher())
if err != nil {
panic(err)
}
userId, err = ur.Create(ctx, user)
if err != nil {
panic(err)
}
_, err = pr.Create(ctx, projects.NewCreateProject(uuid.New().String()[:20], userId))
if err != nil {
panic(err)
}
}
}()
}
}