package postgres

import (
	"database/sql"

	"switchboard-core/store"
)

// NewStores creates all Postgres store implementations and wires them
// into the Stores bundle. Call this at startup after database.Connect().
func NewStores(db *sql.DB) store.Stores {
	SetDB(db)
	return store.Stores{
		Users:          NewUserStore(),
		Teams:          NewTeamStore(),
		Audit:          NewAuditStore(),
		GlobalConfig:   NewGlobalConfigStore(),
		Policies:       NewPolicyStore(db),
		Groups:         NewGroupStore(),
		ResourceGrants: NewResourceGrantStore(),
		Notifications:  NewNotificationStore(),
		NotifPrefs:     NewNotificationPreferenceStore(),
		Presence:       NewPresenceStore(),
		Health:         NewHealthStore(),
		Connections:    NewConnectionStore(),
		Dependencies:   NewDependencyStore(),
		Packages:       NewPackageStore(),
		Workflows:      NewWorkflowStore(),
		ExtPermissions: NewExtensionPermissionStore(db),
		ExtData:        NewExtDataStore(db),
		Tickets:        NewTicketStore(),
		RateLimits:     NewRateLimitStore(),
		Triggers:       NewTriggerStore(),
		ScheduledTasks: NewScheduledTaskStore(),
	}
}
