You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: config.go
    path of file: ./repos/quickshare/src/server
    
    the code of the file until where you have to start completion: package server

import (
	"encoding/json"

	"github.com/ihexxa/quickshare/src/db"
)

const fileIndexPath = "/fileindex.jsonl"

type DbConfig struct {
	DbPath string `json:"dbPath" yaml:"dbPath"`
}

type FSConfig struct {
	Root       string `json:"root" yaml:"root"`
	OpensLimit int    `json:"opensLimit" yaml:"opensLimit"`
	OpenTTL    int    `json:"openTTL" yaml:"openTTL"`
}

type UsersCfg struct {
	EnableAuth         bool          `json:"enableAuth" yaml:"enableAuth"`
	DefaultAdmin       string        `json:"defaultAdmin" yaml:"defaultAdmin" cfg:"env"`
	DefaultAdminPwd    string        `json:"defaultAdminPwd" yaml:"defaultAdminPwd" cfg:"env"`
	CookieTTL          int           `json:"cookieTTL" yaml:"cookieTTL"`
	CookieSecure       bool          `json:"cookieSecure" yaml:"cookieSecure"`
	CookieHttpOnly     bool          `json:"cookieHttpOnly" yaml:"cookieHttpOnly"`
	MinUserNameLen     int           `json:"minUserNameLen" yaml:"minUserNameLen"`
	MinPwdLen          int           `json:"minPwdLen" yaml:"minPwdLen"`
	CaptchaWidth       int           `json
    
func DefaultConfigStruct() *Config {
	return &Config{
		Fs: &FSConfig{
			Root:       "quickshare",
			OpensLimit: 1024,
			OpenTTL:    60, // 1 min
		},
		Users: &UsersCfg{
			EnableAuth:         true,
			DefaultAdmin:       "",
			DefaultAdminPwd:    "",
			CookieTTL:          3600 * 24 * 7, // 1 week
			CookieSecure:       false,
			CookieHttpOnly:     true,
			MinUserNameLen:     3,
			MinPwdLen:          8,
			CaptchaWidth:       256,
			CaptchaHeight:      60,
			CaptchaEnabled:     true,
			UploadSpeedLimit:   1024 * 1024,       // B
			DownloadSpeedLimit: 1024 * 1024,       // B
			SpaceLimit:         1024 * 1024 * 100, // 100MB
			LimiterCapacity:    1000,
			LimiterCyc:         1000, // 1s
			PredefinedUsers:    []*db.UserCfg{},
		},
		Secrets: &Secrets{
			TokenSecret: "", // it will auto generated if it is left as empty
		},
		Server: &ServerCfg{
			Debug:             false,
			Host:              "0.0.0.0",
			Port:              8686,
			ReadTimeout:       2000,
			WriteTimeout:      1000 * 3600 * 24, // 1 day
			MaxHeaderBytes:    512,
			PublicPath:        "static/public",
			SearchResultLimit: 16,
			InitFileIndex:     true,
		},
		Workers: &WorkerPoolCfg{
			QueueSize:   1024,
			SleepCyc:    1,
			WorkerCount: 2,
		},
		Site: &db.SiteConfig{
			ClientCfg: &db.ClientConfig{
				SiteName: "Quickshare",
				SiteDesc: "Quick and simple file sharing",
				Bg: &db.BgConfig{
					Url:      "",
					Repeat:   "repeat",
					Position: "center",
					Align:    "fixed",
					BgColor:  "",
				},
				AllowSetBg: false,
				AutoTheme:  true,
			},
		},
		Db: &DbConfig{
			DbPath: "quickshare.sqlite",
		},
	}
}