package Seeder

import (
	"encoding/base64"

	"git.tovijaeschke.xyz/tovi/Capsule/Backend/Api/Auth"
	"git.tovijaeschke.xyz/tovi/Capsule/Backend/Database"
	"git.tovijaeschke.xyz/tovi/Capsule/Backend/Models"
)

var userNames = []string{
	"assuredcoot",
	"quotesteeve",
	"blueberriessiemens",
	"eliteexaggerate",
	"twotrice",
	"moderagged",
	"duleelderly",
	"stringdetailed",
	"nodesanymore",
	"sacredpolitical",
	"pajamasenergy",
}

func createUser(username string) (Models.User, error) {
	var (
		userData Models.User
		userKey  AesKey
		password string
		err      error
	)

	userKey, err = GenerateAesKey()
	if err != nil {
		panic(err)
	}

	password, err = Auth.HashPassword("password")
	if err != nil {
		return Models.User{}, err
	}

	userData = Models.User{
		Username:             username,
		Password:             password,
		AsymmetricPrivateKey: EncryptedPrivateKey,
		AsymmetricPublicKey:  PublicKey,
		SymmetricKey: base64.StdEncoding.EncodeToString(
			EncryptWithPublicKey(userKey.Key, decodedPublicKey),
		),
	}

	err = Database.CreateUser(&userData)
	return userData, err
}

// SeedUsers used to create dummy users for testing & development
func SeedUsers() {
	var (
		i   int
		err error
	)

	// Seed users used for conversation seeding
	_, err = createUser("testUser")
	if err != nil {
		panic(err)
	}
	_, err = createUser("ATestUser2")
	if err != nil {
		panic(err)
	}

	for i = 0; i <= 10; i++ {
		_, err = createUser(userNames[i])
		if err != nil {
			panic(err)
		}
	}
}
