Fixed indexing on m:n table, as well as added seeding function
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user