feat: initial commit

This commit is contained in:
2025-02-22 09:42:15 +01:00
parent ee4a65b345
commit e6e5c9b04d
43 changed files with 1191 additions and 247 deletions

View File

@ -1,25 +1,20 @@
package config
type Auth struct {
DefaultAdmin DefaultAdmin `envPrefix:"DEFAULT_ADMIN_"`
Providers AuthProviders `envPrefix:"PROVIDERS_"`
}
type DefaultAdmin struct {
Email string `env:"EMAIL,expand"`
Provider string `env:"PROVIDER,expand"`
Providers AuthProviders `envPrefix:"PROVIDERS_"`
}
type AuthProviders struct {
Google OAuth2Provider `envPrefix:"GOOGLE_"`
Github OAuth2Provider `envPrefix:"GITHUB_"`
Gitea GiteaProvider `envPrefix:"GITEA_"`
OIDC OIDCProvider `envPrefix:"OIDC_"`
}
type OAuth2Provider struct {
Key string `env:"KEY,expand"`
Secret string `env:"SECRET,expand"`
Scopes []string `env:"SCOPES",expand"`
Scopes []string `env:"SCOPES,expand"`
}
type OIDCProvider struct {
@ -28,3 +23,11 @@ type OIDCProvider struct {
Icon string `env:"ICON,expand" envDefault:"fa-passport"`
Label string `env:"LABEL,expand" envDefault:"OpenID Connect"`
}
type GiteaProvider struct {
OAuth2Provider
TokenURL string `env:"TOKEN_URL,expand"`
AuthURL string `env:"AUTH_URL,expand"`
ProfileURL string `env:"PROFILE_URL,expand"`
Label string `env:"LABEL,expand" envDefault:"Gitea"`
}

View File

@ -6,11 +6,10 @@ import (
)
type Config struct {
Logger Logger `envPrefix:"LOGGER_"`
Auth Auth `envPrefix:"AUTH_"`
HTTP HTTP `envPrefix:"HTTP_"`
Storage Storage `envPrefix:"STORAGE_"`
LLM LLM `envPrefix:"LLM_"`
Logger Logger `envPrefix:"LOGGER_"`
Auth Auth `envPrefix:"AUTH_"`
HTTP HTTP `envPrefix:"HTTP_"`
LLM LLM `envPrefix:"LLM_"`
}
func Parse() (*Config, error) {

View File

@ -3,8 +3,8 @@ package config
import "time"
type HTTP struct {
BaseURL string `env:"BASE_URL" envDefault:"http://localhost:3000"`
Address string `env:"ADDRESS,expand" envDefault:":3000"`
BaseURL string `env:"BASE_URL" envDefault:"http://localhost:3001"`
Address string `env:"ADDRESS,expand" envDefault:":3001"`
Session Session `envPrefix:"SESSION_"`
}

View File

@ -1,19 +0,0 @@
package config
type Storage struct {
Database Database `envPrefix:"DATABASE_"`
Object Object `envPrefix:"OBJECT_"`
}
type Database struct {
DSN string `env:"DSN" envDefault:"sqlite://data.sqlite"`
}
type Object struct {
DSN string `env:"DSN" envDefault:"sqlite://data.sqlite"`
Encryption Encryption `envPrefix:"ENCRYPTION_"`
}
type Encryption struct {
Key string `env:"KEY,unset"`
}