mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-07 13:38:15 -08:00
feat: version v0.0.2
This commit is contained in:
parent
0dceaf017a
commit
7ff317756f
36 changed files with 336 additions and 160 deletions
|
|
@ -268,7 +268,7 @@ func TestMain(m *testing.M) {
|
|||
log.Fatalf("Could not start resource: %s", err)
|
||||
}
|
||||
|
||||
err = cfg.Load(getTestGetenv(resource))
|
||||
err = cfg.Load(getTestGetenv(resource), "test")
|
||||
if err != nil {
|
||||
log.Fatalf("Could not load cfg: %s", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ const (
|
|||
DISABLE_MUSICBRAINZ_ENV = "KOITO_DISABLE_MUSICBRAINZ"
|
||||
SKIP_IMPORT_ENV = "KOITO_SKIP_IMPORT"
|
||||
ALLOWED_HOSTS_ENV = "KOITO_ALLOWED_HOSTS"
|
||||
CORS_ORIGINS_ENV = "KOITO_CORS_ALLOWED_ORIGINS"
|
||||
DISABLE_RATE_LIMIT_ENV = "KOITO_DISABLE_RATE_LIMIT"
|
||||
THROTTLE_IMPORTS_MS = "KOITO_THROTTLE_IMPORTS_MS"
|
||||
IMPORT_BEFORE_UNIX_ENV = "KOITO_IMPORT_BEFORE_UNIX"
|
||||
|
|
@ -64,6 +65,7 @@ type config struct {
|
|||
skipImport bool
|
||||
allowedHosts []string
|
||||
allowAllHosts bool
|
||||
allowedOrigins []string
|
||||
disableRateLimit bool
|
||||
importThrottleMs int
|
||||
userAgent string
|
||||
|
|
@ -78,21 +80,18 @@ var (
|
|||
)
|
||||
|
||||
// Initialize initializes the global configuration using the provided getenv function.
|
||||
func Load(getenv func(string) string) error {
|
||||
func Load(getenv func(string) string, version string) error {
|
||||
var err error
|
||||
once.Do(func() {
|
||||
globalConfig, err = loadConfig(getenv)
|
||||
globalConfig, err = loadConfig(getenv, version)
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
// loadConfig loads the configuration from environment variables.
|
||||
func loadConfig(getenv func(string) string) (*config, error) {
|
||||
func loadConfig(getenv func(string) string, version string) (*config, error) {
|
||||
cfg := new(config)
|
||||
// cfg.baseUrl = getenv(BASE_URL_ENV)
|
||||
// if cfg.baseUrl == "" {
|
||||
// cfg.baseUrl = defaultBaseUrl
|
||||
// }
|
||||
|
||||
cfg.databaseUrl = getenv(DATABASE_URL_ENV)
|
||||
if cfg.databaseUrl == "" {
|
||||
return nil, errors.New("required parameter " + DATABASE_URL_ENV + " not provided")
|
||||
|
|
@ -139,7 +138,7 @@ func loadConfig(getenv func(string) string) (*config, error) {
|
|||
cfg.disableMusicBrainz = parseBool(getenv(DISABLE_MUSICBRAINZ_ENV))
|
||||
cfg.skipImport = parseBool(getenv(SKIP_IMPORT_ENV))
|
||||
|
||||
cfg.userAgent = "Koito v0.0.1 (contact@koito.io)"
|
||||
cfg.userAgent = fmt.Sprintf("Koito %s (contact@koito.io)", version)
|
||||
|
||||
if getenv(DEFAULT_USERNAME_ENV) == "" {
|
||||
cfg.defaultUsername = "admin"
|
||||
|
|
@ -161,6 +160,9 @@ func loadConfig(getenv func(string) string) (*config, error) {
|
|||
cfg.allowedHosts = strings.Split(rawHosts, ",")
|
||||
cfg.allowAllHosts = cfg.allowedHosts[0] == "*"
|
||||
|
||||
rawCors := getenv(CORS_ORIGINS_ENV)
|
||||
cfg.allowedOrigins = strings.Split(rawCors, ",")
|
||||
|
||||
switch strings.ToLower(getenv(LOG_LEVEL_ENV)) {
|
||||
case "debug":
|
||||
cfg.logLevel = 0
|
||||
|
|
@ -312,6 +314,12 @@ func AllowAllHosts() bool {
|
|||
return globalConfig.allowAllHosts
|
||||
}
|
||||
|
||||
func AllowedOrigins() []string {
|
||||
lock.RLock()
|
||||
defer lock.RUnlock()
|
||||
return globalConfig.allowedOrigins
|
||||
}
|
||||
|
||||
func RateLimitDisabled() bool {
|
||||
lock.RLock()
|
||||
defer lock.RUnlock()
|
||||
|
|
|
|||
|
|
@ -281,6 +281,13 @@ func TestDeleteAlbumAlias(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
assert.True(t, exists, "expected alias to still exist")
|
||||
|
||||
// Ensure primary alias cannot be deleted
|
||||
err = store.DeleteAlbumAlias(ctx, rg.ID, "Test Album")
|
||||
require.NoError(t, err) // shouldn't error when nothing is deleted
|
||||
rg, err = store.GetAlbum(ctx, db.GetAlbumOpts{ID: rg.ID})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "Test Album", rg.Title)
|
||||
|
||||
truncateTestData(t)
|
||||
}
|
||||
func TestGetAllAlbumAliases(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -195,6 +195,13 @@ func TestDeleteArtistAlias(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
assert.True(t, exists, "expected alias to still exist")
|
||||
|
||||
// Ensure primary alias cannot be deleted
|
||||
err = store.DeleteArtistAlias(ctx, artist.ID, "Alias Artist")
|
||||
require.NoError(t, err) // shouldn't error when nothing is deleted
|
||||
artist, err = store.GetArtist(ctx, db.GetArtistOpts{ID: 1})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "Alias Artist", artist.Name)
|
||||
|
||||
truncateTestData(t)
|
||||
}
|
||||
func TestDeleteArtist(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ func TestMain(m *testing.M) {
|
|||
log.Fatalf("Could not start resource: %s", err)
|
||||
}
|
||||
|
||||
err = cfg.Load(getTestGetenv(resource))
|
||||
err = cfg.Load(getTestGetenv(resource), "test")
|
||||
if err != nil {
|
||||
log.Fatalf("Could not load cfg: %s", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,6 +198,13 @@ func TestTrackAliases(t *testing.T) {
|
|||
err = store.SetPrimaryTrackAlias(ctx, 1, "Fake Alias")
|
||||
require.Error(t, err)
|
||||
|
||||
// Ensure primary alias cannot be deleted
|
||||
err = store.DeleteTrackAlias(ctx, track.ID, "Alias One")
|
||||
require.NoError(t, err) // shouldn't error when nothing is deleted
|
||||
track, err = store.GetTrack(ctx, db.GetTrackOpts{ID: 1})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "Alias One", track.Title)
|
||||
|
||||
store.SetPrimaryTrackAlias(ctx, 1, "Track One")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ func ImportLastFMFile(ctx context.Context, store db.DB, mbzc mbz.MusicBrainzCall
|
|||
RecordingMbzID: trackMbzID,
|
||||
ReleaseTitle: album,
|
||||
ReleaseMbzID: albumMbzID,
|
||||
Client: "lastfm",
|
||||
Time: ts,
|
||||
UserID: 1,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ func ImportMalojaFile(ctx context.Context, store db.DB, filename string) error {
|
|||
TrackTitle: item.Track.Title,
|
||||
ReleaseTitle: item.Track.Album.Title,
|
||||
Time: ts.Local(),
|
||||
Client: "maloja",
|
||||
UserID: 1,
|
||||
}
|
||||
err = catalog.SubmitListen(ctx, store, opts)
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ func ImportSpotifyFile(ctx context.Context, store db.DB, filename string) error
|
|||
ReleaseTitle: item.AlbumName,
|
||||
Duration: dur / 1000,
|
||||
Time: item.Timestamp,
|
||||
Client: "spotify",
|
||||
UserID: 1,
|
||||
}
|
||||
err = catalog.SubmitListen(ctx, store, opts)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue