SYMBOL INDEX (2815 symbols across 360 files) FILE: cmd/bootstrapx/bootstrap.go constant errorLoadingLocation (line 20) | errorLoadingLocation = "Error loading location: %v" type Requirements (line 23) | type Requirements struct function InitializeConfig (line 37) | func InitializeConfig(configPath string) error { function InitializeTimezone (line 42) | func InitializeTimezone() { function InitializeLogger (line 60) | func InitializeLogger() error { function InitializeData (line 65) | func InitializeData() error { function InitializeValidator (line 81) | func InitializeValidator() error { function WrapCommand (line 86) | func WrapCommand(cmd *cobra.Command, req Requirements) *cobra.Command { function InitializeQueue (line 126) | func InitializeQueue() error { function shouldAllowDegradedStartup (line 137) | func shouldAllowDegradedStartup(req Requirements) bool { function logDependencyInitWarning (line 145) | func logDependencyInitWarning(cmd *cobra.Command, dependency string, err... FILE: cmd/bootstrapx/bootstrap_test.go function TestWrapCommandReturnsDataErrorWhenDegradedStartupDisabled (line 14) | func TestWrapCommandReturnsDataErrorWhenDegradedStartupDisabled(t *testi... function TestWrapCommandAllowsDataAndQueueErrorsWhenEnabled (line 36) | func TestWrapCommandAllowsDataAndQueueErrorsWhenEnabled(t *testing.T) { function TestWrapCommandKeepsStrictModeForCommandsWithoutOptIn (line 85) | func TestWrapCommandKeepsStrictModeForCommandsWithoutOptIn(t *testing.T) { function TestWrapCommandKeepsValidatorStrictEvenWhenDegradedStartupEnabled (line 106) | func TestWrapCommandKeepsValidatorStrictEvenWhenDegradedStartupEnabled(t... function stubBootstrapInitializers (line 135) | func stubBootstrapInitializers(dataFn, validatorFn, queueFn func() error... function setAllowDegradedStartup (line 150) | func setAllowDegradedStartup(t *testing.T, enabled bool) func() { FILE: cmd/command/command.go function init (line 22) | func init() { function registerSubCommands (line 27) | func registerSubCommands() { FILE: cmd/completion.go function init (line 39) | func init() { FILE: cmd/cron/cron.go function Start (line 31) | func Start() error { function newScheduler (line 57) | func newScheduler() (*cron.Cron, error) { function waitForShutdown (line 70) | func waitForShutdown() { function handleSignals (line 79) | func handleSignals(cancel context.CancelFunc) { type cronLogger (line 89) | type cronLogger struct method Info (line 92) | func (cl *cronLogger) Info(msg string, keysAndValues ...interface{}) { method Error (line 101) | func (cl *cronLogger) Error(err error, msg string, keysAndValues ...in... FILE: cmd/cron/schedule.go type Scheduler (line 19) | type Scheduler struct method Call (line 63) | func (s *Scheduler) Call(name string, fn func()) *TaskBuilder { method CallE (line 74) | func (s *Scheduler) CallE(name string, fn func() error) *TaskBuilder { method Register (line 119) | func (s *Scheduler) Register(crontab *cron.Cron) error { method registerTask (line 128) | func (s *Scheduler) registerTask(crontab *cron.Cron, task *scheduledTa... method recordedJob (line 156) | func (s *Scheduler) recordedJob(task *scheduledTask) cron.Job { type scheduledTask (line 24) | type scheduledTask struct type TaskBuilder (line 33) | type TaskBuilder struct method Cron (line 85) | func (b *TaskBuilder) Cron(spec string) *TaskBuilder { method EveryFiveSeconds (line 91) | func (b *TaskBuilder) EveryFiveSeconds() *TaskBuilder { method DailyAt (line 96) | func (b *TaskBuilder) DailyAt(value string) *TaskBuilder { method WithoutOverlapping (line 107) | func (b *TaskBuilder) WithoutOverlapping() *TaskBuilder { method AllowOverlap (line 113) | func (b *TaskBuilder) AllowOverlap() *TaskBuilder { function registerTasks (line 47) | func registerTasks(crontab *cron.Cron) error { function NewSchedule (line 55) | func NewSchedule(logger *cronLogger) *Scheduler { function calculateNextRunAt (line 204) | func calculateNextRunAt(spec string, base time.Time) (*time.Time, error) { function dailyAtSpec (line 222) | func dailyAtSpec(value string) (string, error) { function parseTimePart (line 254) | func parseTimePart(name, raw string, min, max int) (int, error) { FILE: cmd/cron/schedule_test.go function TestDailyAtSpecWithHHMM (line 10) | func TestDailyAtSpecWithHHMM(t *testing.T) { function TestDailyAtSpecWithHHMMSS (line 20) | func TestDailyAtSpecWithHHMMSS(t *testing.T) { function TestDailyAtSpecRejectsInvalidInput (line 30) | func TestDailyAtSpecRejectsInvalidInput(t *testing.T) { function TestDailyAtSpecRejectsOutOfRange (line 37) | func TestDailyAtSpecRejectsOutOfRange(t *testing.T) { function TestSchedulerRegisterReturnsDailyAtError (line 44) | func TestSchedulerRegisterReturnsDailyAtError(t *testing.T) { FILE: cmd/cron/task_record_test.go function TestRecordedJobRecordsCallEFailure (line 13) | func TestRecordedJobRecordsCallEFailure(t *testing.T) { function TestCalculateNextRunAtInvalidSpec (line 51) | func TestCalculateNextRunAtInvalidSpec(t *testing.T) { type fakeCronRunRecorder (line 61) | type fakeCronRunRecorder struct method Enqueue (line 66) | func (f *fakeCronRunRecorder) Enqueue(ctx context.Context, input taskc... method Start (line 72) | func (f *fakeCronRunRecorder) Start(ctx context.Context, input taskcen... method Finish (line 78) | func (f *fakeCronRunRecorder) Finish(ctx context.Context, run *model.T... FILE: cmd/cron/tasks.go function defineSchedule (line 15) | func defineSchedule(schedule *Scheduler) { function taskNameFromCode (line 41) | func taskNameFromCode(code string) string { FILE: cmd/cron/tasks_test.go function TestDefineScheduleSkipsResetTaskByDefault (line 9) | func TestDefineScheduleSkipsResetTaskByDefault(t *testing.T) { function TestDefineScheduleRegistersResetTaskWhenEnabled (line 26) | func TestDefineScheduleRegistersResetTaskWhenEnabled(t *testing.T) { function hasScheduledTask (line 40) | func hasScheduledTask(schedule *Scheduler, name string) bool { FILE: cmd/root.go constant welcomeMessage (line 22) | welcomeMessage = "Welcome to go-layout. Use -h to see more commands" function init (line 53) | func init() { function registerFlags (line 60) | func registerFlags() { function shouldSkipBootstrap (line 64) | func shouldSkipBootstrap(cmd *cobra.Command) bool { function registerCommands (line 82) | func registerCommands() { function Execute (line 92) | func Execute() { FILE: cmd/service/service.go constant defaultHost (line 23) | defaultHost = "0.0.0.0" constant defaultPort (line 24) | defaultPort = 9001 constant gracefulShutdownTimout (line 25) | gracefulShutdownTimout = 10 * time.Second function init (line 41) | func init() { function registerFlags (line 46) | func registerFlags() { function run (line 52) | func run() error { function waitForShutdown (line 75) | func waitForShutdown(server *http.Server, errChan <-chan error) error { FILE: cmd/worker/worker.go function run (line 27) | func run() error { FILE: config/autoload/app.go type AppConfig (line 8) | type AppConfig struct function getDefaultPath (line 70) | func getDefaultPath() (path string) { FILE: config/autoload/jwt.go type JwtConfig (line 6) | type JwtConfig struct FILE: config/autoload/logger.go type DivisionTime (line 4) | type DivisionTime struct type DivisionSize (line 12) | type DivisionSize struct type LoggerConfig (line 24) | type LoggerConfig struct FILE: config/autoload/mysql.go type MysqlConfig (line 6) | type MysqlConfig struct FILE: config/autoload/queue.go type QueueRedisConfig (line 4) | type QueueRedisConfig struct type QueueConfig (line 16) | type QueueConfig struct FILE: config/autoload/redis.go type RedisConfig (line 6) | type RedisConfig struct FILE: config/config.go type Conf (line 13) | type Conf struct type ConfigReloadHandler (line 41) | type ConfigReloadHandler struct type ConfigDiff (line 48) | type ConfigDiff struct function GetConfig (line 63) | func GetConfig() *Conf { function RegisterConfigReloadHandler (line 71) | func RegisterConfigReloadHandler(handler ConfigReloadHandler) { function sortConfigReloadHandlersLocked (line 91) | func sortConfigReloadHandlersLocked() { FILE: config/config_clone.go function setActiveConfig (line 11) | func setActiveConfig(cfg *Conf) { function cloneDefaultConfig (line 16) | func cloneDefaultConfig() *Conf { function cloneAppConfig (line 27) | func cloneAppConfig(src autoload.AppConfig) autoload.AppConfig { function cloneQueueConfig (line 41) | func cloneQueueConfig(src autoload.QueueConfig) autoload.QueueConfig { function cloneStringSlice (line 52) | func cloneStringSlice(src []string) []string { function copyConf (line 60) | func copyConf(exampleConfig, config string) error { FILE: config/config_load.go function InitConfig (line 16) | func InitConfig(configPath string) error { function checkJwtSecretKey (line 32) | func checkJwtSecretKey() error { function validateJWTSecretKey (line 36) | func validateJWTSecretKey(cfg *Conf) error { function load (line 69) | func load(configPath string) (*Conf, error) { function resolveConfigPath (line 97) | func resolveConfigPath(configPath string) (string, error) { function resolveDefaultConfigFiles (line 112) | func resolveDefaultConfigFiles() (string, string, error) { function resolveDevelopmentConfigFiles (line 124) | func resolveDevelopmentConfigFiles() (string, string, error) { function fileExists (line 137) | func fileExists(path string) bool { function ensureBasePathDefault (line 148) | func ensureBasePathDefault(cfg *Conf, basePathConfigured bool) { function registerConfigWatcherIfNeeded (line 181) | func registerConfigWatcherIfNeeded(cfg *Conf) { function ensureCorsDefaults (line 192) | func ensureCorsDefaults(cfg *Conf) { function reloadConfigFromWatcher (line 213) | func reloadConfigFromWatcher() error { function resolveEnvVars (line 250) | func resolveEnvVars(cfg *Conf) { function resolveEnvVar (line 261) | func resolveEnvVar(val string) string { FILE: config/config_load_test.go function assertSamePath (line 9) | func assertSamePath(t *testing.T, expected string, actual string) { function TestResolveConfigPathPrefersWorkingDirectoryConfig (line 24) | func TestResolveConfigPathPrefersWorkingDirectoryConfig(t *testing.T) { function TestResolveDefaultConfigFilesUsesWorkingDirectoryExample (line 51) | func TestResolveDefaultConfigFilesUsesWorkingDirectoryExample(t *testing... function TestEnsureBasePathDefaultUsesWorkingDirectoryWhenNotConfigured (line 87) | func TestEnsureBasePathDefaultUsesWorkingDirectoryWhenNotConfigured(t *t... function TestEnsureBasePathDefaultKeepsExplicitConfiguredValue (line 108) | func TestEnsureBasePathDefaultKeepsExplicitConfiguredValue(t *testing.T) { function TestValidateJWTSecretKeyRejectsNilConfig (line 117) | func TestValidateJWTSecretKeyRejectsNilConfig(t *testing.T) { function TestCheckJwtSecretKeyRejectsEmptySecret (line 123) | func TestCheckJwtSecretKeyRejectsEmptySecret(t *testing.T) { function TestCheckJwtSecretKeyRejectsWeakProdSecret (line 135) | func TestCheckJwtSecretKeyRejectsWeakProdSecret(t *testing.T) { function TestCheckJwtSecretKeyAllowsLocalWeakSecret (line 148) | func TestCheckJwtSecretKeyAllowsLocalWeakSecret(t *testing.T) { FILE: config/config_test.go function resetConfigReloadHandlersForTest (line 5) | func resetConfigReloadHandlersForTest(t *testing.T) { function TestRegisterConfigReloadHandlerDeduplicatesByName (line 12) | func TestRegisterConfigReloadHandlerDeduplicatesByName(t *testing.T) { function TestRegisterConfigReloadHandlerKeepsStablePriorityOrder (line 29) | func TestRegisterConfigReloadHandlerKeepsStablePriorityOrder(t *testing.... function TestRegisterConfigReloadHandlerIgnoresEmptyName (line 52) | func TestRegisterConfigReloadHandlerIgnoresEmptyName(t *testing.T) { FILE: config/provider.go function GetConfigFrom (line 4) | func GetConfigFrom(provider func() *Conf) *Conf { FILE: config/runtime.go function BuildConfigDiff (line 6) | func BuildConfigDiff(oldConfig, newConfig *Conf) ConfigDiff { function BuildAppliedConfig (line 71) | func BuildAppliedConfig(oldConfig, newConfig *Conf, diff ConfigDiff) *Co... FILE: config/runtime_test.go function TestBuildConfigDiff (line 9) | func TestBuildConfigDiff(t *testing.T) { function TestBuildAppliedConfigKeepsUnsupportedFields (line 61) | func TestBuildAppliedConfigKeepsUnsupportedFields(t *testing.T) { FILE: config/testing_helper.go function CloneConf (line 4) | func CloneConf(src *Conf) *Conf { function ReplaceConfigForTesting (line 16) | func ReplaceConfigForTesting(cfg *Conf) func() { function UpdateConfigForTesting (line 31) | func UpdateConfigForTesting(mutator func(cfg *Conf)) func() { FILE: data/data.go function InitData (line 15) | func InitData() error { function Shutdown (line 41) | func Shutdown() error { FILE: data/data_test.go function TestShutdownWithoutInitializedResources (line 5) | func TestShutdownWithoutInitializedResources(t *testing.T) { FILE: data/migrations/20260425000001_init_table.up.sql type `admin_user` (line 4) | CREATE TABLE IF NOT EXISTS `admin_user` type `api_group` (line 34) | CREATE TABLE IF NOT EXISTS `api_group` type `api` (line 50) | CREATE TABLE IF NOT EXISTS `api` type `menu` (line 79) | CREATE TABLE IF NOT EXISTS `menu` type `menu_i18n` (line 121) | CREATE TABLE IF NOT EXISTS `menu_i18n` type `department` (line 138) | CREATE TABLE IF NOT EXISTS `department` type `role` (line 166) | CREATE TABLE IF NOT EXISTS `role` type `admin_user_department_map` (line 195) | CREATE TABLE IF NOT EXISTS `admin_user_department_map` type `menu_api_map` (line 212) | CREATE TABLE IF NOT EXISTS `menu_api_map` type `role_menu_map` (line 232) | CREATE TABLE IF NOT EXISTS `role_menu_map` type `admin_user_menu_map` (line 248) | CREATE TABLE IF NOT EXISTS `admin_user_menu_map` type `department_role_map` (line 264) | CREATE TABLE IF NOT EXISTS `department_role_map` type `admin_user_role_map` (line 280) | CREATE TABLE IF NOT EXISTS `admin_user_role_map` type `admin_login_logs` (line 296) | CREATE TABLE IF NOT EXISTS `admin_login_logs` type `login_security_state` (line 334) | CREATE TABLE IF NOT EXISTS `login_security_state` type `request_logs` (line 351) | CREATE TABLE IF NOT EXISTS `request_logs` type `casbin_rule` (line 393) | CREATE TABLE IF NOT EXISTS `casbin_rule` type `upload_files` (line 409) | CREATE TABLE IF NOT EXISTS `upload_files` type `upload_file_folders` (line 455) | CREATE TABLE IF NOT EXISTS `upload_file_folders` type `upload_file_references` (line 475) | CREATE TABLE IF NOT EXISTS `upload_file_references` type `sys_config` (line 494) | CREATE TABLE IF NOT EXISTS `sys_config` type `sys_dict_type` (line 520) | CREATE TABLE IF NOT EXISTS `sys_dict_type` type `sys_dict_item` (line 538) | CREATE TABLE IF NOT EXISTS `sys_dict_item` type `sys_config_i18n` (line 561) | CREATE TABLE IF NOT EXISTS `sys_config_i18n` type `sys_dict_type_i18n` (line 576) | CREATE TABLE IF NOT EXISTS `sys_dict_type_i18n` type `sys_dict_item_i18n` (line 591) | CREATE TABLE IF NOT EXISTS `sys_dict_item_i18n` type `task_definitions` (line 606) | CREATE TABLE IF NOT EXISTS `task_definitions` type `task_runs` (line 630) | CREATE TABLE IF NOT EXISTS `task_runs` type `task_run_events` (line 659) | CREATE TABLE IF NOT EXISTS `task_run_events` type `cron_task_states` (line 675) | CREATE TABLE IF NOT EXISTS `cron_task_states` FILE: data/migrations/20260515010000_upload_file_objects.up.sql type `upload_file_objects` (line 1) | CREATE TABLE IF NOT EXISTS `upload_file_objects` FILE: data/mysql.go type mysqlSlot (line 33) | type mysqlSlot struct constant mysqlProbeTimeout (line 37) | mysqlProbeTimeout = 2 * time.Second type Writer (line 50) | type Writer interface type WriterLog (line 55) | type WriterLog struct method Printf (line 58) | func (w WriterLog) Printf(format string, args ...interface{}) { function GenerateDSN (line 65) | func GenerateDSN(cfg *c.Conf) string { function initMysql (line 105) | func initMysql() error { function reloadMysql (line 109) | func reloadMysql(cfg *c.Conf) error { function openMysql (line 136) | func openMysql(cfg *c.Conf) (*gorm.DB, error) { function MysqlDB (line 190) | func MysqlDB() *gorm.DB { function MysqlInitError (line 203) | func MysqlInitError() error { function MysqlRuntimeStatus (line 208) | func MysqlRuntimeStatus() RuntimeHealthStatus { function MysqlReady (line 228) | func MysqlReady() bool { function ReloadMysql (line 233) | func ReloadMysql(cfg *c.Conf) error { function CloseMysql (line 238) | func CloseMysql() error { function currentMysql (line 258) | func currentMysql() *gorm.DB { function getSQLDB (line 265) | func getSQLDB(db *gorm.DB) *sql.DB { function mysqlUnavailableError (line 276) | func mysqlUnavailableError() error { FILE: data/redis.go type redisSlot (line 24) | type redisSlot struct constant redisProbeTimeout (line 28) | redisProbeTimeout = 2 * time.Second function initRedis (line 36) | func initRedis() error { function reloadRedis (line 40) | func reloadRedis(cfg *c.Conf) error { function openRedis (line 63) | func openRedis(cfg *c.Conf) (*redis.Client, error) { function RedisClient (line 93) | func RedisClient() *redis.Client { function GetRedisInitError (line 106) | func GetRedisInitError() error { function RedisRuntimeStatus (line 111) | func RedisRuntimeStatus() RuntimeHealthStatus { function RedisReady (line 131) | func RedisReady() bool { function ReloadRedis (line 136) | func ReloadRedis(cfg *c.Conf) error { function CloseRedis (line 141) | func CloseRedis() error { function currentRedis (line 156) | func currentRedis() *redis.Client { function redisUnavailableError (line 163) | func redisUnavailableError() error { FILE: data/runtime_health.go constant defaultRuntimeHealthTTL (line 8) | defaultRuntimeHealthTTL = 3 * time.Second type RuntimeHealthStatus (line 11) | type RuntimeHealthStatus struct type runtimeHealthCache (line 17) | type runtimeHealthCache struct method Check (line 30) | func (c *runtimeHealthCache) Check(probe func() error) RuntimeHealthSt... method SeedReady (line 49) | func (c *runtimeHealthCache) SeedReady() { method Reset (line 58) | func (c *runtimeHealthCache) Reset() { function newRuntimeHealthCache (line 23) | func newRuntimeHealthCache(ttl time.Duration) *runtimeHealthCache { FILE: data/runtime_health_test.go function TestMysqlRuntimeStatusCachesProbeResult (line 13) | func TestMysqlRuntimeStatusCachesProbeResult(t *testing.T) { function TestMysqlRuntimeStatusReturnsProbeFailure (line 51) | func TestMysqlRuntimeStatusReturnsProbeFailure(t *testing.T) { function TestRedisRuntimeStatusCachesProbeResult (line 84) | func TestRedisRuntimeStatusCachesProbeResult(t *testing.T) { function TestRedisRuntimeStatusReturnsProbeFailure (line 120) | func TestRedisRuntimeStatusReturnsProbeFailure(t *testing.T) { function backupMysqlState (line 151) | func backupMysqlState() func() { function backupRedisState (line 167) | func backupRedisState() func() { FILE: internal/access/casbin/adapter.go function newAdapter (line 10) | func newAdapter(db *gorm.DB) (*gormadapter.Adapter, error) { function newEnforcerFromDB (line 15) | func newEnforcerFromDB(m model.Model, db *gorm.DB) (*casbin.Enforcer, er... FILE: internal/access/casbin/casbin.go type CasbinEnforcer (line 14) | type CasbinEnforcer struct method SetDB (line 64) | func (e *CasbinEnforcer) SetDB(tx *gorm.DB) *CasbinEnforcer { method registerCustomFunctions (line 74) | func (e *CasbinEnforcer) registerCustomFunctions() { function InitEnforcer (line 27) | func InitEnforcer() error { function GetEnforcer (line 37) | func GetEnforcer() (*CasbinEnforcer, error) { function ReloadPolicy (line 55) | func ReloadPolicy() error { FILE: internal/access/casbin/enforcer_init.go function getModelPath (line 17) | func getModelPath() (string, error) { function isInTransaction (line 26) | func isInTransaction(db *gorm.DB) bool { function ReloadEnforcer (line 31) | func ReloadEnforcer() error { function initEnforcerLocked (line 37) | func initEnforcerLocked() error { FILE: internal/access/casbin/policy_ops.go method execute (line 11) | func (e *CasbinEnforcer) execute(tx *gorm.DB, fn func(enforcer casbin.IE... method EditPolicyPermissions (line 30) | func (e *CasbinEnforcer) EditPolicyPermissions(user string, policy [][]s... method EditPolicyPermissionsBatch (line 37) | func (e *CasbinEnforcer) EditPolicyPermissionsBatch(subjectPolicies map[... method EditPolicyRoles (line 49) | func (e *CasbinEnforcer) EditPolicyRoles(user string, policy []string, t... method WithTransaction (line 78) | func (e *CasbinEnforcer) WithTransaction(tx *gorm.DB, fn func(enforcer c... function firstTx (line 83) | func firstTx(tx []*gorm.DB) *gorm.DB { function replacePermissions (line 90) | func replacePermissions(enforcer casbin.IEnforcer, subject string, polic... function toSubjectPolicies (line 110) | func toSubjectPolicies(subject string, policy [][]string) [][]string { FILE: internal/console/confirm.go function ConfirmOperation (line 14) | func ConfirmOperation(prompt string, assumeYes bool) bool { FILE: internal/console/demo/demo.go function init (line 22) | func init() { function demo (line 26) | func demo() { FILE: internal/console/init/init.go constant msgProcessingComplete (line 15) | msgProcessingComplete = "Processing complete." constant msgFailedToSaveRoute (line 16) | msgFailedToSaveRoute = "Failed to save the initial route data to th... constant msgUserPermissionComplete (line 17) | msgUserPermissionComplete = "User API permissions rebuilt successfully." constant msgFailedToRebuildPerms (line 18) | msgFailedToRebuildPerms = "Failed to rebuild final user API permissions." function init (line 44) | func init() { function runInitApiRoute (line 50) | func runInitApiRoute() error { function runRebuildUserPermissions (line 69) | func runRebuildUserPermissions() error { FILE: internal/console/migrate/migrate.go constant defaultMigrationDir (line 22) | defaultMigrationDir = "data/migrations" constant defaultMigrationExt (line 23) | defaultMigrationExt = "sql" constant defaultTimeFormat (line 24) | defaultTimeFormat = "20060102150405" constant defaultMigrationDigits (line 25) | defaultMigrationDigits = 6 function init (line 144) | func init() { function registerFlags (line 149) | func registerFlags() { function registerSubCommands (line 164) | func registerSubCommands() { function runCreate (line 174) | func runCreate(rawName string) error { function runCheck (line 221) | func runCheck() error { function runUp (line 266) | func runUp(args []string) error { function runDown (line 302) | func runDown(args []string) error { function runWithMigrator (line 349) | func runWithMigrator(fn func(*migrate.Migrate) error) error { function buildMigrator (line 359) | func buildMigrator() (*migrate.Migrate, error) { function resolveMigrationDirForCreate (line 367) | func resolveMigrationDirForCreate() (string, error) { function resolveMigrationDirForCheck (line 377) | func resolveMigrationDirForCheck() (string, error) { function ensureDirExists (line 388) | func ensureDirExists(path string) (string, error) { function normalizeMigrationName (line 407) | func normalizeMigrationName(raw string) string { function nextMigrationVersion (line 417) | func nextMigrationVersion(files []migrationFile) (string, error) { type migrationFile (line 451) | type migrationFile struct function loadMigrationFiles (line 457) | func loadMigrationFiles(dir string, strict bool) ([]migrationFile, error) { function parseIntArg (line 493) | func parseIntArg(value string, argName string) (int, error) { function parseUint64Arg (line 501) | func parseUint64Arg(value string, argName string) (uint, error) { function remapLegacySequentialVersionIfNeeded (line 512) | func remapLegacySequentialVersionIfNeeded(m *migrate.Migrate) error { FILE: internal/console/system_init/system_init.go function init (line 34) | func init() { function runInitSystem (line 39) | func runInitSystem() error { FILE: internal/console/task/task.go type asyncScanRow (line 19) | type asyncScanRow struct function init (line 49) | func init() { function runScanAsync (line 54) | func runScanAsync() error { function runScanCron (line 73) | func runScanCron() error { function collectRegistryTaskTypes (line 92) | func collectRegistryTaskTypes(registry queue.Registry) []string { function collectBuiltinDefinitionsByKind (line 113) | func collectBuiltinDefinitionsByKind(kind string) map[string]model.TaskD... function sortedDefinitionCodes (line 129) | func sortedDefinitionCodes(definitions map[string]model.TaskDefinition) ... function loadDBDefinitionsByKind (line 138) | func loadDBDefinitionsByKind(kind string) (map[string]model.TaskDefiniti... function buildAsyncScanRows (line 163) | func buildAsyncScanRows(taskTypes []string, builtinMap map[string]model.... function printScanRows (line 191) | func printScanRows(rows []asyncScanRow, dbReady bool) { function printScanSummary (line 210) | func printScanSummary(sourceLabel string, taskTypes []string, rows []asy... function contains (line 266) | func contains(values []string, target string) bool { function yesNo (line 275) | func yesNo(value bool) string { FILE: internal/console/task/task_test.go function TestBuildAsyncScanRowsMarksMissingDefinitions (line 9) | func TestBuildAsyncScanRowsMarksMissingDefinitions(t *testing.T) { function TestBuildAsyncScanRowsSkipsDBStateWhenDBNotReady (line 36) | func TestBuildAsyncScanRowsSkipsDBStateWhenDBNotReady(t *testing.T) { function TestSortedDefinitionCodes (line 60) | func TestSortedDefinitionCodes(t *testing.T) { FILE: internal/controller/admin_v1/auth.go type LoginController (line 18) | type LoginController struct method Login (line 28) | func (api LoginController) Login(c *gin.Context) { method LoginCaptcha (line 69) | func (api LoginController) LoginCaptcha(c *gin.Context) { method Logout (line 80) | func (api LoginController) Logout(c *gin.Context) { method CheckToken (line 102) | func (api LoginController) CheckToken(c *gin.Context) { function NewLoginController (line 23) | func NewLoginController() *LoginController { FILE: internal/controller/admin_v1/auth_admin_user.go type AdminUserController (line 14) | type AdminUserController struct method GetUserInfo (line 24) | func (api AdminUserController) GetUserInfo(c *gin.Context) { method UpdateProfile (line 35) | func (api AdminUserController) UpdateProfile(c *gin.Context) { method GetUserMenuInfo (line 52) | func (api AdminUserController) GetUserMenuInfo(c *gin.Context) { method Create (line 64) | func (api AdminUserController) Create(c *gin.Context) { method Update (line 80) | func (api AdminUserController) Update(c *gin.Context) { method List (line 96) | func (api AdminUserController) List(c *gin.Context) { method Delete (line 107) | func (api AdminUserController) Delete(c *gin.Context) { method BindRole (line 123) | func (api AdminUserController) BindRole(c *gin.Context) { method Detail (line 139) | func (api AdminUserController) Detail(c *gin.Context) { method GetFullPhone (line 155) | func (api AdminUserController) GetFullPhone(c *gin.Context) { method GetFullEmail (line 173) | func (api AdminUserController) GetFullEmail(c *gin.Context) { function NewAdminUserController (line 19) | func NewAdminUserController() *AdminUserController { FILE: internal/controller/admin_v1/auth_api.go type ApiController (line 14) | type ApiController struct method Update (line 24) | func (api ApiController) Update(c *gin.Context) { method List (line 40) | func (api ApiController) List(c *gin.Context) { function NewApiController (line 19) | func NewApiController() *ApiController { FILE: internal/controller/admin_v1/auth_dept.go type DeptController (line 14) | type DeptController struct method List (line 24) | func (api DeptController) List(c *gin.Context) { method Create (line 35) | func (api DeptController) Create(c *gin.Context) { method Update (line 51) | func (api DeptController) Update(c *gin.Context) { method Delete (line 67) | func (api DeptController) Delete(c *gin.Context) { method Detail (line 83) | func (api DeptController) Detail(c *gin.Context) { method BindRole (line 99) | func (api DeptController) BindRole(c *gin.Context) { function NewDeptController (line 19) | func NewDeptController() *DeptController { FILE: internal/controller/admin_v1/auth_file_resource.go type FileResourceController (line 16) | type FileResourceController struct method List (line 25) | func (api FileResourceController) List(c *gin.Context) { method Detail (line 36) | func (api FileResourceController) Detail(c *gin.Context) { method Delete (line 51) | func (api FileResourceController) Delete(c *gin.Context) { method TrashList (line 74) | func (api FileResourceController) TrashList(c *gin.Context) { method Restore (line 85) | func (api FileResourceController) Restore(c *gin.Context) { method Destroy (line 97) | func (api FileResourceController) Destroy(c *gin.Context) { method References (line 109) | func (api FileResourceController) References(c *gin.Context) { method FolderTree (line 118) | func (api FileResourceController) FolderTree(c *gin.Context) { method FolderCreate (line 127) | func (api FileResourceController) FolderCreate(c *gin.Context) { method FolderUpdate (line 140) | func (api FileResourceController) FolderUpdate(c *gin.Context) { method FolderDelete (line 153) | func (api FileResourceController) FolderDelete(c *gin.Context) { method FolderMove (line 165) | func (api FileResourceController) FolderMove(c *gin.Context) { method Move (line 178) | func (api FileResourceController) Move(c *gin.Context) { method UploadLocal (line 191) | func (api FileResourceController) UploadLocal(c *gin.Context) { method UploadCredential (line 210) | func (api FileResourceController) UploadCredential(c *gin.Context) { method UploadComplete (line 223) | func (api FileResourceController) UploadComplete(c *gin.Context) { function NewFileResourceController (line 20) | func NewFileResourceController() *FileResourceController { FILE: internal/controller/admin_v1/auth_login_log.go type AdminLoginLogController (line 13) | type AdminLoginLogController struct method List (line 23) | func (api AdminLoginLogController) List(c *gin.Context) { method Detail (line 34) | func (api AdminLoginLogController) Detail(c *gin.Context) { function NewAdminLoginLogController (line 18) | func NewAdminLoginLogController() *AdminLoginLogController { FILE: internal/controller/admin_v1/auth_menu.go type MenuController (line 15) | type MenuController struct method Create (line 25) | func (api MenuController) Create(c *gin.Context) { method Update (line 41) | func (api MenuController) Update(c *gin.Context) { method UpdateAllMenuPermissions (line 57) | func (api MenuController) UpdateAllMenuPermissions(c *gin.Context) { method Detail (line 72) | func (api MenuController) Detail(c *gin.Context) { method List (line 88) | func (api MenuController) List(c *gin.Context) { method Delete (line 98) | func (api MenuController) Delete(c *gin.Context) { function NewMenuController (line 20) | func NewMenuController() *MenuController { FILE: internal/controller/admin_v1/auth_request_log.go type RequestLogController (line 14) | type RequestLogController struct method List (line 24) | func (api RequestLogController) List(c *gin.Context) { method Detail (line 35) | func (api RequestLogController) Detail(c *gin.Context) { method Export (line 51) | func (api RequestLogController) Export(c *gin.Context) { method MaskConfig (line 68) | func (api RequestLogController) MaskConfig(c *gin.Context) { method UpdateMaskConfig (line 74) | func (api RequestLogController) UpdateMaskConfig(c *gin.Context) { function NewRequestLogController (line 19) | func NewRequestLogController() *RequestLogController { FILE: internal/controller/admin_v1/auth_role.go type RoleController (line 14) | type RoleController struct method List (line 24) | func (api RoleController) List(c *gin.Context) { method Create (line 35) | func (api RoleController) Create(c *gin.Context) { method Update (line 51) | func (api RoleController) Update(c *gin.Context) { method Delete (line 67) | func (api RoleController) Delete(c *gin.Context) { method Detail (line 83) | func (api RoleController) Detail(c *gin.Context) { function NewRoleController (line 19) | func NewRoleController() *RoleController { FILE: internal/controller/admin_v1/auth_session.go type SessionController (line 13) | type SessionController struct method List (line 22) | func (api SessionController) List(c *gin.Context) { method Revoke (line 33) | func (api SessionController) Revoke(c *gin.Context) { function NewSessionController (line 17) | func NewSessionController() *SessionController { FILE: internal/controller/admin_v1/auth_storage_config.go type StorageConfigController (line 13) | type StorageConfigController struct method Config (line 21) | func (api StorageConfigController) Config(c *gin.Context) { method Save (line 30) | func (api StorageConfigController) Save(c *gin.Context) { method Test (line 49) | func (api StorageConfigController) Test(c *gin.Context) { function NewStorageConfigController (line 17) | func NewStorageConfigController() *StorageConfigController { FILE: internal/controller/admin_v1/auth_sys_config.go type SysConfigController (line 15) | type SysConfigController struct method List (line 23) | func (api SysConfigController) List(c *gin.Context) { method Detail (line 31) | func (api SysConfigController) Detail(c *gin.Context) { method Value (line 44) | func (api SysConfigController) Value(c *gin.Context) { method Create (line 57) | func (api SysConfigController) Create(c *gin.Context) { method Update (line 73) | func (api SysConfigController) Update(c *gin.Context) { method Delete (line 89) | func (api SysConfigController) Delete(c *gin.Context) { method Refresh (line 103) | func (api SysConfigController) Refresh(c *gin.Context) { function NewSysConfigController (line 19) | func NewSysConfigController() *SysConfigController { FILE: internal/controller/admin_v1/auth_sys_dict.go type SysDictController (line 14) | type SysDictController struct method TypeList (line 22) | func (api SysDictController) TypeList(c *gin.Context) { method TypeDetail (line 30) | func (api SysDictController) TypeDetail(c *gin.Context) { method TypeCreate (line 43) | func (api SysDictController) TypeCreate(c *gin.Context) { method TypeUpdate (line 57) | func (api SysDictController) TypeUpdate(c *gin.Context) { method TypeDelete (line 71) | func (api SysDictController) TypeDelete(c *gin.Context) { method ItemList (line 85) | func (api SysDictController) ItemList(c *gin.Context) { method ItemCreate (line 93) | func (api SysDictController) ItemCreate(c *gin.Context) { method ItemUpdate (line 107) | func (api SysDictController) ItemUpdate(c *gin.Context) { method ItemDelete (line 121) | func (api SysDictController) ItemDelete(c *gin.Context) { method Options (line 135) | func (api SysDictController) Options(c *gin.Context) { function NewSysDictController (line 18) | func NewSysDictController() *SysDictController { FILE: internal/controller/admin_v1/auth_task_center.go type TaskCenterController (line 14) | type TaskCenterController struct method TaskList (line 23) | func (api TaskCenterController) TaskList(c *gin.Context) { method RunList (line 34) | func (api TaskCenterController) RunList(c *gin.Context) { method RunDetail (line 45) | func (api TaskCenterController) RunDetail(c *gin.Context) { method RunEvents (line 60) | func (api TaskCenterController) RunEvents(c *gin.Context) { method CronStateList (line 75) | func (api TaskCenterController) CronStateList(c *gin.Context) { method Trigger (line 86) | func (api TaskCenterController) Trigger(c *gin.Context) { method Retry (line 109) | func (api TaskCenterController) Retry(c *gin.Context) { method Cancel (line 133) | func (api TaskCenterController) Cancel(c *gin.Context) { function NewTaskCenterController (line 18) | func NewTaskCenterController() *TaskCenterController { FILE: internal/controller/admin_v1/auth_test.go function TestExtractAccessToken (line 24) | func TestExtractAccessToken(t *testing.T) { function TestCheckTokenWithoutAuthorization (line 42) | func TestCheckTokenWithoutAuthorization(t *testing.T) { function TestLoginWithoutRequiredParams (line 62) | func TestLoginWithoutRequiredParams(t *testing.T) { function TestBuildLoginLogInfo (line 82) | func TestBuildLoginLogInfo(t *testing.T) { function TestBuildLoginLogInfoFallbacksUnknownForMissingUserAgent (line 106) | func TestBuildLoginLogInfoFallbacksUnknownForMissingUserAgent(t *testing... function initControllerAuthTest (line 123) | func initControllerAuthTest(t *testing.T) { FILE: internal/controller/admin_v1/dashboard.go type DashboardController (line 10) | type DashboardController struct method Overview (line 18) | func (api DashboardController) Overview(c *gin.Context) { function NewDashboardController (line 14) | func NewDashboardController() *DashboardController { FILE: internal/controller/admin_v1/sys_common.go constant defaultUploadPath (line 15) | defaultUploadPath = "default" type CommonController (line 19) | type CommonController struct method Upload (line 29) | func (api CommonController) Upload(c *gin.Context) { method GetFile (line 66) | func (api CommonController) GetFile(c *gin.Context) { function NewCommonController (line 24) | func NewCommonController() *CommonController { FILE: internal/controller/sys_base.go type Api (line 20) | type Api struct method Success (line 25) | func (api Api) Success(c *gin.Context, data ...any) { method FailCode (line 35) | func (api Api) FailCode(c *gin.Context, code int, data ...any) { method FailCodeByKey (line 45) | func (api Api) FailCodeByKey(c *gin.Context, code int, key string, arg... method Fail (line 50) | func (api Api) Fail(c *gin.Context, code int, message string, data ...... method Err (line 61) | func (api Api) Err(c *gin.Context, err error) { method GetCurrentUserID (line 89) | func (api Api) GetCurrentUserID(c *gin.Context) uint { method GetCurrentAdminUserSnapshot (line 94) | func (api Api) GetCurrentAdminUserSnapshot(c *gin.Context) *model.Admi... method GetCurrentAdminUserDetail (line 102) | func (api Api) GetCurrentAdminUserDetail(c *gin.Context) (*resources.A... FILE: internal/controller/sys_base_test.go function TestApiErrMapsDBUninitializedToDependencyNotReady (line 16) | func TestApiErrMapsDBUninitializedToDependencyNotReady(t *testing.T) { FILE: internal/controller/sys_demo.go type DemoController (line 10) | type DemoController struct method HelloWorld (line 20) | func (api DemoController) HelloWorld(c *gin.Context) { function NewDemoController (line 15) | func NewDemoController() *DemoController { FILE: internal/cron/queue_fallback.go function RegisterQueueFallbackHandlers (line 13) | func RegisterQueueFallbackHandlers(registry queue.Registry, cfg *config.... FILE: internal/cron/queue_fallback_test.go function TestRegisterQueueFallbackHandlersRegistersDisabledNonHighRiskCron (line 12) | func TestRegisterQueueFallbackHandlersRegistersDisabledNonHighRiskCron(t... function TestRegisterQueueFallbackHandlersSkipsHighRiskCron (line 29) | func TestRegisterQueueFallbackHandlersSkipsHighRiskCron(t *testing.T) { function findRegistration (line 40) | func findRegistration(registry queue.Registry, taskType string) (queue.R... FILE: internal/cron/registry.go constant TaskCodeCronDemo (line 22) | TaskCodeCronDemo = "cron:demo" constant TaskCodeCronResetSystemData (line 23) | TaskCodeCronResetSystemData = "cron:reset-system-data" constant HandlerCronDemo (line 25) | HandlerCronDemo = "cron.demo" constant HandlerCronResetSystemData (line 26) | HandlerCronResetSystemData = "cron.reset-system-data" constant cronLogTimeFormat (line 29) | cronLogTimeFormat = "2006-01-02 15:04:05" type HandlerFunc (line 31) | type HandlerFunc function RegisterHandler (line 43) | func RegisterHandler(handler string, fn HandlerFunc) { function ExecuteHandler (line 53) | func ExecuteHandler(ctx context.Context, handler string, payload map[str... function BuiltinTaskDefinitions (line 65) | func BuiltinTaskDefinitions(cfg *config.Conf) []model.TaskDefinition { function SyncBuiltinDefinitionsIfAvailable (line 121) | func SyncBuiltinDefinitionsIfAvailable(cfg *config.Conf) error { function syncBuiltinDefinitions (line 132) | func syncBuiltinDefinitions(db *gorm.DB, cfg *config.Conf) error { function upsertTaskDefinition (line 145) | func upsertTaskDefinition(db *gorm.DB, definition model.TaskDefinition) ... FILE: internal/cron/registry_test.go function TestSyncBuiltinDefinitionsUpsert (line 14) | func TestSyncBuiltinDefinitionsUpsert(t *testing.T) { function assertTaskDefinitionCount (line 40) | func assertTaskDefinitionCount(t *testing.T, db *gorm.DB, expected int64) { function assertTaskStatus (line 52) | func assertTaskStatus(t *testing.T, db *gorm.DB, code string, expected u... function assertTaskAllowManual (line 64) | func assertTaskAllowManual(t *testing.T, db *gorm.DB, code string, expec... function newTaskDefinitionSyncTestDB (line 76) | func newTaskDefinitionSyncTestDB(t *testing.T) *gorm.DB { FILE: internal/filestorage/aliyun_oss.go type AliyunOSSDriver (line 13) | type AliyunOSSDriver struct method Name (line 33) | func (d *AliyunOSSDriver) Name() string { return "aliyun_oss" } method Put (line 35) | func (d *AliyunOSSDriver) Put(ctx context.Context, input PutInput) (Pu... method Open (line 50) | func (d *AliyunOSSDriver) Open(ctx context.Context, bucket, objectKey ... method Exists (line 58) | func (d *AliyunOSSDriver) Exists(ctx context.Context, bucket, objectKe... method Delete (line 62) | func (d *AliyunOSSDriver) Delete(ctx context.Context, bucket, objectKe... method URL (line 67) | func (d *AliyunOSSDriver) URL(bucket, objectKey string, isPublic bool)... method SignedURL (line 74) | func (d *AliyunOSSDriver) SignedURL(ctx context.Context, bucket, objec... function NewAliyunOSSDriver (line 19) | func NewAliyunOSSDriver(config AliyunOSSConfig) *AliyunOSSDriver { FILE: internal/filestorage/local.go type LocalDriver (line 14) | type LocalDriver struct method Name (line 25) | func (d *LocalDriver) Name() string { return "local" } method Put (line 27) | func (d *LocalDriver) Put(_ context.Context, input PutInput) (PutResul... method Open (line 46) | func (d *LocalDriver) Open(_ context.Context, bucket, objectKey string... method Exists (line 54) | func (d *LocalDriver) Exists(_ context.Context, bucket, objectKey stri... method Delete (line 69) | func (d *LocalDriver) Delete(_ context.Context, bucket, objectKey stri... method URL (line 80) | func (d *LocalDriver) URL(bucket, objectKey string, _ bool) string { method SignedURL (line 87) | func (d *LocalDriver) SignedURL(_ context.Context, bucket, objectKey s... method resolve (line 91) | func (d *LocalDriver) resolve(bucket, objectKey string) (string, error) { function NewLocalDriver (line 19) | func NewLocalDriver(config LocalConfig, fallbackPublicPath, fallbackPriv... function firstNonEmpty (line 114) | func firstNonEmpty(values ...string) string { FILE: internal/filestorage/local_test.go function TestLocalDriverPutExistsOpenDelete (line 11) | func TestLocalDriverPutExistsOpenDelete(t *testing.T) { FILE: internal/filestorage/s3.go type S3Driver (line 15) | type S3Driver struct method Name (line 44) | func (d *S3Driver) Name() string { return "s3" } method Put (line 46) | func (d *S3Driver) Put(ctx context.Context, input PutInput) (PutResult... method Open (line 61) | func (d *S3Driver) Open(ctx context.Context, bucket, objectKey string)... method Exists (line 69) | func (d *S3Driver) Exists(ctx context.Context, bucket, objectKey strin... method Delete (line 77) | func (d *S3Driver) Delete(ctx context.Context, bucket, objectKey strin... method URL (line 82) | func (d *S3Driver) URL(bucket, objectKey string, isPublic bool) string { method SignedURL (line 89) | func (d *S3Driver) SignedURL(ctx context.Context, bucket, objectKey st... function NewS3Driver (line 22) | func NewS3Driver(ctx context.Context, config S3Config) (*S3Driver, error) { FILE: internal/filestorage/types.go constant MaskPlaceholder (line 9) | MaskPlaceholder = "******" type Config (line 11) | type Config struct type LocalConfig (line 20) | type LocalConfig struct type AliyunOSSConfig (line 26) | type AliyunOSSConfig struct type S3Config (line 37) | type S3Config struct type PutInput (line 47) | type PutInput struct type PutResult (line 55) | type PutResult struct type Driver (line 61) | type Driver interface function DefaultConfig (line 71) | func DefaultConfig() Config { FILE: internal/global/api_auth_mode.go type ApiAuthMode (line 4) | type ApiAuthMode method RequiresLogin (line 16) | func (m ApiAuthMode) RequiresLogin() bool { method RequiresAPIPermission (line 21) | func (m ApiAuthMode) RequiresAPIPermission() bool { method Label (line 26) | func (m ApiAuthMode) Label() string { constant ApiAuthModeNone (line 8) | ApiAuthModeNone ApiAuthMode = iota constant ApiAuthModeLogin (line 10) | ApiAuthModeLogin constant ApiAuthModeAuth (line 12) | ApiAuthModeAuth FILE: internal/global/api_auth_mode_test.go function TestApiAuthModeRequiresLogin (line 5) | func TestApiAuthModeRequiresLogin(t *testing.T) { function TestApiAuthModeRequiresAPIPermission (line 17) | func TestApiAuthModeRequiresAPIPermission(t *testing.T) { function TestApiAuthModeLabel (line 29) | func TestApiAuthModeLabel(t *testing.T) { FILE: internal/global/auth.go constant SuperAdminId (line 4) | SuperAdminId uint = 1 constant Issuer (line 5) | Issuer = "go-layout" constant PcAdminSubject (line 6) | PcAdminSubject = "pc-admin-token" constant CasbinAdminUserPrefix (line 7) | CasbinAdminUserPrefix = "adminUser" constant CasbinRolePrefix (line 8) | CasbinRolePrefix = "role" constant CasbinMenuPrefix (line 9) | CasbinMenuPrefix = "menu" constant CasbinDeptPrefix (line 10) | CasbinDeptPrefix = "dept" constant CasbinSeparator (line 11) | CasbinSeparator = ":" FILE: internal/global/common.go constant Version (line 5) | Version = "0.9.2" constant PerPage (line 7) | PerPage = 10 constant Yes (line 9) | Yes uint8 = 1 constant No (line 11) | No uint8 = 0 constant ChinaCountryCode (line 13) | ChinaCountryCode = "86" constant SUCCESS (line 15) | SUCCESS = "SUCCESS" constant ERROR (line 17) | ERROR = "ERROR" FILE: internal/global/context_keys.go constant ContextKeyUID (line 4) | ContextKeyUID = "uid" constant ContextKeyAdminUser (line 5) | ContextKeyAdminUser = "admin_user" constant ContextKeyAuthPrincipal (line 6) | ContextKeyAuthPrincipal = "auth_principal" constant ContextKeyLocale (line 7) | ContextKeyLocale = "locale" constant ContextKeyRequestID (line 8) | ContextKeyRequestID = "requestId" constant ContextKeyRequestStartTime (line 9) | ContextKeyRequestStartTime = "requestStartTime" constant ContextKeyAuditChangeDiff (line 10) | ContextKeyAuditChangeDiff = "auditChangeDiff" constant ContextKeyAuditHighRisk (line 11) | ContextKeyAuditHighRisk = "auditHighRisk" constant ContextKeyAuditRequestBody (line 12) | ContextKeyAuditRequestBody = "auditRequestBody" FILE: internal/global/system_defaults.go constant DefaultDepartmentCode (line 4) | DefaultDepartmentCode = "default_department" constant SuperAdminRoleCode (line 5) | SuperAdminRoleCode = "super_admin" FILE: internal/jobs/audit_log.go constant AuditLogTaskType (line 16) | AuditLogTaskType = "audit:request_log.write" constant AuditQueueName (line 17) | AuditQueueName = "audit" constant AuditLogKindRequest (line 19) | AuditLogKindRequest = "request" constant AuditLogKindPanic (line 20) | AuditLogKindPanic = "panic" type AuditLogHandlerDeps (line 24) | type AuditLogHandlerDeps struct type AuditLogPayload (line 29) | type AuditLogPayload struct method Validate (line 47) | func (p AuditLogPayload) Validate() error { function NewAuditLogPayload (line 35) | func NewAuditLogPayload(kind string, snapshot *auditsvc.AuditLogSnapshot... function EnqueueAuditLog (line 58) | func EnqueueAuditLog(ctx context.Context, kind string, snapshot *auditsv... function auditLogOptions (line 67) | func auditLogOptions() []queue.JobOption { function RegisterAll (line 86) | func RegisterAll(registry queue.Registry) { function RegisterAllWithDeps (line 91) | func RegisterAllWithDeps(registry queue.Registry, deps AuditLogHandlerDe... FILE: internal/jobs/audit_log_test.go function TestNewAuditLogPayload (line 12) | func TestNewAuditLogPayload(t *testing.T) { function TestAuditLogHandlerReturnsSkipRetryForInvalidPayload (line 25) | func TestAuditLogHandlerReturnsSkipRetryForInvalidPayload(t *testing.T) { function TestAuditLogHandlerPersistsSnapshot (line 43) | func TestAuditLogHandlerPersistsSnapshot(t *testing.T) { FILE: internal/jobs/registry.go function NewRegistry (line 6) | func NewRegistry() queue.Registry { FILE: internal/middleware/admin_auth.go type routeAuthChecker (line 18) | type routeAuthChecker interface type permissionDeps (line 22) | type permissionDeps struct function newDefaultPermissionDeps (line 29) | func newDefaultPermissionDeps() permissionDeps { function AdminAuthHandler (line 37) | func AdminAuthHandler() gin.HandlerFunc { function AdminAuthHandlerWithDeps (line 42) | func AdminAuthHandlerWithDeps(deps permissionDeps) gin.HandlerFunc { function isSuperAdmin (line 85) | func isSuperAdmin(principal *auth.AuthPrincipal) bool { function checkPermission (line 90) | func checkPermission(c *gin.Context, userID uint, deps permissionDeps) e... function loadEnforcer (line 98) | func loadEnforcer(deps permissionDeps) (*casbinx.CasbinEnforcer, error) { function enforcePermission (line 107) | func enforcePermission(enforcer *casbinx.CasbinEnforcer, c *gin.Context,... FILE: internal/middleware/admin_auth_test.go type stubRouteChecker (line 21) | type stubRouteChecker struct method CheckoutRouteIsAuth (line 25) | func (s stubRouteChecker) CheckoutRouteIsAuth(string, string) bool { function TestAdminAuthHandlerWithDepsAllowsPublicRouteWhenDenied (line 29) | func TestAdminAuthHandlerWithDepsAllowsPublicRouteWhenDenied(t *testing.... function TestAdminAuthHandlerWithDepsReturnsServerErrWhenEnforcerLoadFails (line 65) | func TestAdminAuthHandlerWithDepsReturnsServerErrWhenEnforcerLoadFails(t... function TestAdminAuthHandlerWithDepsReturnsAuthorizationMessageWhenDenied (line 105) | func TestAdminAuthHandlerWithDepsReturnsAuthorizationMessageWhenDenied(t... function buildTestEnforcer (line 146) | func buildTestEnforcer(t *testing.T) *casbin.Enforcer { function decodeResult (line 170) | func decodeResult(t *testing.T, body []byte) *response.Result { FILE: internal/middleware/audit_context.go function SetAuditChangeDiff (line 13) | func SetAuditChangeDiff(c *gin.Context, before any, after any) { function SetAuditChangeDiffRaw (line 28) | func SetAuditChangeDiffRaw(c *gin.Context, rawJSON string) { function SetAuditHighRisk (line 36) | func SetAuditHighRisk(c *gin.Context, highRisk bool) { function SetAuditRequestBodyRaw (line 44) | func SetAuditRequestBodyRaw(c *gin.Context, rawJSON string) { FILE: internal/middleware/audit_queue.go constant auditEnqueueTimeout (line 20) | auditEnqueueTimeout = 2 * time.Second type auditQueueDeps (line 30) | type auditQueueDeps struct function setAuditQueueDepsForTesting (line 35) | func setAuditQueueDepsForTesting(deps auditQueueDeps) func() { function enqueueAuditLog (line 61) | func enqueueAuditLog(c *gin.Context, kind string, snapshot *audit.AuditL... function reportAuditPersistenceResult (line 102) | func reportAuditPersistenceResult(kind string, snapshot *audit.AuditLogS... FILE: internal/middleware/audit_queue_test.go function TestEnqueueAuditLogDelegatesToPublisher (line 23) | func TestEnqueueAuditLogDelegatesToPublisher(t *testing.T) { function TestEnqueueAuditLogFailureDoesNotPanic (line 64) | func TestEnqueueAuditLogFailureDoesNotPanic(t *testing.T) { function TestEnqueueAuditLogResetsUnavailableFlagAfterSuccess (line 75) | func TestEnqueueAuditLogResetsUnavailableFlagAfterSuccess(t *testing.T) { function TestEnqueueAuditLogMarksUnavailableWhenPublisherUnavailable (line 96) | func TestEnqueueAuditLogMarksUnavailableWhenPublisherUnavailable(t *test... function TestEnqueueAuditLogPersistsSynchronouslyWhenQueueDisabled (line 117) | func TestEnqueueAuditLogPersistsSynchronouslyWhenQueueDisabled(t *testin... function TestEnqueueAuditLogHandlesStorageUnavailableWhenQueueDisabled (line 147) | func TestEnqueueAuditLogHandlesStorageUnavailableWhenQueueDisabled(t *te... function TestReportAuditPersistenceResultMarksStorageUnavailable (line 168) | func TestReportAuditPersistenceResultMarksStorageUnavailable(t *testing.... function TestReportAuditPersistenceResultResetsStorageUnavailableAfterSuccess (line 184) | func TestReportAuditPersistenceResultResetsStorageUnavailableAfterSucces... FILE: internal/middleware/cors.go function CorsHandler (line 16) | func CorsHandler() gin.HandlerFunc { function resolveAllowOrigin (line 53) | func resolveAllowOrigin(origin string, cfg *config.Conf) (string, bool) { function getAllowedMethods (line 63) | func getAllowedMethods(cfg *config.Conf) []string { function defaultMethods (line 73) | func defaultMethods() []string { function getAllowedHeaders (line 79) | func getAllowedHeaders(c *gin.Context, cfg *config.Conf) string { function getExposeHeaders (line 97) | func getExposeHeaders(cfg *config.Conf) string { function getMaxAge (line 107) | func getMaxAge(cfg *config.Conf) int { function isOriginAllowed (line 114) | func isOriginAllowed(origin string, cfg *config.Conf) bool { function hasWildcardOrigin (line 134) | func hasWildcardOrigin(cfg *config.Conf) bool { function hasWildcardValue (line 143) | func hasWildcardValue(values []string) bool { FILE: internal/middleware/cors_test.go function TestCorsHandlerAllowsWildcardOrigin (line 14) | func TestCorsHandlerAllowsWildcardOrigin(t *testing.T) { function TestCorsHandlerReflectsOriginWhenCredentialsEnabled (line 46) | func TestCorsHandlerReflectsOriginWhenCredentialsEnabled(t *testing.T) { function TestCorsHandlerRejectsUnknownOrigin (line 81) | func TestCorsHandlerRejectsUnknownOrigin(t *testing.T) { function TestCorsHandlerAllowsWildcardMethodsAndHeaders (line 109) | func TestCorsHandlerAllowsWildcardMethodsAndHeaders(t *testing.T) { function TestGetExposeHeadersSupportsWildcard (line 147) | func TestGetExposeHeadersSupportsWildcard(t *testing.T) { FILE: internal/middleware/database_ready.go function DatabaseReadyGuard (line 13) | func DatabaseReadyGuard() gin.HandlerFunc { function OptionalDatabaseReadyGuard (line 19) | func OptionalDatabaseReadyGuard() gin.HandlerFunc { function databaseReadyGuard (line 23) | func databaseReadyGuard(skipWhenNoUID bool) gin.HandlerFunc { FILE: internal/middleware/database_ready_test.go type dependencyErrorResponse (line 17) | type dependencyErrorResponse struct function TestDatabaseReadyGuardBlocksWhenMysqlUnavailable (line 21) | func TestDatabaseReadyGuardBlocksWhenMysqlUnavailable(t *testing.T) { function TestOptionalDatabaseReadyGuardKeepsUnauthenticatedRequests (line 44) | func TestOptionalDatabaseReadyGuardKeepsUnauthenticatedRequests(t *testi... function TestOptionalDatabaseReadyGuardBlocksAuthenticatedRequests (line 69) | func TestOptionalDatabaseReadyGuardBlocksAuthenticatedRequests(t *testin... function disableMysqlForGuardTest (line 96) | func disableMysqlForGuardTest(t *testing.T) func() { function assertDependencyNotReadyCode (line 114) | func assertDependencyNotReadyCode(t *testing.T, recorder *httptest.Respo... FILE: internal/middleware/logger.go constant defaultStatusCode (line 12) | defaultStatusCode = http.StatusOK constant maxRequestBodySize (line 13) | maxRequestBodySize = 16 * 1024 constant maxResponseBodySize (line 14) | maxResponseBodySize = 32 * 1024 function CustomLogger (line 18) | func CustomLogger() gin.HandlerFunc { function prepareRequestLogging (line 27) | func prepareRequestLogging(c *gin.Context) *responseRecorder { function finalizeRequestLogging (line 38) | func finalizeRequestLogging(c *gin.Context, recorder *responseRecorder) { function logRequest (line 47) | func logRequest(c *gin.Context, recorder *responseRecorder) { function shouldSkipRequestLogging (line 52) | func shouldSkipRequestLogging(c *gin.Context, recorder *responseRecorder... function publishRequestAuditLog (line 67) | func publishRequestAuditLog(c *gin.Context, recorder *responseRecorder) { FILE: internal/middleware/logger_bench_test.go function BenchmarkCustomLoggerJSONPost (line 16) | func BenchmarkCustomLoggerJSONPost(b *testing.B) { FILE: internal/middleware/logger_recorder.go type requestBodyCache (line 15) | type requestBodyCache struct type responseRecorder (line 22) | type responseRecorder struct method Write (line 32) | func (r *responseRecorder) Write(b []byte) (int, error) { method WriteString (line 38) | func (r *responseRecorder) WriteString(s string) (int, error) { method WriteHeader (line 44) | func (r *responseRecorder) WriteHeader(statusCode int) { method cacheBody (line 85) | func (r *responseRecorder) cacheBody(b []byte) { function cacheRequestBody (line 50) | func cacheRequestBody(c *gin.Context) { function createResponseRecorder (line 76) | func createResponseRecorder(c *gin.Context) *responseRecorder { function parseResponse (line 109) | func parseResponse(c *gin.Context, recorder *responseRecorder) *response... function shouldCaptureResponseBody (line 127) | func shouldCaptureResponseBody(c *gin.Context) bool { function readRequestBody (line 138) | func readRequestBody(c *gin.Context) []byte { function getRequestBodyCache (line 166) | func getRequestBodyCache(c *gin.Context) *requestBodyCache { function truncateBytes (line 175) | func truncateBytes(body []byte, maxSize int) []byte { function shouldSkipRequestBodyCache (line 182) | func shouldSkipRequestBodyCache(c *gin.Context) bool { function snapshotRequestBody (line 194) | func snapshotRequestBody(req *http.Request) ([]byte, int, bool, error) { FILE: internal/middleware/logger_storage.go function buildRequestAuditLogSnapshot (line 21) | func buildRequestAuditLogSnapshot(c *gin.Context, recorder *responseReco... function buildPanicAuditLogSnapshot (line 28) | func buildPanicAuditLogSnapshot(c *gin.Context, panicMessage string) *au... type auditRequestMeta (line 46) | type auditRequestMeta struct type auditOperatorMeta (line 61) | type auditOperatorMeta struct function buildAuditLogSnapshot (line 69) | func buildAuditLogSnapshot(c *gin.Context, recorder *responseRecorder, o... function collectAuditRequestMeta (line 106) | func collectAuditRequestMeta(c *gin.Context) *auditRequestMeta { function collectAuditOperatorMeta (line 135) | func collectAuditOperatorMeta(c *gin.Context) auditOperatorMeta { function calculateExecutionTimeMs (line 150) | func calculateExecutionTimeMs(c *gin.Context) float64 { function resolveAuditResponseStatus (line 156) | func resolveAuditResponseStatus(recorder *responseRecorder) int { function buildMaskedRequestBody (line 163) | func buildMaskedRequestBody(c *gin.Context) string { function resolveAuditRequestBody (line 184) | func resolveAuditRequestBody(c *gin.Context) string { function buildMaskedResponseBody (line 195) | func buildMaskedResponseBody(recorder *responseRecorder) string { function resolveAuditHighRisk (line 211) | func resolveAuditHighRisk(c *gin.Context, method string) uint8 { function resolveAuditChangeDiff (line 249) | func resolveAuditChangeDiff(c *gin.Context, isHighRisk uint8, requestBod... function operationStatusFromResponse (line 281) | func operationStatusFromResponse(recorder *responseRecorder, resp *respo... function getOperationName (line 292) | func getOperationName(route string, method string, headerOperationName s... FILE: internal/middleware/logger_test.go function TestCacheRequestBody (line 20) | func TestCacheRequestBody(t *testing.T) { function TestCacheRequestBodySkipsGet (line 34) | func TestCacheRequestBodySkipsGet(t *testing.T) { function TestCacheRequestBodySkipsMultipartRequests (line 46) | func TestCacheRequestBodySkipsMultipartRequests(t *testing.T) { function TestParseResponse (line 60) | func TestParseResponse(t *testing.T) { function TestParseResponseForNonJSON (line 80) | func TestParseResponseForNonJSON(t *testing.T) { function TestBuildMaskedBodies (line 95) | func TestBuildMaskedBodies(t *testing.T) { function TestReadRequestBodyPreservesLargeRequestBody (line 138) | func TestReadRequestBodyPreservesLargeRequestBody(t *testing.T) { function TestOperationStatusFromResponse (line 163) | func TestOperationStatusFromResponse(t *testing.T) { function TestLogRequestSkipsPing (line 179) | func TestLogRequestSkipsPing(t *testing.T) { function TestBuildRequestAuditLogSnapshotUsesPrincipal (line 190) | func TestBuildRequestAuditLogSnapshotUsesPrincipal(t *testing.T) { function TestBuildRequestAuditLogSnapshotUsesAuditRequestBodyOverride (line 221) | func TestBuildRequestAuditLogSnapshotUsesAuditRequestBodyOverride(t *tes... function TestBuildRequestAuditLogSnapshotMarksHighRiskAndDiff (line 243) | func TestBuildRequestAuditLogSnapshotMarksHighRiskAndDiff(t *testing.T) { function TestBuildRequestAuditLogSnapshotGetRequestIsNotHighRiskByDefault (line 279) | func TestBuildRequestAuditLogSnapshotGetRequestIsNotHighRiskByDefault(t ... FILE: internal/middleware/parse_token.go function ParseTokenHandler (line 17) | func ParseTokenHandler() gin.HandlerFunc { FILE: internal/middleware/recovery.go constant panicErrorPrefix (line 23) | panicErrorPrefix = "An error occurred in the server's internal code: " constant panicRecoveredMsg (line 25) | panicRecoveredMsg = "panic recovered" function CustomRecovery (line 30) | func CustomRecovery() gin.HandlerFunc { function handlePanic (line 36) | func handlePanic(c *gin.Context, err interface{}) { type PanicExceptionRecord (line 76) | type PanicExceptionRecord struct method Write (line 79) | func (p *PanicExceptionRecord) Write(b []byte) (n int, err error) { FILE: internal/middleware/request_cost.go function RequestCostHandler (line 16) | func RequestCostHandler() gin.HandlerFunc { FILE: internal/middleware/request_locale.go constant acceptLanguageHeader (line 10) | acceptLanguageHeader = "Accept-Language" function RequestLocaleHandler (line 13) | func RequestLocaleHandler() gin.HandlerFunc { function LocaleFromContext (line 22) | func LocaleFromContext(c *gin.Context) string { FILE: internal/middleware/request_locale_test.go function TestRequestLocaleHandler (line 13) | func TestRequestLocaleHandler(t *testing.T) { function TestLocaleFromContextFallback (line 34) | func TestLocaleFromContextFallback(t *testing.T) { FILE: internal/model/admin_login_logs.go constant LoginTypeLogin (line 13) | LoginTypeLogin uint8 = 1 constant LoginTypeRefresh (line 14) | LoginTypeRefresh uint8 = 2 constant LoginStatusSuccess (line 19) | LoginStatusSuccess uint8 = 1 constant LoginStatusFail (line 20) | LoginStatusFail uint8 = 0 constant IsRevokedNo (line 37) | IsRevokedNo = global.No constant IsRevokedYes (line 38) | IsRevokedYes = global.Yes constant RevokedCodeUserLogout (line 43) | RevokedCodeUserLogout uint8 = 1 constant RevokedCodeSystemForce (line 44) | RevokedCodeSystemForce uint8 = 2 constant RevokedCodeTokenRefresh (line 45) | RevokedCodeTokenRefresh uint8 = 3 constant RevokedCodeUserDisable (line 46) | RevokedCodeUserDisable uint8 = 4 constant RevokedCodeOther (line 47) | RevokedCodeOther uint8 = 5 constant RevokedCodePasswordChangeSelf (line 48) | RevokedCodePasswordChangeSelf uint8 = 6 constant RevokedCodePasswordChangeAdmin (line 49) | RevokedCodePasswordChangeAdmin uint8 = 7 type AdminLoginLogs (line 64) | type AdminLoginLogs struct method TableName (line 94) | func (m *AdminLoginLogs) TableName() string { method LoginStatusMap (line 99) | func (m *AdminLoginLogs) LoginStatusMap() string { method TypeMap (line 104) | func (m *AdminLoginLogs) TypeMap() string { method IsRevokedMap (line 109) | func (m *AdminLoginLogs) IsRevokedMap() string { method RevokedCodeMap (line 114) | func (m *AdminLoginLogs) RevokedCodeMap() string { method Create (line 119) | func (m *AdminLoginLogs) Create() error { method FindByJwtId (line 128) | func (m *AdminLoginLogs) FindByJwtId(jwtId string) error { method UpdateRevokedStatusByJwtIds (line 137) | func (m *AdminLoginLogs) UpdateRevokedStatusByJwtIds(jwtIds []string, ... method FindActiveTokensByUserId (line 155) | func (m *AdminLoginLogs) FindActiveTokensByUserId(userId uint, now tim... function NewAdminLoginLogs (line 89) | func NewAdminLoginLogs() *AdminLoginLogs { FILE: internal/model/admin_user_dept_map.go type AdminUserDeptMap (line 4) | type AdminUserDeptMap struct method TableName (line 15) | func (m *AdminUserDeptMap) TableName() string { method CreateBatch (line 19) | func (m *AdminUserDeptMap) CreateBatch(mappings []*AdminUserDeptMap) e... method DeptIdsByUid (line 28) | func (m *AdminUserDeptMap) DeptIdsByUid(uid uint) ([]uint, error) { method UidsByDeptIds (line 41) | func (m *AdminUserDeptMap) UidsByDeptIds(deptIds []uint) ([]uint, erro... method UserDeptMapByUids (line 57) | func (m *AdminUserDeptMap) UserDeptMapByUids(uids []uint) (map[uint][]... method CountByCondition (line 83) | func (m *AdminUserDeptMap) CountByCondition(condition string, args ...... method CreateOne (line 96) | func (m *AdminUserDeptMap) CreateOne() error { function NewAdminUserDeptMap (line 10) | func NewAdminUserDeptMap() *AdminUserDeptMap { FILE: internal/model/admin_user_role_map.go type AdminUserRoleMap (line 4) | type AdminUserRoleMap struct method TableName (line 15) | func (m *AdminUserRoleMap) TableName() string { method CreateBatch (line 19) | func (m *AdminUserRoleMap) CreateBatch(mappings []*AdminUserRoleMap) e... method RoleIdsByUid (line 28) | func (m *AdminUserRoleMap) RoleIdsByUid(uid uint) ([]uint, error) { method UidsByRoleIds (line 41) | func (m *AdminUserRoleMap) UidsByRoleIds(roleIds []uint) ([]uint, erro... method UserRoleMapByUids (line 57) | func (m *AdminUserRoleMap) UserRoleMapByUids(uids []uint) (map[uint][]... method CountByCondition (line 81) | func (m *AdminUserRoleMap) CountByCondition(condition string, args ...... method CreateOne (line 94) | func (m *AdminUserRoleMap) CreateOne() error { function NewAdminUserRoleMap (line 10) | func NewAdminUserRoleMap() *AdminUserRoleMap { FILE: internal/model/admin_users.go constant AdminUserStatusEnabled (line 14) | AdminUserStatusEnabled uint8 = 1 constant AdminUserStatusDisabled (line 15) | AdminUserStatusDisabled uint8 = 0 type AdminUser (line 31) | type AdminUser struct method TableName (line 54) | func (m *AdminUser) TableName() string { method GetUserInfo (line 59) | func (m *AdminUser) GetUserInfo(username string) error { method IsSuperAdminMap (line 71) | func (m *AdminUser) IsSuperAdminMap() string { method StatusMap (line 76) | func (m *AdminUser) StatusMap() string { method SyncUserRows (line 88) | func (m *AdminUser) SyncUserRows(userIDs []uint) ([]SyncUserRow, error) { method AllIds (line 107) | func (m *AdminUser) AllIds() ([]uint, error) { method ExistsWithLock (line 120) | func (m *AdminUser) ExistsWithLock(condition string, args ...any) (boo... method ExistsWithLockExcludeId (line 138) | func (m *AdminUser) ExistsWithLockExcludeId(field string, value string... method GetByIdWithPreload (line 161) | func (m *AdminUser) GetByIdWithPreload(id uint, relations ...string) e... function NewAdminUsers (line 49) | func NewAdminUsers() *AdminUser { type SyncUserRow (line 81) | type SyncUserRow struct FILE: internal/model/admin_users_test.go function TestExistsWithLockExcludeIdRejectsUnknownField (line 8) | func TestExistsWithLockExcludeIdRejectsUnknownField(t *testing.T) { function TestExistsWithLockExcludeIdAllowedFieldReturnsDBErrorWhenUninitialized (line 16) | func TestExistsWithLockExcludeIdAllowedFieldReturnsDBErrorWhenUninitiali... FILE: internal/model/api.go type Api (line 12) | type Api struct method TableName (line 32) | func (m *Api) TableName() string { method InitRegisters (line 37) | func (m *Api) InitRegisters(data []map[string]any, date string) error { method IsAuthMap (line 59) | func (m *Api) IsAuthMap() string { method IsEffectiveMap (line 64) | func (m *Api) IsEffectiveMap() string { method FindIdsByRouteAndMethod (line 69) | func (m *Api) FindIdsByRouteAndMethod(routes []string, methods []strin... method FindByIds (line 85) | func (m *Api) FindByIds(ids []uint) ([]Api, error) { function NewApi (line 27) | func NewApi() *Api { FILE: internal/model/base.go type BaseModel (line 16) | type BaseModel struct type ContainsDeleteBaseModel (line 34) | type ContainsDeleteBaseModel struct function GetDB (line 40) | func GetDB(model ...any) (*gorm.DB, error) { function validateModelArg (line 60) | func validateModelArg(model any) error { FILE: internal/model/base_crud.go method Paginate (line 13) | func (m *BaseModel) Paginate(page, pageSize int) func(db *gorm.DB) *gorm... method Count (line 30) | func (m *BaseModel) Count(condition string, args ...any) (count int64, e... method GetById (line 50) | func (m *BaseModel) GetById(id uint) error { method GetAllById (line 63) | func (m *BaseModel) GetAllById(id uint) error { method GetDetail (line 76) | func (m *BaseModel) GetDetail(condition string, val ...any) error { method ExistsById (line 89) | func (m *BaseModel) ExistsById(id uint) (bool, error) { method Exists (line 97) | func (m *BaseModel) Exists(condition string, args ...any) (bool, error) { method UpdateById (line 113) | func (m *BaseModel) UpdateById(id uint, data map[string]any) error { method DeleteByID (line 126) | func (m *BaseModel) DeleteByID(id uint) (int64, error) { method DeleteWhere (line 140) | func (m *BaseModel) DeleteWhere(condition string, args ...any) error { method Create (line 156) | func (m *BaseModel) Create(data map[string]any) error { method CreateBatch (line 169) | func (m *BaseModel) CreateBatch(data []map[string]any) error { method Save (line 182) | func (m *BaseModel) Save() error { FILE: internal/model/base_list.go type BaseModelInterface (line 15) | type BaseModelInterface interface type ListOptionalParams (line 23) | type ListOptionalParams struct function normalizeOrderBy (line 37) | func normalizeOrderBy(orderBy string, allowed map[string]struct{}) (stri... function normalizeSelectFields (line 81) | func normalizeSelectFields(fields string) (string, error) { function buildListQuery (line 111) | func buildListQuery[T any, M BaseModelInterface[T]](model M, condition s... function countListTotal (line 170) | func countListTotal[T any, M BaseModelInterface[T]](model M, baseQuery *... function ListPageE (line 207) | func ListPageE[T any, M BaseModelInterface[T]](model M, page, perPage in... function ListE (line 247) | func ListE[T any, M BaseModelInterface[T]](model M, condition string, ar... function VerifyExistingIDs (line 271) | func VerifyExistingIDs[T any, M BaseModelInterface[T]](model M, ids []ui... function ExtractColumnsByCondition (line 289) | func ExtractColumnsByCondition[T any, M BaseModelInterface[T], R any](mo... FILE: internal/model/base_list_test.go function TestNormalizeOrderByAcceptsValidFields (line 8) | func TestNormalizeOrderByAcceptsValidFields(t *testing.T) { function TestNormalizeOrderByRejectsInjection (line 18) | func TestNormalizeOrderByRejectsInjection(t *testing.T) { function TestNormalizeOrderByChecksAllowList (line 25) | func TestNormalizeOrderByChecksAllowList(t *testing.T) { function TestNormalizeSelectFieldsAcceptsValidFields (line 38) | func TestNormalizeSelectFieldsAcceptsValidFields(t *testing.T) { function TestNormalizeSelectFieldsRejectsInjection (line 48) | func TestNormalizeSelectFieldsRejectsInjection(t *testing.T) { FILE: internal/model/base_owner.go type ownerBinder (line 5) | type ownerBinder interface method SetDB (line 10) | func (m *BaseModel) SetDB(tx *gorm.DB) *BaseModel { method bindOwner (line 15) | func (m *BaseModel) bindOwner(owner any) { function BindModel (line 20) | func BindModel[T any](m T) T { method self (line 27) | func (m *BaseModel) self() (any, error) { method GetDB (line 35) | func (m *BaseModel) GetDB(model ...any) (*gorm.DB, error) { FILE: internal/model/base_test.go function TestGetDBReturnsErrorWhenUninitialized (line 8) | func TestGetDBReturnsErrorWhenUninitialized(t *testing.T) { function TestGetDBRejectsTypedNilModelArg (line 15) | func TestGetDBRejectsTypedNilModelArg(t *testing.T) { function TestListEReturnsErrorWhenUninitialized (line 23) | func TestListEReturnsErrorWhenUninitialized(t *testing.T) { function TestListPageEReturnsErrorWhenUninitialized (line 30) | func TestListPageEReturnsErrorWhenUninitialized(t *testing.T) { function TestBaseModelSelfReturnsErrorWithoutBinding (line 37) | func TestBaseModelSelfReturnsErrorWithoutBinding(t *testing.T) { function TestNewModelBindsOwner (line 45) | func TestNewModelBindsOwner(t *testing.T) { function TestInstanceMethodReturnsBindingErrorBeforeDBError (line 56) | func TestInstanceMethodReturnsBindingErrorBeforeDBError(t *testing.T) { function TestCountReturnsBindingErrorBeforeDBError (line 64) | func TestCountReturnsBindingErrorBeforeDBError(t *testing.T) { function TestBoundCountReturnsDBErrorWhenUninitialized (line 72) | func TestBoundCountReturnsDBErrorWhenUninitialized(t *testing.T) { FILE: internal/model/base_tree.go function HasChildren (line 6) | func HasChildren[T any, M BaseModelInterface[T]](model M, pid uint) (boo... function UpdateChildrenNum (line 15) | func UpdateChildrenNum[T any, M BaseModelInterface[T]](model M, pid uint... FILE: internal/model/dept.go type Department (line 10) | type Department struct method TableName (line 30) | func (m *Department) TableName() string { method IsSystemDepartment (line 34) | func (m *Department) IsSystemDepartment() bool { method FindByCode (line 39) | func (m *Department) FindByCode(code string) error { method UpdateUserNumberByIds (line 48) | func (m *Department) UpdateUserNumberByIds(deptIds []uint, updateExpr ... method UpdateChildrenPidsByParent (line 62) | func (m *Department) UpdateChildrenPidsByParent(parentID uint, updateE... function NewDepartment (line 25) | func NewDepartment() *Department { FILE: internal/model/dept_role_map.go type DeptRoleMap (line 4) | type DeptRoleMap struct method TableName (line 15) | func (m *DeptRoleMap) TableName() string { method DeleteByDeptId (line 19) | func (m *DeptRoleMap) DeleteByDeptId(deptId uint) error { method CreateBatch (line 23) | func (m *DeptRoleMap) CreateBatch(mappings []*DeptRoleMap) error { method RoleIdsByDeptIds (line 32) | func (m *DeptRoleMap) RoleIdsByDeptIds(deptIds []uint) ([]uint, error) { method DeptIdsByRoleIds (line 48) | func (m *DeptRoleMap) DeptIdsByRoleIds(roleIds []uint) ([]uint, error) { method DeptRoleMapByDeptIds (line 64) | func (m *DeptRoleMap) DeptRoleMapByDeptIds(deptIds []uint) (map[uint][... function NewDeptRoleMap (line 10) | func NewDeptRoleMap() *DeptRoleMap { FILE: internal/model/file_upload.go constant StorageDriverLocal (line 6) | StorageDriverLocal = "local" constant StorageDriverAliyunOSS (line 7) | StorageDriverAliyunOSS = "aliyun_oss" constant StorageDriverS3 (line 8) | StorageDriverS3 = "s3" constant StorageStatusStored (line 10) | StorageStatusStored = "stored" constant StorageStatusDeleteFailed (line 11) | StorageStatusDeleteFailed = "delete_failed" type UploadFiles (line 14) | type UploadFiles struct method TableName (line 54) | func (m *UploadFiles) TableName() string { method Create (line 59) | func (m *UploadFiles) Create() error { function NewUploadFiles (line 49) | func NewUploadFiles() *UploadFiles { constant UploadSourceBackend (line 68) | UploadSourceBackend = "backend" constant UploadSourceDirect (line 69) | UploadSourceDirect = "direct" constant UploadSourceSystem (line 70) | UploadSourceSystem = "system" constant UploadStatusPending (line 72) | UploadStatusPending = "pending" constant UploadStatusUploaded (line 73) | UploadStatusUploaded = "uploaded" constant UploadStatusFailed (line 74) | UploadStatusFailed = "failed" type UploadFileObject (line 77) | type UploadFileObject struct method TableName (line 95) | func (m *UploadFileObject) TableName() string { function NewUploadFileObject (line 91) | func NewUploadFileObject() *UploadFileObject { type UploadFileFolder (line 99) | type UploadFileFolder struct method TableName (line 113) | func (m *UploadFileFolder) TableName() string { function NewUploadFileFolder (line 109) | func NewUploadFileFolder() *UploadFileFolder { type UploadFileReference (line 117) | type UploadFileReference struct method TableName (line 130) | func (m *UploadFileReference) TableName() string { function NewUploadFileReference (line 126) | func NewUploadFileReference() *UploadFileReference { FILE: internal/model/file_upload_test.go function TestUploadFilesETagColumnName (line 10) | func TestUploadFilesETagColumnName(t *testing.T) { FILE: internal/model/login_security_state.go type LoginSecurityState (line 10) | type LoginSecurityState struct method TableName (line 22) | func (m *LoginSecurityState) TableName() string { method FindByUsername (line 27) | func (m *LoginSecurityState) FindByUsername(username string) error { function NewLoginSecurityState (line 18) | func NewLoginSecurityState() *LoginSecurityState { FILE: internal/model/menu.go type Menu (line 10) | type Menu struct method MenuTypeMap (line 47) | func (m *Menu) MenuTypeMap() string { method IsExternalLinksMap (line 51) | func (m *Menu) IsExternalLinksMap() string { method IsAuthMap (line 55) | func (m *Menu) IsAuthMap() string { method IsShowMap (line 59) | func (m *Menu) IsShowMap() string { method IsNewWindowMap (line 63) | func (m *Menu) IsNewWindowMap() string { method StatusMap (line 68) | func (m *Menu) StatusMap() string { method GetApiIds (line 72) | func (m *Menu) GetApiIds() []uint { method TableName (line 91) | func (m *Menu) TableName() string { method AllIds (line 96) | func (m *Menu) AllIds() ([]uint, error) { method EnabledIdsByIds (line 109) | func (m *Menu) EnabledIdsByIds(ids []uint) ([]uint, error) { method ExistsExcludeId (line 125) | func (m *Menu) ExistsExcludeId(field string, value string, excludeId u... method FindPidsByIds (line 160) | func (m *Menu) FindPidsByIds(ids []uint) ([]MenuTreeNode, error) { method FindIdsByCodes (line 176) | func (m *Menu) FindIdsByCodes(codes []string) ([]Menu, error) { method FindDescendantsById (line 192) | func (m *Menu) FindDescendantsById(id uint) ([]Menu, error) { method UpdateById (line 205) | func (m *Menu) UpdateById(id uint, data map[string]any) error { constant CATALOGUE (line 37) | CATALOGUE uint8 = 1 constant MENU (line 38) | MENU uint8 = 2 constant BUTTON (line 39) | BUTTON uint8 = 3 function NewMenu (line 86) | func NewMenu() *Menu { function isAllowedMenuUniqueField (line 144) | func isAllowedMenuUniqueField(field string) bool { type MenuTreeNode (line 154) | type MenuTreeNode struct FILE: internal/model/menu_api_map.go type MenuApiMap (line 6) | type MenuApiMap struct method TableName (line 17) | func (m *MenuApiMap) TableName() string { method CreateBatch (line 21) | func (m *MenuApiMap) CreateBatch(mappings []*MenuApiMap) error { method ApiIdsByMenuId (line 30) | func (m *MenuApiMap) ApiIdsByMenuId(menuId uint) ([]uint, error) { method MenuIdsByApiIds (line 43) | func (m *MenuApiMap) MenuIdsByApiIds(apiIds []uint) ([]uint, error) { method ApiPermissionsByMenuIds (line 65) | func (m *MenuApiMap) ApiPermissionsByMenuIds(menuIds []uint) ([]ApiPer... method MenuApiPermissionsByMenuIds (line 93) | func (m *MenuApiMap) MenuApiPermissionsByMenuIds(menuIds []uint) ([]Me... function NewMenuApiMap (line 12) | func NewMenuApiMap() *MenuApiMap { type ApiPermission (line 59) | type ApiPermission struct type MenuApiPermission (line 86) | type MenuApiPermission struct FILE: internal/model/menu_i18n.go type MenuI18n (line 11) | type MenuI18n struct method TableName (line 23) | func (m *MenuI18n) TableName() string { method UpsertMenuTitles (line 28) | func (m *MenuI18n) UpsertMenuTitles(menuID uint, localeTitles map[stri... method LocalizedTitleMapByMenuIDs (line 65) | func (m *MenuI18n) LocalizedTitleMapByMenuIDs(menuIDs []uint, localePr... method LocaleTitleMapByMenuID (line 122) | func (m *MenuI18n) LocaleTitleMapByMenuID(menuID uint) (map[string]str... method DeleteByMenuIDs (line 149) | func (m *MenuI18n) DeleteByMenuIDs(menuIDs []uint, tx ...*gorm.DB) err... function NewMenuI18n (line 18) | func NewMenuI18n() *MenuI18n { FILE: internal/model/modelDict/base.go type Dict (line 5) | type Dict method Map (line 7) | func (d Dict) Map(k uint8) string { FILE: internal/model/request_logs.go type RequestLogs (line 4) | type RequestLogs struct method TableName (line 35) | func (m *RequestLogs) TableName() string { method Create (line 40) | func (m *RequestLogs) Create() error { function NewRequestLogs (line 30) | func NewRequestLogs() *RequestLogs { FILE: internal/model/role.go type Role (line 17) | type Role struct method TableName (line 37) | func (m *Role) TableName() string { method StatusMap (line 42) | func (m *Role) StatusMap() string { method IsSystemRole (line 46) | func (m *Role) IsSystemRole() bool { method AllRoleStatusInfos (line 58) | func (m *Role) AllRoleStatusInfos() ([]RoleStatusInfo, error) { method AllTreeNodes (line 77) | func (m *Role) AllTreeNodes() ([]RoleTreeNode, error) { method EnabledIdsByIds (line 90) | func (m *Role) EnabledIdsByIds(ids []uint) ([]uint, error) { method FindByCode (line 106) | func (m *Role) FindByCode(code string) error { method FindPidsByIds (line 115) | func (m *Role) FindPidsByIds(ids []uint) ([]RoleTreeNode, error) { method SubtreeIdsByRootIds (line 131) | func (m *Role) SubtreeIdsByRootIds(rootIDs []uint) ([]uint, error) { method UpdateChildrenPidsByParent (line 153) | func (m *Role) UpdateChildrenPidsByParent(parentID uint, updateExpr st... function NewRole (line 32) | func NewRole() *Role { type RoleStatusInfo (line 51) | type RoleStatusInfo struct type RoleTreeNode (line 71) | type RoleTreeNode struct FILE: internal/model/role_menu_map.go type RoleMenuMap (line 4) | type RoleMenuMap struct method TableName (line 15) | func (m *RoleMenuMap) TableName() string { method CreateBatch (line 19) | func (m *RoleMenuMap) CreateBatch(mappings []*RoleMenuMap) error { method MenuIdsByRoleIds (line 28) | func (m *RoleMenuMap) MenuIdsByRoleIds(roleIds []uint) ([]uint, error) { method RoleIdsByMenuIds (line 44) | func (m *RoleMenuMap) RoleIdsByMenuIds(menuIds []uint) ([]uint, error) { method RoleMenuMapByRoleIds (line 60) | func (m *RoleMenuMap) RoleMenuMapByRoleIds(roleIds []uint) (map[uint][... function NewRoleMenuMap (line 10) | func NewRoleMenuMap() *RoleMenuMap { FILE: internal/model/sys_config.go constant SysConfigValueTypeString (line 10) | SysConfigValueTypeString = "string" constant SysConfigValueTypeNumber (line 11) | SysConfigValueTypeNumber = "number" constant SysConfigValueTypeBool (line 12) | SysConfigValueTypeBool = "bool" constant SysConfigValueTypeJSON (line 13) | SysConfigValueTypeJSON = "json" type SysConfig (line 17) | type SysConfig struct method TableName (line 38) | func (m *SysConfig) TableName() string { method IsProtected (line 43) | func (m *SysConfig) IsProtected() bool { method FindByKey (line 57) | func (m *SysConfig) FindByKey(key string) error { method ExistsByKeyExcludeID (line 66) | func (m *SysConfig) ExistsByKeyExcludeID(key string, excludeID uint) (... method EnabledConfigs (line 83) | func (m *SysConfig) EnabledConfigs(tx ...*gorm.DB) ([]SysConfig, error) { function NewSysConfig (line 34) | func NewSysConfig() *SysConfig { function NormalizeValueType (line 48) | func NormalizeValueType(valueType string) string { FILE: internal/model/sys_dict.go type SysDictType (line 4) | type SysDictType struct method TableName (line 39) | func (m *SysDictType) TableName() string { method IsProtected (line 48) | func (m *SysDictType) IsProtected() bool { method FindByTypeCode (line 58) | func (m *SysDictType) FindByTypeCode(typeCode string) error { method ExistsByTypeCodeExcludeID (line 67) | func (m *SysDictType) ExistsByTypeCodeExcludeID(typeCode string, exclu... type SysDictItem (line 16) | type SysDictItem struct method TableName (line 43) | func (m *SysDictItem) TableName() string { method IsProtected (line 53) | func (m *SysDictItem) IsProtected() bool { method ExistsByValueExcludeID (line 84) | func (m *SysDictItem) ExistsByValueExcludeID(typeCode, value string, e... method FindByTypeCodeAndValue (line 101) | func (m *SysDictItem) FindByTypeCodeAndValue(typeCode, value string) e... method EnabledItemsByTypeCode (line 110) | func (m *SysDictItem) EnabledItemsByTypeCode(typeCode string) ([]SysDi... method CountByTypeCode (line 123) | func (m *SysDictItem) CountByTypeCode(typeCode string) (int64, error) { function NewSysDictType (line 31) | func NewSysDictType() *SysDictType { function NewSysDictItem (line 35) | func NewSysDictItem() *SysDictItem { FILE: internal/model/sys_i18n.go type SysConfigI18n (line 11) | type SysConfigI18n struct method TableName (line 44) | func (m *SysConfigI18n) TableName() string { method UpsertConfigNames (line 56) | func (m *SysConfigI18n) UpsertConfigNames(configID uint, localeNames m... method LocalizedNameMapByConfigIDs (line 155) | func (m *SysConfigI18n) LocalizedNameMapByConfigIDs(configIDs []uint, ... method LocaleNameMapByConfigID (line 175) | func (m *SysConfigI18n) LocaleNameMapByConfigID(configID uint) (map[st... method DeleteByConfigIDs (line 199) | func (m *SysConfigI18n) DeleteByConfigIDs(configIDs []uint, tx ...*gor... method listRowsByConfigIDs (line 329) | func (m *SysConfigI18n) listRowsByConfigIDs(configIDs []uint, localePr... type SysDictTypeI18n (line 18) | type SysDictTypeI18n struct method TableName (line 48) | func (m *SysDictTypeI18n) TableName() string { method UpsertTypeNames (line 89) | func (m *SysDictTypeI18n) UpsertTypeNames(dictTypeID uint, localeNames... method LocalizedNameMapByTypeIDs (line 213) | func (m *SysDictTypeI18n) LocalizedNameMapByTypeIDs(typeIDs []uint, lo... method LocaleNameMapByTypeID (line 233) | func (m *SysDictTypeI18n) LocaleNameMapByTypeID(dictTypeID uint) (map[... method DeleteByTypeIDs (line 257) | func (m *SysDictTypeI18n) DeleteByTypeIDs(dictTypeIDs []uint, tx ...*g... method listRowsByTypeIDs (line 345) | func (m *SysDictTypeI18n) listRowsByTypeIDs(typeIDs []uint, localePrio... type SysDictItemI18n (line 25) | type SysDictItemI18n struct method TableName (line 52) | func (m *SysDictItemI18n) TableName() string { method UpsertLabels (line 122) | func (m *SysDictItemI18n) UpsertLabels(dictItemID uint, localeLabels m... method LocalizedLabelMapByItemIDs (line 271) | func (m *SysDictItemI18n) LocalizedLabelMapByItemIDs(itemIDs []uint, l... method LocaleLabelMapByItemID (line 291) | func (m *SysDictItemI18n) LocaleLabelMapByItemID(dictItemID uint) (map... method DeleteByItemIDs (line 315) | func (m *SysDictItemI18n) DeleteByItemIDs(dictItemIDs []uint, tx ...*g... method listRowsByItemIDs (line 361) | func (m *SysDictItemI18n) listRowsByItemIDs(itemIDs []uint, localePrio... function NewSysConfigI18n (line 32) | func NewSysConfigI18n() *SysConfigI18n { function NewSysDictTypeI18n (line 36) | func NewSysDictTypeI18n() *SysDictTypeI18n { function NewSysDictItemI18n (line 40) | func NewSysDictItemI18n() *SysDictItemI18n { function normalizeLocalePriority (line 377) | func normalizeLocalePriority(localePriority []string) []string { function pickLocalizedText (line 394) | func pickLocalizedText(localeText map[string]string, priorities []string... FILE: internal/model/task_center.go constant TaskKindAsync (line 8) | TaskKindAsync = "async" constant TaskKindCron (line 9) | TaskKindCron = "cron" constant TaskStatusEnabled (line 11) | TaskStatusEnabled uint8 = 1 constant TaskStatusDisabled (line 12) | TaskStatusDisabled uint8 = 0 constant TaskManualAllowed (line 14) | TaskManualAllowed uint8 = 1 constant TaskManualNotAllowed (line 15) | TaskManualNotAllowed uint8 = 0 constant TaskRetryAllowed (line 17) | TaskRetryAllowed uint8 = 1 constant TaskRetryNotAllowed (line 18) | TaskRetryNotAllowed uint8 = 0 constant TaskHighRisk (line 20) | TaskHighRisk uint8 = 1 constant TaskNotHighRisk (line 21) | TaskNotHighRisk uint8 = 0 constant TaskSourceQueue (line 23) | TaskSourceQueue = "queue" constant TaskSourceCron (line 24) | TaskSourceCron = "cron" constant TaskSourceManual (line 25) | TaskSourceManual = "manual" constant TaskRunStatusPending (line 27) | TaskRunStatusPending = "pending" constant TaskRunStatusRunning (line 28) | TaskRunStatusRunning = "running" constant TaskRunStatusSuccess (line 29) | TaskRunStatusSuccess = "success" constant TaskRunStatusFailed (line 30) | TaskRunStatusFailed = "failed" constant TaskRunStatusCanceled (line 31) | TaskRunStatusCanceled = "canceled" constant TaskRunStatusRetrying (line 32) | TaskRunStatusRetrying = "retrying" constant TaskEventEnqueue (line 34) | TaskEventEnqueue = "enqueue" constant TaskEventStart (line 35) | TaskEventStart = "start" constant TaskEventRetry (line 36) | TaskEventRetry = "retry" constant TaskEventFail (line 37) | TaskEventFail = "fail" constant TaskEventSuccess (line 38) | TaskEventSuccess = "success" constant TaskEventCancel (line 39) | TaskEventCancel = "cancel" type TaskDefinition (line 43) | type TaskDefinition struct method TableName (line 62) | func (m *TaskDefinition) TableName() string { function NewTaskDefinition (line 58) | func NewTaskDefinition() *TaskDefinition { type TaskRun (line 67) | type TaskRun struct method TableName (line 90) | func (m *TaskRun) TableName() string { function NewTaskRun (line 86) | func NewTaskRun() *TaskRun { type TaskRunEvent (line 95) | type TaskRunEvent struct method TableName (line 107) | func (m *TaskRunEvent) TableName() string { function NewTaskRunEvent (line 103) | func NewTaskRunEvent() *TaskRunEvent { type CronTaskState (line 112) | type CronTaskState struct method TableName (line 128) | func (m *CronTaskState) TableName() string { function NewCronTaskState (line 124) | func NewCronTaskState() *CronTaskState { FILE: internal/pkg/auditdiff/diff.go type ChangeDiffItem (line 12) | type ChangeDiffItem struct type FieldRule (line 22) | type FieldRule struct function BuildFieldDiff (line 30) | func BuildFieldDiff(before, after map[string]any, rules []FieldRule) []C... function Marshal (line 69) | func Marshal(items []ChangeDiffItem) string { function formatDisplayValue (line 80) | func formatDisplayValue(rule FieldRule, value any) string { function valueLabelKey (line 94) | func valueLabelKey(value any) string { function valuesEqual (line 131) | func valuesEqual(before, after any) bool { FILE: internal/pkg/auditdiff/diff_test.go function TestBuildFieldDiffMapsStatusLabel (line 8) | func TestBuildFieldDiffMapsStatusLabel(t *testing.T) { function TestMarshalReturnsJSONString (line 35) | func TestMarshalReturnsJSONString(t *testing.T) { function TestMarshalReturnsEmptyArrayWhenNoDiff (line 54) | func TestMarshalReturnsEmptyArrayWhenNoDiff(t *testing.T) { FILE: internal/pkg/errors/code.go constant SUCCESS (line 9) | SUCCESS = 0 constant FAILURE (line 10) | FAILURE = 1 constant AuthorizationErr (line 11) | AuthorizationErr = 403 constant NotFound (line 12) | NotFound = 404 constant CaptchaErr (line 13) | CaptchaErr = 400 constant NotLogin (line 14) | NotLogin = 401 constant ServerErr (line 15) | ServerErr = 500 constant InvalidParameter (line 16) | InvalidParameter = 10000 constant UserDoesNotExist (line 17) | UserDoesNotExist = 10001 constant UserDisable (line 18) | UserDisable = 10002 constant ServiceDependencyNotReady (line 19) | ServiceDependencyNotReady = 10003 constant TooManyRequests (line 20) | TooManyRequests = 10102 constant FileIdentifierInvalid (line 23) | FileIdentifierInvalid = 11001 constant FilePrivateAuthNeeded (line 24) | FilePrivateAuthNeeded = 11002 constant FileAccessDenied (line 25) | FileAccessDenied = 11003 constant FileUploadPartialFail (line 26) | FileUploadPartialFail = 11004 constant FileReferenced (line 27) | FileReferenced = 11005 constant UserPasswordWrong (line 30) | UserPasswordWrong = 20001 constant UserExists (line 31) | UserExists = 20002 constant PhoneNumberExists (line 32) | PhoneNumberExists = 20003 constant EmailExists (line 33) | EmailExists = 20004 constant UsernameRequired (line 34) | UsernameRequired = 20005 constant NicknameRequired (line 35) | NicknameRequired = 20006 constant PasswordProcessFailed (line 36) | PasswordProcessFailed = 20007 constant SuperAdminCannotModify (line 37) | SuperAdminCannotModify = 20008 constant SuperAdminCannotDisable (line 38) | SuperAdminCannotDisable = 20009 constant SuperAdminCannotDelete (line 39) | SuperAdminCannotDelete = 20010 constant SamePassword (line 40) | SamePassword = 20011 constant RoleNotFound (line 41) | RoleNotFound = 20012 constant RoleExists (line 42) | RoleExists = 20013 constant RoleHasChildren (line 43) | RoleHasChildren = 20014 constant RoleCannotDelete (line 44) | RoleCannotDelete = 20015 constant ParentRoleNotExists (line 45) | ParentRoleNotExists = 20016 constant ParentRoleInvalid (line 46) | ParentRoleInvalid = 20017 constant MaxRoleDepth (line 47) | MaxRoleDepth = 20018 constant MaxChildRoles (line 48) | MaxChildRoles = 20019 constant MenuNotFound (line 49) | MenuNotFound = 20020 constant MenuExists (line 50) | MenuExists = 20021 constant MenuHasChildren (line 51) | MenuHasChildren = 20022 constant MenuCannotDelete (line 52) | MenuCannotDelete = 20023 constant DepartmentNotFound (line 53) | DepartmentNotFound = 20024 constant DepartmentExists (line 54) | DepartmentExists = 20025 constant DepartmentHasChildren (line 55) | DepartmentHasChildren = 20026 constant DepartmentCannotDelete (line 56) | DepartmentCannotDelete = 20027 constant ParentDeptNotExists (line 57) | ParentDeptNotExists = 20028 constant ParentDeptInvalid (line 58) | ParentDeptInvalid = 20029 constant MaxDeptDepth (line 59) | MaxDeptDepth = 20030 constant CasbinInitFailed (line 60) | CasbinInitFailed = 20031 constant TokenGenerateFailed (line 61) | TokenGenerateFailed = 20032 constant LoginFailed (line 62) | LoginFailed = 20033 constant CreateUserFailed (line 63) | CreateUserFailed = 20034 constant UpdateUserFailed (line 64) | UpdateUserFailed = 20035 constant DeleteUserFailed (line 65) | DeleteUserFailed = 20036 constant QueryUserDeptFailed (line 66) | QueryUserDeptFailed = 20037 constant SuperAdminMustKeepRole (line 67) | SuperAdminMustKeepRole = 20038 constant MaxMenuDepth (line 68) | MaxMenuDepth = 20039 constant ParentMenuNotExists (line 69) | ParentMenuNotExists = 20040 constant ParentMenuTypeInvalid (line 70) | ParentMenuTypeInvalid = 20041 constant ParentMenuInvalid (line 71) | ParentMenuInvalid = 20042 constant MenuCodeExists (line 72) | MenuCodeExists = 20043 constant MenuRouteNameExists (line 73) | MenuRouteNameExists = 20044 constant MenuPathExists (line 74) | MenuPathExists = 20045 constant LoginAccountLocked (line 75) | LoginAccountLocked = 20046 constant PasswordRequired (line 76) | PasswordRequired = 20047 constant MsgKeyAuthSessionExpired (line 80) | MsgKeyAuthSessionExpired = "auth.session.expired" constant MsgKeyAuthPermissionInitFailed (line 81) | MsgKeyAuthPermissionInitFailed = "auth.permission.init_failed" constant MsgKeyAuthPermissionCheckFailed (line 82) | MsgKeyAuthPermissionCheckFailed = "auth.permission.check_failed" constant MsgKeyAuthAPIOperationDenied (line 83) | MsgKeyAuthAPIOperationDenied = "auth.api.operation_denied" constant MsgKeyAuthAccountLocked (line 84) | MsgKeyAuthAccountLocked = "auth.account.locked" type ErrorText (line 88) | type ErrorText struct method Text (line 100) | func (et *ErrorText) Text(code int) (str string) { method TextByKey (line 117) | func (et *ErrorText) TextByKey(key string, args ...any) (string, bool) { function NewErrorText (line 93) | func NewErrorText(language string) *ErrorText { FILE: internal/pkg/errors/code_test.go function TestText (line 7) | func TestText(t *testing.T) { function TestTextByKey (line 21) | func TestTextByKey(t *testing.T) { FILE: internal/pkg/errors/error.go type BusinessError (line 13) | type BusinessError struct method Error (line 23) | func (e *BusinessError) Error() string { method GetCode (line 35) | func (e *BusinessError) GetCode() int { method GetMessage (line 40) | func (e *BusinessError) GetMessage() string { method GetMessageKey (line 45) | func (e *BusinessError) GetMessageKey() string { method GetMessageArgs (line 50) | func (e *BusinessError) GetMessageArgs() []any { method HasExplicitMessage (line 55) | func (e *BusinessError) HasExplicitMessage() bool { method HasMessageKey (line 60) | func (e *BusinessError) HasMessageKey() bool { method SetCode (line 65) | func (e *BusinessError) SetCode(code int) { method SetMessage (line 70) | func (e *BusinessError) SetMessage(message string) { method AppendContextErr (line 78) | func (e *BusinessError) AppendContextErr(err error) { method GetContextErr (line 83) | func (e *BusinessError) GetContextErr() []error { function NewBusinessError (line 88) | func NewBusinessError(code int, message ...string) *BusinessError { function NewBusinessErrorWithKey (line 105) | func NewBusinessErrorWithKey(code int, messageKey string, messageArgs ..... type Error (line 126) | type Error struct method AsBusinessError (line 129) | func (e *Error) AsBusinessError(err error) (*BusinessError, error) { function NewDependencyNotReadyError (line 138) | func NewDependencyNotReadyError(message ...string) *BusinessError { function IsDependencyNotReady (line 143) | func IsDependencyNotReady(err error) bool { FILE: internal/pkg/func_make/func_make.go type FuncMap (line 9) | type FuncMap method Register (line 17) | func (f FuncMap) Register(name string, fn any) error { method Registers (line 27) | func (f FuncMap) Registers(funcMap map[string]any) (err error) { method Call (line 38) | func (f FuncMap) Call(name string, params ...any) (result []reflect.Va... function New (line 12) | func New() FuncMap { FILE: internal/pkg/func_make/func_make_test.go function TestRegisters (line 16) | func TestRegisters(t *testing.T) { function TestRegister (line 23) | func TestRegister(t *testing.T) { function TestCall (line 36) | func TestCall(t *testing.T) { FILE: internal/pkg/i18n/locale.go constant LocaleZhCN (line 10) | LocaleZhCN = "zh-CN" constant LocaleEnUS (line 11) | LocaleEnUS = "en-US" constant DefaultLocale (line 12) | DefaultLocale = LocaleZhCN function NormalizeLocale (line 16) | func NormalizeLocale(locale string) string { function ParseAcceptLanguage (line 33) | func ParseAcceptLanguage(headerValue string) string { function ParseLocaleMap (line 56) | func ParseLocaleMap(raw string) map[string]string { function MarshalLocaleMap (line 78) | func MarshalLocaleMap(data map[string]string) string { function ResolveLocalizedText (line 103) | func ResolveLocalizedText(defaultText string, i18nRaw string, locale str... function MergeLocaleJSON (line 132) | func MergeLocaleJSON(existingRaw string, incoming map[string]string, loc... function ToErrorLanguage (line 162) | func ToErrorLanguage(locale string) string { FILE: internal/pkg/i18n/locale_test.go function TestParseAcceptLanguage (line 5) | func TestParseAcceptLanguage(t *testing.T) { function TestResolveLocalizedText (line 26) | func TestResolveLocalizedText(t *testing.T) { function TestMergeLocaleJSON (line 39) | func TestMergeLocaleJSON(t *testing.T) { FILE: internal/pkg/logger/logger.go function InitLogger (line 30) | func InitLogger() error { function ReloadLogger (line 43) | func ReloadLogger(cfg *config.Conf) error { function current (line 60) | func current() *zap.Logger { function setLogger (line 70) | func setLogger(logger *zap.Logger) { function ReplaceLoggerForTesting (line 79) | func ReplaceLoggerForTesting(logger *zap.Logger) func() { function Info (line 93) | func Info(msg string, fields ...zap.Field) { function Error (line 98) | func Error(msg string, fields ...zap.Field) { function Warn (line 103) | func Warn(msg string, fields ...zap.Field) { function buildLogger (line 108) | func buildLogger(cfg *config.Conf) (*zap.Logger, error) { function getRotateWriter (line 141) | func getRotateWriter(cfg *config.Conf, filename string) (io.Writer, erro... function getLumberJackWriter (line 157) | func getLumberJackWriter(cfg *config.Conf, filename string) io.Writer { FILE: internal/pkg/logger/logger_test.go function TestLoggerDefaultIsNotNil (line 5) | func TestLoggerDefaultIsNotNil(t *testing.T) { function TestLoggerWrappersDoNotPanic (line 11) | func TestLoggerWrappersDoNotPanic(t *testing.T) { FILE: internal/pkg/query_builder/query_builder.go type QueryBuilder (line 5) | type QueryBuilder struct method AddCondition (line 17) | func (qb *QueryBuilder) AddCondition(cond string, args ...any) *QueryB... method AddLike (line 25) | func (qb *QueryBuilder) AddLike(field, value string) *QueryBuilder { method AddEq (line 33) | func (qb *QueryBuilder) AddEq(field string, value any) *QueryBuilder { method AddIn (line 41) | func (qb *QueryBuilder) AddIn(field string, values []uint) *QueryBuild... method AddExists (line 49) | func (qb *QueryBuilder) AddExists(subQuery string) *QueryBuilder { method AddConditionf (line 56) | func (qb *QueryBuilder) AddConditionf(cond string, args ...any) *Query... method AddKeywordLike (line 60) | func (qb *QueryBuilder) AddKeywordLike(keyword string, fields ...strin... method Build (line 76) | func (qb *QueryBuilder) Build() (string, []any) { function New (line 10) | func New() *QueryBuilder { function hasValue (line 87) | func hasValue(value any) bool { FILE: internal/pkg/query_builder/query_builder_test.go function TestQueryBuilderBuildsExpectedCondition (line 5) | func TestQueryBuilderBuildsExpectedCondition(t *testing.T) { function TestQueryBuilderSkipsEmptyValues (line 24) | func TestQueryBuilderSkipsEmptyValues(t *testing.T) { FILE: internal/pkg/request/request.go function GetQueryParams (line 15) | func GetQueryParams(c *gin.Context) map[string]any { function GetAccessToken (line 28) | func GetAccessToken(c *gin.Context) (string, error) { FILE: internal/pkg/request/request_test.go function TestGetAccessTokenSuccess (line 11) | func TestGetAccessTokenSuccess(t *testing.T) { function TestGetAccessTokenNilContext (line 27) | func TestGetAccessTokenNilContext(t *testing.T) { function TestGetQueryParamsNilContext (line 34) | func TestGetQueryParamsNilContext(t *testing.T) { FILE: internal/pkg/response/response.go type Result (line 17) | type Result struct function NewResult (line 26) | func NewResult() *Result { type Response (line 37) | type Response struct method Fail (line 53) | func (r *Response) Fail(c *gin.Context, code int, msg string, data ...... method FailCode (line 63) | func (r *Response) FailCode(c *gin.Context, code int, msg ...string) { method FailCodeByKey (line 72) | func (r *Response) FailCodeByKey(c *gin.Context, code int, key string,... method Success (line 79) | func (r *Response) Success(c *gin.Context) { method WithDataSuccess (line 85) | func (r *Response) WithDataSuccess(c *gin.Context, data interface{}) { method SetCode (line 92) | func (r *Response) SetCode(code int) *Response { method SetHttpCode (line 98) | func (r *Response) SetHttpCode(code int) *Response { method WithData (line 109) | func (r *Response) WithData(data any) *Response { method SetMessage (line 123) | func (r *Response) SetMessage(message string) *Response { method SetMessageKey (line 131) | func (r *Response) SetMessageKey(key string, args ...any) *Response { method json (line 138) | func (r *Response) json(c *gin.Context) { function Resp (line 45) | func Resp() *Response { type defaultRes (line 104) | type defaultRes struct function Success (line 167) | func Success(c *gin.Context, data ...any) { function FailCode (line 176) | func FailCode(c *gin.Context, code int, data ...any) { function FailCodeByKey (line 185) | func FailCodeByKey(c *gin.Context, code int, key string, args ...any) { function Fail (line 190) | func Fail(c *gin.Context, code int, message string, data ...any) { function emptyObject (line 198) | func emptyObject() map[string]any { function isNilData (line 202) | func isNilData(data any) bool { function isObjectData (line 216) | func isObjectData(data any) bool { FILE: internal/pkg/response/response_test.go function TestSuccessDefaultsDataToEmptyObject (line 15) | func TestSuccessDefaultsDataToEmptyObject(t *testing.T) { function TestWithNilDataReturnsEmptyObject (line 38) | func TestWithNilDataReturnsEmptyObject(t *testing.T) { function TestScalarDataStillWrapped (line 61) | func TestScalarDataStillWrapped(t *testing.T) { function TestInt64DataStillWrapped (line 83) | func TestInt64DataStillWrapped(t *testing.T) { function TestTypedNilPointerReturnsEmptyObject (line 105) | func TestTypedNilPointerReturnsEmptyObject(t *testing.T) { function TestNilSliceReturnsEmptyObject (line 133) | func TestNilSliceReturnsEmptyObject(t *testing.T) { function TestSliceDataWrappedAsObject (line 157) | func TestSliceDataWrappedAsObject(t *testing.T) { function TestFailCodeByKeyResolvesMessage (line 179) | func TestFailCodeByKeyResolvesMessage(t *testing.T) { FILE: internal/pkg/testkit/secret.go function SecretKey (line 6) | func SecretKey(scope string) string { FILE: internal/pkg/testkit/secret_test.go function TestSecretKey (line 5) | func TestSecretKey(t *testing.T) { FILE: internal/pkg/utils/desensitize.go type DesensitizeRule (line 9) | type DesensitizeRule struct method Apply (line 28) | func (r *DesensitizeRule) Apply(s string) string { method applyToPart (line 45) | func (r *DesensitizeRule) applyToPart(s string) string { method min (line 76) | func (r *DesensitizeRule) min(a, b int) int { function NewPhoneRule (line 18) | func NewPhoneRule() *DesensitizeRule { function NewEmailRule (line 23) | func NewEmailRule() *DesensitizeRule { FILE: internal/pkg/utils/format_time.go type FormatDate (line 11) | type FormatDate struct method MarshalJSON (line 20) | func (t FormatDate) MarshalJSON() ([]byte, error) { method Value (line 28) | func (t FormatDate) Value() (driver.Value, error) { method Scan (line 37) | func (t *FormatDate) Scan(v interface{}) error { method String (line 46) | func (t *FormatDate) String() string { method UnmarshalJSON (line 54) | func (t *FormatDate) UnmarshalJSON(data []byte) error { constant timeFormat (line 16) | timeFormat = "2006-01-02 15:04:05" FILE: internal/pkg/utils/sensitive/fields.go constant maskTokenPrefixLen (line 12) | maskTokenPrefixLen = 6 constant maskTokenSuffixLen (line 13) | maskTokenSuffixLen = 6 constant maskPhonePrefixLen (line 14) | maskPhonePrefixLen = 3 constant maskPhoneSuffixLen (line 15) | maskPhoneSuffixLen = 4 constant maskEmailPrefixLen (line 16) | maskEmailPrefixLen = 2 constant maskIdCardPrefixLen (line 17) | maskIdCardPrefixLen = 6 constant maskIdCardSuffixLen (line 18) | maskIdCardSuffixLen = 4 constant maskBankCardPrefixLen (line 19) | maskBankCardPrefixLen = 4 constant maskBankCardSuffixLen (line 20) | maskBankCardSuffixLen = 4 constant maskDefaultPrefixLen (line 21) | maskDefaultPrefixLen = 1 constant maskDefaultSuffixLen (line 22) | maskDefaultSuffixLen = 1 type SensitiveFieldsConfig (line 26) | type SensitiveFieldsConfig struct type sensitiveFieldsManager (line 34) | type sensitiveFieldsManager struct method applyConfig (line 81) | func (m *sensitiveFieldsManager) applyConfig(config SensitiveFieldsCon... method cloneFieldSet (line 203) | func (m *sensitiveFieldsManager) cloneFieldSet(source map[string]bool)... function currentFieldsManager (line 53) | func currentFieldsManager() *sensitiveFieldsManager { function newSensitiveFieldsManager (line 69) | func newSensitiveFieldsManager(config SensitiveFieldsConfig) *sensitiveF... function defaultSensitiveFieldsConfig (line 89) | func defaultSensitiveFieldsConfig() SensitiveFieldsConfig { function DefaultSensitiveFieldsConfig (line 138) | func DefaultSensitiveFieldsConfig() SensitiveFieldsConfig { function LoadSensitiveFieldsConfig (line 143) | func LoadSensitiveFieldsConfig(config SensitiveFieldsConfig) { function GetSensitiveFieldsConfig (line 151) | func GetSensitiveFieldsConfig() SensitiveFieldsConfig { function sliceToMap (line 165) | func sliceToMap(slice []string) map[string]bool { function getCommonFields (line 178) | func getCommonFields() map[string]bool { function getRequestHeaderFields (line 183) | func getRequestHeaderFields() map[string]bool { function getRequestBodyFields (line 188) | func getRequestBodyFields() map[string]bool { function getResponseHeaderFields (line 193) | func getResponseHeaderFields() map[string]bool { function getResponseBodyFields (line 198) | func getResponseBodyFields() map[string]bool { function mapKeys (line 214) | func mapKeys(source map[string]bool) []string { FILE: internal/pkg/utils/sensitive/http_mask.go function maskHeaders (line 11) | func maskHeaders(headers http.Header, sensitiveFields map[string]bool) s... function GetMaskedRequestHeaders (line 33) | func GetMaskedRequestHeaders(headers http.Header) string { function GetMaskedResponseHeaders (line 38) | func GetMaskedResponseHeaders(headers http.Header) string { function GetMaskedRequestBody (line 43) | func GetMaskedRequestBody(bodyBytes []byte, contentType string) string { function GetMaskedResponseBody (line 62) | func GetMaskedResponseBody(bodyBytes []byte) string { function MaskQueryString (line 73) | func MaskQueryString(queryString string) string { function maskJSONBytes (line 95) | func maskJSONBytes(bodyBytes []byte, sensitiveFields map[string]bool) st... function maskStringSlice (line 109) | func maskStringSlice(values []string, fn func(string) string) []string { function isValidUTF8 (line 117) | func isValidUTF8(data []byte) bool { FILE: internal/pkg/utils/sensitive/mask.go function maskMap (line 6) | func maskMap(m map[string]interface{}, sensitiveFields map[string]bool) ... function maskSensitiveDataWithFields (line 23) | func maskSensitiveDataWithFields(data interface{}, sensitiveFields map[s... function maskArrayWithFields (line 37) | func maskArrayWithFields(arr []interface{}, sensitiveFields map[string]b... FILE: internal/pkg/utils/sensitive/string_mask.go function maskString (line 5) | func maskString(s string) string { function maskValue (line 12) | func maskValue(v interface{}) interface{} { function maskSensitiveString (line 28) | func maskSensitiveString(s string) string { function authPrefix (line 44) | func authPrefix(s string) (string, bool) { function applyMatchers (line 57) | func applyMatchers(s string, replacers ...func(string) string) string { function maskAuthToken (line 74) | func maskAuthToken(s, prefix string) string { function isSensitiveField (line 86) | func isSensitiveField(fieldName string, sensitiveFields map[string]bool)... function maskToken (line 101) | func maskToken(token string) string { function maskPhone (line 109) | func maskPhone(phone string) string { function maskEmail (line 116) | func maskEmail(email string) string { function maskIdCard (line 130) | func maskIdCard(idCard string) string { function maskBankCard (line 141) | func maskBankCard(cardNo string) string { function maskDefault (line 150) | func maskDefault(s string) string { FILE: internal/pkg/utils/token/jwt.go type AdminUserInfo (line 19) | type AdminUserInfo struct function Generate (line 32) | func Generate(claims jwt.Claims) (string, error) { function Refresh (line 45) | func Refresh(claims jwt.Claims) (string, error) { function Parse (line 50) | func Parse(accessToken string, claims jwt.Claims, options ...jwt.ParserO... function GetAccessToken (line 70) | func GetAccessToken(authorization string) (accessToken string, err error) { type AdminCustomClaims (line 86) | type AdminCustomClaims struct function NewAdminCustomClaims (line 92) | func NewAdminCustomClaims(user *model.AdminUser) AdminCustomClaims { FILE: internal/pkg/utils/token/jwt_test.go function TestGenerate (line 9) | func TestGenerate(t *testing.T) { function TestParse (line 19) | func TestParse(t *testing.T) { function TestGetAccessToken (line 28) | func TestGetAccessToken(t *testing.T) { FILE: internal/pkg/utils/utils.go function CalculateChanges (line 28) | func CalculateChanges[T comparable](existingIds, ids []T) (toDelete, toA... function RandString (line 41) | func RandString(n int) string { function TrimPrefixAndSuffixAND (line 66) | func TrimPrefixAndSuffixAND(s string) string { FILE: internal/pkg/utils/utils_test.go function TestCalculateChanges (line 8) | func TestCalculateChanges(t *testing.T) { function TestRandString (line 17) | func TestRandString(t *testing.T) { function BenchmarkRandString (line 24) | func BenchmarkRandString(b *testing.B) { function TestDesensitizeRule (line 31) | func TestDesensitizeRule(b *testing.T) { function BenchmarkTrimPrefixAndSuffixAND (line 44) | func BenchmarkTrimPrefixAndSuffixAND(b *testing.B) { FILE: internal/queue/asynqx/asynq.go function init (line 19) | func init() { type publisher (line 24) | type publisher struct method Enqueue (line 75) | func (p *publisher) Enqueue(ctx context.Context, job queue.Job) (queue... type inspector (line 29) | type inspector struct method DeleteTask (line 100) | func (i *inspector) DeleteTask(ctx context.Context, queueName, taskID ... method CancelProcessing (line 108) | func (i *inspector) CancelProcessing(ctx context.Context, taskID strin... function NewPublisher (line 35) | func NewPublisher(cfg *config.Conf) (queue.Publisher, error) { function NewInspector (line 56) | func NewInspector(cfg *config.Conf) (queue.Inspector, error) { function NewServer (line 117) | func NewServer(cfg *config.Conf, registry queue.Registry) (*asynq.Server... function recordAsynqTaskStart (line 163) | func recordAsynqTaskStart(ctx context.Context, task *asynq.Task) *model.... function recordAsynqTaskFinish (line 194) | func recordAsynqTaskFinish(ctx context.Context, run *model.TaskRun, task... function currentQueueNamespace (line 206) | func currentQueueNamespace() string { function newRedisConnOpt (line 214) | func newRedisConnOpt(cfg *config.Conf) (asynq.RedisClientOpt, error) { function normalizeInspectorError (line 247) | func normalizeInspectorError(err error) error { function mapOptions (line 260) | func mapOptions(namespace string, options []queue.JobOption) []asynq.Opt... function prefixedQueues (line 279) | func prefixedQueues(namespace string, queues map[string]int) map[string]... function prefixedQueueName (line 291) | func prefixedQueueName(namespace, name string) string { function unprefixQueueName (line 303) | func unprefixQueueName(namespace, name string) string { FILE: internal/queue/asynqx/asynq_test.go function TestPrefixedQueueName (line 14) | func TestPrefixedQueueName(t *testing.T) { function TestMapOptions (line 26) | func TestMapOptions(t *testing.T) { function TestNewRedisConnOptUsesDefaultRedis (line 52) | func TestNewRedisConnOptUsesDefaultRedis(t *testing.T) { function TestNewRedisConnOptUsesQueueRedis (line 79) | func TestNewRedisConnOptUsesQueueRedis(t *testing.T) { function TestNewRedisConnOptReturnsErrorWhenDefaultRedisDisabled (line 108) | func TestNewRedisConnOptReturnsErrorWhenDefaultRedisDisabled(t *testing.... FILE: internal/queue/asynqx/inspector_test.go function TestNormalizeInspectorError (line 12) | func TestNormalizeInspectorError(t *testing.T) { FILE: internal/queue/asynqx/task_record_test.go function TestRecordAsynqTaskStartAndFinish (line 14) | func TestRecordAsynqTaskStartAndFinish(t *testing.T) { type fakeRunRecorder (line 44) | type fakeRunRecorder struct method Enqueue (line 49) | func (f *fakeRunRecorder) Enqueue(ctx context.Context, input taskcente... method Start (line 55) | func (f *fakeRunRecorder) Start(ctx context.Context, input taskcenter.... method Finish (line 61) | func (f *fakeRunRecorder) Finish(ctx context.Context, run *model.TaskR... FILE: internal/queue/queue.go constant DefaultQueue (line 22) | DefaultQueue = "default" type Job (line 25) | type Job interface type JobInfo (line 33) | type JobInfo struct type Publisher (line 40) | type Publisher interface type Inspector (line 45) | type Inspector interface type Handler (line 51) | type Handler type Registry (line 54) | type Registry interface type Registration (line 60) | type Registration struct type Validatable (line 66) | type Validatable interface type JobOptionType (line 71) | type JobOptionType constant JobOptionMaxRetry (line 74) | JobOptionMaxRetry JobOptionType = "max_retry" constant JobOptionQueue (line 75) | JobOptionQueue JobOptionType = "queue" constant JobOptionTimeout (line 76) | JobOptionTimeout JobOptionType = "timeout" constant JobOptionRetention (line 77) | JobOptionRetention JobOptionType = "retention" constant JobOptionTaskID (line 78) | JobOptionTaskID JobOptionType = "task_id" type JobOption (line 82) | type JobOption struct type jsonJob (line 89) | type jsonJob struct method Type (line 169) | func (j *jsonJob) Type() string { method Queue (line 173) | func (j *jsonJob) Queue() string { method Payload (line 180) | func (j *jsonJob) Payload() ([]byte, error) { method Options (line 184) | func (j *jsonJob) Options() []JobOption { type skipRetryError (line 96) | type skipRetryError struct method Error (line 188) | func (e *skipRetryError) Error() string { method Unwrap (line 195) | func (e *skipRetryError) Unwrap() error { method Is (line 202) | func (e *skipRetryError) Is(target error) bool { function WithMaxRetry (line 100) | func WithMaxRetry(n int) JobOption { function WithQueue (line 104) | func WithQueue(name string) JobOption { function WithTimeout (line 108) | func WithTimeout(timeout time.Duration) JobOption { function WithRetention (line 112) | func WithRetention(retention time.Duration) JobOption { function WithTaskID (line 116) | func WithTaskID(taskID string) JobOption { function NewJSONJob (line 121) | func NewJSONJob(taskType, queueName string, payload any, opts ...JobOpti... function Publish (line 134) | func Publish(ctx context.Context, job Job) (JobInfo, error) { function PublishJSON (line 143) | func PublishJSON(ctx context.Context, taskType, queueName string, payloa... function RegisterJSON (line 148) | func RegisterJSON[T any](registry Registry, taskType string, handler fun... function SkipRetry (line 165) | func SkipRetry(err error) error { type publisherFactory (line 206) | type publisherFactory type inspectorFactory (line 207) | type inspectorFactory function RegisterPublisherFactory (line 222) | func RegisterPublisherFactory(factory func(cfg *config.Conf) (Publisher,... function InitPublisher (line 229) | func InitPublisher(cfg *config.Conf) error { function RegisterInspectorFactory (line 256) | func RegisterInspectorFactory(factory func(cfg *config.Conf) (Inspector,... function InitInspector (line 263) | func InitInspector(cfg *config.Conf) error { function PublisherOrNil (line 290) | func PublisherOrNil() Publisher { function PublisherInitError (line 297) | func PublisherInitError() error { function InspectorOrNil (line 304) | func InspectorOrNil() Inspector { function InspectorInitError (line 311) | func InspectorInitError() error { function DeleteTask (line 318) | func DeleteTask(ctx context.Context, queueName, taskID string) error { function CancelProcessing (line 327) | func CancelProcessing(ctx context.Context, taskID string) error { function SetPublisherForTesting (line 336) | func SetPublisherForTesting(publisher Publisher) func() { function SetInspectorForTesting (line 353) | func SetInspectorForTesting(inspector Inspector) func() { function validatePayload (line 369) | func validatePayload(payload any) error { type memoryRegistry (line 379) | type memoryRegistry struct method Register (line 391) | func (r *memoryRegistry) Register(taskType string, handler Handler) { method Entries (line 400) | func (r *memoryRegistry) Entries() []Registration { function NewRegistry (line 385) | func NewRegistry() Registry { FILE: internal/queue/queue_test.go type testPayload (line 12) | type testPayload struct method Validate (line 16) | func (p testPayload) Validate() error { type stubPublisher (line 23) | type stubPublisher struct method Enqueue (line 35) | func (s *stubPublisher) Enqueue(ctx context.Context, job Job) (JobInfo... type stubInspector (line 27) | type stubInspector struct method DeleteTask (line 41) | func (s *stubInspector) DeleteTask(ctx context.Context, queueName, tas... method CancelProcessing (line 49) | func (s *stubInspector) CancelProcessing(ctx context.Context, taskID s... function TestPublishJSONUsesGlobalPublisher (line 56) | func TestPublishJSONUsesGlobalPublisher(t *testing.T) { function TestRegisterJSONDecodesAndValidatesPayload (line 73) | func TestRegisterJSONDecodesAndValidatesPayload(t *testing.T) { function TestRegisterJSONReturnsSkipRetryForInvalidPayload (line 99) | func TestRegisterJSONReturnsSkipRetryForInvalidPayload(t *testing.T) { function TestInitPublisherStoresLastError (line 121) | func TestInitPublisherStoresLastError(t *testing.T) { function TestDeleteTaskUsesGlobalInspector (line 151) | func TestDeleteTaskUsesGlobalInspector(t *testing.T) { function TestCancelProcessingUsesGlobalInspector (line 164) | func TestCancelProcessingUsesGlobalInspector(t *testing.T) { function TestDeleteTaskReturnsUnavailableWithoutInspector (line 177) | func TestDeleteTaskReturnsUnavailableWithoutInspector(t *testing.T) { FILE: internal/resources/admin_user.go type AdminUserResources (line 12) | type AdminUserResources struct method SetCustomFields (line 39) | func (r *AdminUserResources) SetCustomFields(data *model.AdminUser) { type AdminUserTransformer (line 34) | type AdminUserTransformer struct method ToCollection (line 82) | func (AdminUserTransformer) ToCollection(page, perPage int, total int6... function NewAdminUserTransformer (line 70) | func NewAdminUserTransformer() AdminUserTransformer { FILE: internal/resources/api.go type ApiResources (line 8) | type ApiResources struct type ApiTransformer (line 25) | type ApiTransformer struct method ToStruct (line 41) | func (ApiTransformer) ToStruct(data *model.Api) *ApiResources { method ToCollection (line 62) | func (ApiTransformer) ToCollection(page, perPage int, total int64, dat... function NewApiTransformer (line 30) | func NewApiTransformer() ApiTransformer { FILE: internal/resources/base.go type Resources (line 12) | type Resources interface type CustomFieldSetter (line 18) | type CustomFieldSetter interface type BaseResources (line 23) | type BaseResources struct method ToStruct (line 28) | func (br BaseResources[T, R]) ToStruct(data T) R { method ToCollection (line 34) | func (br BaseResources[T, R]) ToCollection(page, perPage int, total int6... function ToAnySlice (line 43) | func ToAnySlice[T any](data []T) []any { type TreeNode (line 52) | type TreeNode interface type Identifiable (line 57) | type Identifiable interface type TreeResources (line 63) | type TreeResources interface type TreeResource (line 69) | type TreeResource struct method ToStruct (line 74) | func (tr TreeResource[T, R]) ToStruct(data T) R { method BuildTree (line 80) | func (tr TreeResource[T, R]) BuildTree(data []T, pidFn func(T) uint, idF... method BuildTreeByNode (line 107) | func (tr TreeResource[T, R]) BuildTreeByNode(data []T, rootID uint) []R { function toGenericStruct (line 139) | func toGenericStruct[T any, R any](data T, newFunc func() R) (R, error) { type Paginate (line 153) | type Paginate struct method calculateLastPage (line 161) | func (p *Paginate) calculateLastPage() { type ResponseCollectionInterface (line 182) | type ResponseCollectionInterface interface type Collection (line 189) | type Collection struct method GetPaginate (line 195) | func (p *Collection) GetPaginate() *Paginate { method SetPaginate (line 200) | func (p *Collection) SetPaginate(page, perPage int, total int64) *Coll... method ToCollection (line 211) | func (p *Collection) ToCollection(data []any) *Collection { function NewCollection (line 217) | func NewCollection() *Collection { function ToRawCollection (line 222) | func ToRawCollection[T any](page, perPage int, total int64, data []T) *C... FILE: internal/resources/base_test.go type baseTestModel (line 5) | type baseTestModel struct type baseTestResource (line 9) | type baseTestResource struct method SetCustomFields (line 14) | func (r *baseTestResource) SetCustomFields(data baseTestModel) { function TestBaseResourcesToCollectionTransformsItems (line 18) | func TestBaseResourcesToCollectionTransformsItems(t *testing.T) { function TestPaginateCalculateLastPageUsesIntegerCeil (line 39) | func TestPaginateCalculateLastPageUsesIntegerCeil(t *testing.T) { FILE: internal/resources/common.go type department (line 3) | type department struct FILE: internal/resources/dept.go type DeptResources (line 11) | type DeptResources struct method SetChildren (line 29) | func (r *DeptResources) SetChildren(children []*DeptResources) { method GetID (line 34) | func (r *DeptResources) GetID() uint { method GetPID (line 39) | func (r *DeptResources) GetPID() uint { method SetCustomFields (line 49) | func (r *DeptResources) SetCustomFields(data *model.Department) { type DeptTreeTransformer (line 44) | type DeptTreeTransformer struct function NewDeptTreeTransformer (line 64) | func NewDeptTreeTransformer() DeptTreeTransformer { FILE: internal/resources/file_resource.go type FileResourceResources (line 12) | type FileResourceResources struct method SetCustomFields (line 71) | func (r *FileResourceResources) SetCustomFields(data *model.UploadFile... type FileResourceTransformer (line 57) | type FileResourceTransformer struct function NewFileResourceTransformer (line 61) | func NewFileResourceTransformer() FileResourceTransformer { function fileStorageStatusName (line 86) | func fileStorageStatusName(status string) string { function fileUploadSourceName (line 101) | func fileUploadSourceName(source string) string { function fileUploadStatusName (line 114) | func fileUploadStatusName(status string) string { type FileFolderResources (line 127) | type FileFolderResources struct type FileFolderTransformer (line 140) | type FileFolderTransformer struct function NewFileFolderTransformer (line 144) | func NewFileFolderTransformer() FileFolderTransformer { type FileMoveResult (line 154) | type FileMoveResult struct type FileUploadCredentialResources (line 160) | type FileUploadCredentialResources struct type FileReferenceResources (line 180) | type FileReferenceResources struct method SetCustomFields (line 207) | func (r *FileReferenceResources) SetCustomFields(data *model.UploadFil... type FileReferenceTransformer (line 193) | type FileReferenceTransformer struct function NewFileReferenceTransformer (line 197) | func NewFileReferenceTransformer() FileReferenceTransformer { function fileReferenceSourceName (line 212) | func fileReferenceSourceName(ownerType string) string { function fileReferenceFieldName (line 221) | func fileReferenceFieldName(ownerField string) string { function buildFileResourceURL (line 230) | func buildFileResourceURL(uuid string) string { FILE: internal/resources/file_resource_test.go function TestFileReferenceTransformerAddsDisplayNames (line 9) | func TestFileReferenceTransformerAddsDisplayNames(t *testing.T) { function TestFileReferenceTransformerFallsBackToRawNames (line 24) | func TestFileReferenceTransformerFallsBackToRawNames(t *testing.T) { function TestFileResourceTransformerAddsStatusDisplayNames (line 37) | func TestFileResourceTransformerAddsStatusDisplayNames(t *testing.T) { FILE: internal/resources/login_log.go type AdminLoginLogBaseResources (line 9) | type AdminLoginLogBaseResources struct type AdminLoginLogListResources (line 32) | type AdminLoginLogListResources struct type AdminLoginLogResources (line 37) | type AdminLoginLogResources struct type AdminLoginLogTransformer (line 49) | type AdminLoginLogTransformer struct method ToStruct (line 90) | func (r AdminLoginLogTransformer) ToStruct(data *model.AdminLoginLogs)... method ToCollection (line 105) | func (r AdminLoginLogTransformer) ToCollection(page, perPage int, tota... function NewAdminLoginLogTransformer (line 54) | func NewAdminLoginLogTransformer() AdminLoginLogTransformer { function buildAdminLoginLogBaseResources (line 65) | func buildAdminLoginLogBaseResources(data *model.AdminLoginLogs) AdminLo... FILE: internal/resources/login_log_test.go function TestAdminLoginLogTransformerOnlyExposeTokenHashesInDetail (line 12) | func TestAdminLoginLogTransformerOnlyExposeTokenHashesInDetail(t *testin... FILE: internal/resources/menu.go type MenuBaseResources (line 9) | type MenuBaseResources struct type MenuResources (line 36) | type MenuResources struct type MenuTransformer (line 52) | type MenuTransformer struct method ToStruct (line 68) | func (m MenuTransformer) ToStruct(data *model.Menu) *MenuResources { method ToStructWithTitles (line 73) | func (m MenuTransformer) ToStructWithTitles(data *model.Menu, title st... method ToCollection (line 78) | func (m MenuTransformer) ToCollection(page, perPage int, total int64, ... method ToCollectionWithTitles (line 83) | func (m MenuTransformer) ToCollectionWithTitles(page, perPage int, tot... function NewMenuTransformer (line 57) | func NewMenuTransformer() MenuTransformer { function buildMenuBaseResources (line 92) | func buildMenuBaseResources(v *model.Menu, title string) MenuBaseResourc... function buildMenuResource (line 121) | func buildMenuResource(v *model.Menu, title string, titleI18n map[string... type MenuCollectionResources (line 139) | type MenuCollectionResources struct method SetChildren (line 145) | func (r *MenuCollectionResources) SetChildren(children []*MenuCollecti... method GetID (line 150) | func (r *MenuCollectionResources) GetID() uint { method GetPID (line 155) | func (r *MenuCollectionResources) GetPID() uint { method SetCustomFields (line 160) | func (r *MenuCollectionResources) SetCustomFields(data *model.Menu) { function buildListMenuResource (line 165) | func buildListMenuResource(v *model.Menu, title string) *MenuCollectionR... function BuildMenuTree (line 174) | func BuildMenuTree(data []*model.Menu, rootID uint, titleByMenuID map[ui... function resolveTitleByMenuID (line 203) | func resolveTitleByMenuID(menuID uint, titleByMenuID map[uint]string) st... FILE: internal/resources/request_log.go type RequestLogBaseResources (line 9) | type RequestLogBaseResources struct type RequestLogListResources (line 28) | type RequestLogListResources struct type RequestLogResources (line 33) | type RequestLogResources struct type RequestLogTransformer (line 49) | type RequestLogTransformer struct method ToStruct (line 86) | func (r RequestLogTransformer) ToStruct(data *model.RequestLogs) *Requ... method ToCollection (line 105) | func (r RequestLogTransformer) ToCollection(page, perPage int, total i... function NewRequestLogTransformer (line 54) | func NewRequestLogTransformer() RequestLogTransformer { function buildRequestLogBaseResources (line 65) | func buildRequestLogBaseResources(data *model.RequestLogs) RequestLogBas... function getOperationStatusName (line 117) | func getOperationStatusName(code int) string { FILE: internal/resources/role.go type RoleResources (line 11) | type RoleResources struct method GetID (line 29) | func (r *RoleResources) GetID() uint { method GetPID (line 34) | func (r *RoleResources) GetPID() uint { method SetCustomFields (line 39) | func (r *RoleResources) SetCustomFields(data *model.Role) { type RoleTransformer (line 54) | type RoleTransformer struct function NewRoleTransformer (line 59) | func NewRoleTransformer() RoleTransformer { FILE: internal/resources/session.go type SessionResources (line 9) | type SessionResources struct type SessionTransformer (line 25) | type SessionTransformer struct function NewSessionTransformer (line 29) | func NewSessionTransformer() SessionTransformer { FILE: internal/resources/sys_config.go type SysConfigResources (line 9) | type SysConfigResources struct type SysConfigTransformer (line 29) | type SysConfigTransformer struct function NewSysConfigTransformer (line 33) | func NewSysConfigTransformer() SysConfigTransformer { FILE: internal/resources/sys_dict.go type SysDictTypeResources (line 9) | type SysDictTypeResources struct type SysDictItemResources (line 23) | type SysDictItemResources struct type SysDictOptionResources (line 41) | type SysDictOptionResources struct type SysDictTypeTransformer (line 49) | type SysDictTypeTransformer struct type SysDictItemTransformer (line 53) | type SysDictItemTransformer struct function NewSysDictTypeTransformer (line 57) | func NewSysDictTypeTransformer() SysDictTypeTransformer { function NewSysDictItemTransformer (line 67) | func NewSysDictItemTransformer() SysDictItemTransformer { function ToSysDictOptions (line 77) | func ToSysDictOptions(items []model.SysDictItem) []SysDictOptionResources { FILE: internal/resources/task_center.go type TaskDefinitionResources (line 9) | type TaskDefinitionResources struct type TaskDefinitionTransformer (line 27) | type TaskDefinitionTransformer struct function NewTaskDefinitionTransformer (line 31) | func NewTaskDefinitionTransformer() TaskDefinitionTransformer { type TaskRunBaseResources (line 42) | type TaskRunBaseResources struct type TaskRunListResources (line 62) | type TaskRunListResources struct type TaskRunResources (line 67) | type TaskRunResources struct type TaskRunEventResources (line 74) | type TaskRunEventResources struct type TaskRunTransformer (line 84) | type TaskRunTransformer struct method ToStruct (line 119) | func (r TaskRunTransformer) ToStruct(data *model.TaskRun) *TaskRunReso... method ToCollection (line 128) | func (r TaskRunTransformer) ToCollection(page, perPage int, total int6... function NewTaskRunTransformer (line 88) | func NewTaskRunTransformer() TaskRunTransformer { function buildTaskRunBaseResources (line 98) | func buildTaskRunBaseResources(data *model.TaskRun) TaskRunBaseResources { type TaskRunEventTransformer (line 140) | type TaskRunEventTransformer struct function NewTaskRunEventTransformer (line 144) | func NewTaskRunEventTransformer() TaskRunEventTransformer { type CronTaskStateResources (line 155) | type CronTaskStateResources struct type CronTaskStateTransformer (line 169) | type CronTaskStateTransformer struct function NewCronTaskStateTransformer (line 173) | func NewCronTaskStateTransformer() CronTaskStateTransformer { FILE: internal/routers/admin_router.go function GET (line 12) | func GET(path, title string, auth AuthMode, handlers ...gin.HandlerFunc)... function POST (line 16) | func POST(path, title string, auth AuthMode, handlers ...gin.HandlerFunc... function AdminRouteTree (line 22) | func AdminRouteTree(deps *ControllerDeps) RouteGroupDef { function adminOtherGroup (line 35) | func adminOtherGroup(deps *ControllerDeps) RouteGroupDef { function adminAuthGroup (line 55) | func adminAuthGroup(deps *ControllerDeps) RouteGroupDef { function dashboardGroup (line 74) | func dashboardGroup(deps *ControllerDeps) RouteGroupDef { function commonGroup (line 85) | func commonGroup(deps *ControllerDeps) RouteGroupDef { function authGroup (line 96) | func authGroup(deps *ControllerDeps) RouteGroupDef { function adminUserGroup (line 118) | func adminUserGroup(deps *ControllerDeps) RouteGroupDef { function permissionGroup (line 142) | func permissionGroup(deps *ControllerDeps) RouteGroupDef { function menuGroup (line 154) | func menuGroup(deps *ControllerDeps) RouteGroupDef { function roleGroup (line 170) | func roleGroup(deps *ControllerDeps) RouteGroupDef { function deptGroup (line 185) | func deptGroup(deps *ControllerDeps) RouteGroupDef { function systemGroup (line 201) | func systemGroup(deps *ControllerDeps) RouteGroupDef { function logGroup (line 271) | func logGroup(deps *ControllerDeps) RouteGroupDef { function taskGroup (line 298) | func taskGroup(deps *ControllerDeps) RouteGroupDef { FILE: internal/routers/defs.go constant AuthModeNone (line 14) | AuthModeNone = global.ApiAuthModeNone constant AuthModeLogin (line 16) | AuthModeLogin = global.ApiAuthModeLogin constant AuthModeAuth (line 18) | AuthModeAuth = global.ApiAuthModeAuth type RouteDef (line 23) | type RouteDef struct method WithDesc (line 33) | func (r RouteDef) WithDesc(desc string) RouteDef { type RouteGroupDef (line 40) | type RouteGroupDef struct type RouteMeta (line 50) | type RouteMeta struct type RouteMetaMap (line 61) | type RouteMetaMap FILE: internal/routers/deps.go type ControllerDeps (line 12) | type ControllerDeps struct function DefaultControllerDeps (line 37) | func DefaultControllerDeps() *ControllerDeps { function normalizeControllerDeps (line 62) | func normalizeControllerDeps(deps *ControllerDeps) *ControllerDeps { function MockControllerDeps (line 122) | func MockControllerDeps(deps *ControllerDeps) *ControllerDeps { FILE: internal/routers/meta.go function CollectRouteMeta (line 6) | func CollectRouteMeta(root RouteGroupDef) RouteMetaMap { function collectRouteMeta (line 12) | func collectRouteMeta(metaMap RouteMetaMap, group RouteGroupDef, basePat... FILE: internal/routers/register.go function RegisterRoutes (line 10) | func RegisterRoutes(engine *gin.Engine, root RouteGroupDef) { function registerGroup (line 14) | func registerGroup(routes *gin.RouterGroup, group RouteGroupDef) { function normalizeRelativePath (line 29) | func normalizeRelativePath(path string) string { function joinFullPath (line 37) | func joinFullPath(parts ...string) string { FILE: internal/routers/router.go function SetRouters (line 20) | func SetRouters() (*gin.Engine, error) { function SetRoutersWithTree (line 25) | func SetRoutersWithTree(routeTree RouteGroupDef) (*gin.Engine, error) { function createEngine (line 46) | func createEngine() (*gin.Engine, error) { function ReleaseRouter (line 88) | func ReleaseRouter() *gin.Engine { function AppRouteTree (line 100) | func AppRouteTree() RouteGroupDef { type readinessStatus (line 133) | type readinessStatus struct type readinessComponent (line 139) | type readinessComponent struct type dependencyStatus (line 145) | type dependencyStatus struct function buildReadinessStatus (line 152) | func buildReadinessStatus() readinessStatus { function buildMySQLReadiness (line 177) | func buildMySQLReadiness(cfg *config.Conf) dependencyStatus { function buildRedisReadiness (line 208) | func buildRedisReadiness(cfg *config.Conf) dependencyStatus { function buildQueueReadiness (line 239) | func buildQueueReadiness(cfg *config.Conf) dependencyStatus { FILE: internal/routers/router_deps_test.go function TestAdminRouteTree_WithCustomDeps (line 16) | func TestAdminRouteTree_WithCustomDeps(t *testing.T) { function TestValidateRouteTree (line 42) | func TestValidateRouteTree(t *testing.T) { function TestAdminRouteTree_DefaultDeps (line 67) | func TestAdminRouteTree_DefaultDeps(t *testing.T) { function TestCollectRouteMeta (line 82) | func TestCollectRouteMeta(t *testing.T) { function BenchmarkAdminRouteTree (line 90) | func BenchmarkAdminRouteTree(b *testing.B) { function TestRouterIntegration (line 101) | func TestRouterIntegration(t *testing.T) { FILE: internal/routers/router_test.go function TestSetRoutersRegistersApiMetadata (line 16) | func TestSetRoutersRegistersApiMetadata(t *testing.T) { function TestSetRoutersRegistersPermissionCriticalRoutes (line 32) | func TestSetRoutersRegistersPermissionCriticalRoutes(t *testing.T) { function TestSetRoutersRegistersCriticalRoutes (line 61) | func TestSetRoutersRegistersCriticalRoutes(t *testing.T) { function TestLoginRouteReturnsDependencyNotReadyWhenMysqlUnavailable (line 89) | func TestLoginRouteReturnsDependencyNotReadyWhenMysqlUnavailable(t *test... function TestLoginCaptchaRouteRemainsAvailableWithoutMysql (line 116) | func TestLoginCaptchaRouteRemainsAvailableWithoutMysql(t *testing.T) { function TestReadinessRouteReportsMysqlUnavailable (line 142) | func TestReadinessRouteReportsMysqlUnavailable(t *testing.T) { type routeResult (line 174) | type routeResult struct function disableMysqlForRouterTest (line 178) | func disableMysqlForRouterTest(t *testing.T) func() { function disableDependenciesForReadinessTest (line 196) | func disableDependenciesForReadinessTest(t *testing.T) func() { FILE: internal/routers/validate.go type RouteTreeError (line 10) | type RouteTreeError struct method Error (line 15) | func (e *RouteTreeError) Error() string { function ValidateRouteTree (line 25) | func ValidateRouteTree(root RouteGroupDef) error { function validateRouteTree (line 29) | func validateRouteTree(group RouteGroupDef, basePath string, seen map[st... function isValidHTTPMethod (line 74) | func isValidHTTPMethod(method string) bool { FILE: internal/runtime/config_reload.go function RegisterConfigReloadHandlers (line 18) | func RegisterConfigReloadHandlers() { function reloadLogger (line 43) | func reloadLogger(oldConfig, newConfig *config.Conf, diff config.ConfigD... function reloadData (line 50) | func reloadData(oldConfig, newConfig *config.Conf, diff config.ConfigDif... function reloadCasbin (line 66) | func reloadCasbin(oldConfig, newConfig *config.Conf, diff config.ConfigD... function logWarnings (line 80) | func logWarnings(oldConfig, newConfig *config.Conf, diff config.ConfigDi... FILE: internal/service/access/api_cache.go constant apiRedisKey (line 24) | apiRedisKey = "api_info_map" constant apiCacheRedisTimeout (line 25) | apiCacheRedisTimeout = 3 * time.Second constant apiCacheRefreshTotalTimeout (line 26) | apiCacheRefreshTotalTimeout = 15 * time.Second constant apiCacheWriteBatch (line 27) | apiCacheWriteBatch = 500 type ApiRouteInfo (line 31) | type ApiRouteInfo struct type apiRouteCacheMetrics (line 36) | type apiRouteCacheMetrics struct type apiRouteCacheEntry (line 46) | type apiRouteCacheEntry struct type ApiRouteCacheMetricsSnapshot (line 52) | type ApiRouteCacheMetricsSnapshot struct type ApiRouteCacheService (line 64) | type ApiRouteCacheService struct method ensureRuntimeDeps (line 80) | func (s *ApiRouteCacheService) ensureRuntimeDeps() { method currentConfig (line 92) | func (s *ApiRouteCacheService) currentConfig() *config.Conf { method MetricsSnapshot (line 98) | func (s *ApiRouteCacheService) MetricsSnapshot() ApiRouteCacheMetricsS... method ResetMetrics (line 123) | func (s *ApiRouteCacheService) ResetMetrics() { method cacheKey (line 135) | func (s *ApiRouteCacheService) cacheKey(route string, method string) s... method refreshTempKey (line 159) | func (s *ApiRouteCacheService) refreshTempKey() string { method writeRouteCacheBatch (line 163) | func (s *ApiRouteCacheService) writeRouteCacheBatch(parent context.Con... method RefreshCache (line 182) | func (s *ApiRouteCacheService) RefreshCache() error { method GetRouteInfo (line 275) | func (s *ApiRouteCacheService) GetRouteInfo(route string, method strin... method loadRouteInfoFromSource (line 320) | func (s *ApiRouteCacheService) loadRouteInfoFromSource(route string, m... method CheckoutRouteIsAuth (line 351) | func (s *ApiRouteCacheService) CheckoutRouteIsAuth(route string, metho... method GetApiName (line 363) | func (s *ApiRouteCacheService) GetApiName(route string, method string)... function NewApiRouteCacheService (line 72) | func NewApiRouteCacheService() *ApiRouteCacheService { function redisContext (line 139) | func redisContext() (context.Context, context.CancelFunc) { function redisContextWithTimeout (line 143) | func redisContextWithTimeout(parent context.Context, timeout time.Durati... function logError (line 374) | func logError(message string, err error, route string, method string) { FILE: internal/service/access/api_cache_test.go function TestApiRouteCacheServiceDefaultsWithoutDatabase (line 15) | func TestApiRouteCacheServiceDefaultsWithoutDatabase(t *testing.T) { function TestApiRouteCacheServiceCacheKey (line 28) | func TestApiRouteCacheServiceCacheKey(t *testing.T) { function TestApiRouteCacheServiceGetRouteInfoSingleflightDeduplicates (line 36) | func TestApiRouteCacheServiceGetRouteInfoSingleflightDeduplicates(t *tes... function TestApiRouteCacheServiceResetMetrics (line 104) | func TestApiRouteCacheServiceResetMetrics(t *testing.T) { function TestApiRouteCacheServiceCheckoutRouteIsAuthUsesThreeStateMode (line 131) | func TestApiRouteCacheServiceCheckoutRouteIsAuthUsesThreeStateMode(t *te... function TestRedisContextWithTimeoutHonorsParentDeadline (line 163) | func TestRedisContextWithTimeoutHonorsParentDeadline(t *testing.T) { function TestApiRouteCacheServiceRefreshTempKeyUsesShadowKey (line 183) | func TestApiRouteCacheServiceRefreshTempKeyUsesShadowKey(t *testing.T) { FILE: internal/service/access/common.go function defaultReloadPolicy (line 9) | func defaultReloadPolicy() error { function getPolicyEnforcer (line 14) | func getPolicyEnforcer() (*casbinx.CasbinEnforcer, error) { function FirstTx (line 23) | func FirstTx(tx []*gorm.DB) *gorm.DB { FILE: internal/service/access/coordinator.go type PermissionSyncCoordinator (line 10) | type PermissionSyncCoordinator struct method SyncAll (line 46) | func (c *PermissionSyncCoordinator) SyncAll() error { method SyncAllInTx (line 54) | func (c *PermissionSyncCoordinator) SyncAllInTx(tx *gorm.DB) error { method SyncUser (line 62) | func (c *PermissionSyncCoordinator) SyncUser(userID uint, tx ...*gorm.... method SyncUsers (line 67) | func (c *PermissionSyncCoordinator) SyncUsers(userIDs []uint, tx ...*g... method SyncUsersAffectedByScope (line 72) | func (c *PermissionSyncCoordinator) SyncUsersAffectedByScope(scope Per... method SyncUsersAffectedByAPIs (line 81) | func (c *PermissionSyncCoordinator) SyncUsersAffectedByAPIs(apiIDs []u... method SyncUsersAffectedByMenus (line 86) | func (c *PermissionSyncCoordinator) SyncUsersAffectedByMenus(menuIDs [... method SyncUsersAffectedByRoles (line 91) | func (c *PermissionSyncCoordinator) SyncUsersAffectedByRoles(roleIDs [... method SyncUsersAffectedByDepartments (line 96) | func (c *PermissionSyncCoordinator) SyncUsersAffectedByDepartments(dep... method ClearUser (line 101) | func (c *PermissionSyncCoordinator) ClearUser(userID uint, tx ...*gorm... method AccessibleMenuIDs (line 106) | func (c *PermissionSyncCoordinator) AccessibleMenuIDs(userID uint, inc... method ReloadPolicyCache (line 111) | func (c *PermissionSyncCoordinator) ReloadPolicyCache() error { method ReloadPolicyCacheWithMessage (line 116) | func (c *PermissionSyncCoordinator) ReloadPolicyCacheWithMessage(_ str... method ReloadPolicyCacheWithCode (line 121) | func (c *PermissionSyncCoordinator) ReloadPolicyCacheWithCode(code int... method RunAfterCommit (line 129) | func (c *PermissionSyncCoordinator) RunAfterCommit(db *gorm.DB, _ stri... method RunAfterCommitWithCode (line 134) | func (c *PermissionSyncCoordinator) RunAfterCommitWithCode(db *gorm.DB... type PermissionSyncCoordinatorDeps (line 18) | type PermissionSyncCoordinatorDeps struct function NewPermissionSyncCoordinator (line 26) | func NewPermissionSyncCoordinator() *PermissionSyncCoordinator { function NewPermissionSyncCoordinatorWithDeps (line 31) | func NewPermissionSyncCoordinatorWithDeps(deps PermissionSyncCoordinator... FILE: internal/service/access/graph_loader.go method collectUserPolicies (line 17) | func (s *UserPermissionSyncService) collectUserPolicies(userID uint, tx ... method collectPoliciesForUsers (line 41) | func (s *UserPermissionSyncService) collectPoliciesForUsers(userIDs []ui... method collectActiveUserIDs (line 85) | func (s *UserPermissionSyncService) collectActiveUserIDs(userIDs []uint,... method collectMenuPermissionData (line 104) | func (s *UserPermissionSyncService) collectMenuPermissionData(menuIDs []... method userRoleIDs (line 116) | func (s *UserPermissionSyncService) userRoleIDs(userID uint, tx ...*gorm... method expandRoleIDs (line 145) | func (s *UserPermissionSyncService) expandRoleIDs(roleIDs []uint, tx ...... method RoleMenuIDs (line 170) | func (s *UserPermissionSyncService) RoleMenuIDs(roleIDs []uint, tx ...*g... method expandMenuIDsWithParents (line 190) | func (s *UserPermissionSyncService) expandMenuIDsWithParents(menuIDs []u... method menuAPIPolicies (line 214) | func (s *UserPermissionSyncService) menuAPIPolicies(menuIDs []uint, tx .... method allUserIDs (line 239) | func (s *UserPermissionSyncService) allUserIDs(tx ...*gorm.DB) ([]uint, ... method userInfo (line 247) | func (s *UserPermissionSyncService) userInfo(userID uint, tx ...*gorm.DB... method UserKey (line 259) | func (s *UserPermissionSyncService) UserKey(userID uint) string { type roleStatusInfo (line 265) | type roleStatusInfo struct type roleMenuIDMap (line 271) | type roleMenuIDMap method AllMenuIDs (line 273) | func (m roleMenuIDMap) AllMenuIDs() []uint { method userBaseRoleMap (line 281) | func (s *UserPermissionSyncService) userBaseRoleMap(userIDs []uint, tx *... method appendDirectRoles (line 311) | func (s *UserPermissionSyncService) appendDirectRoles(userRoleMap map[ui... method userDepartmentMap (line 324) | func (s *UserPermissionSyncService) userDepartmentMap(userIDs []uint, tx... method departmentRoleMap (line 330) | func (s *UserPermissionSyncService) departmentRoleMap(deptIDs []uint, tx... method loadRoleStatusMap (line 336) | func (s *UserPermissionSyncService) loadRoleStatusMap(tx *gorm.DB) (map[... method roleMenuMap (line 355) | func (s *UserPermissionSyncService) roleMenuMap(roleIDs []uint, tx *gorm... method enabledMenuSet (line 365) | func (s *UserPermissionSyncService) enabledMenuSet(menuIDs []uint, tx *g... method menuPolicyMap (line 384) | func (s *UserPermissionSyncService) menuPolicyMap(menuIDs []uint, tx *go... function buildAncestorSet (line 409) | func buildAncestorSet(baseIDs []uint, collect func(add func(uint))) []ui... function addAncestorIDs (line 425) | func addAncestorIDs(pids string, add func(uint)) { function isSyncableUser (line 440) | func isSyncableUser(userInfo *model.AdminUser) bool { function expandUserRoles (line 447) | func expandUserRoles(userRoleMap map[uint][]uint, roleStatusMap map[uint... function buildUserPolicies (line 458) | func buildUserPolicies(roleIDs []uint, roleMenuMap roleMenuIDMap, enable... function collectEnabledMenuSet (line 463) | func collectEnabledMenuSet(roleIDs []uint, roleMenuMap roleMenuIDMap, en... function dedupePolicies (line 475) | func dedupePolicies(menuSet map[uint]struct{}, menuPolicies map[uint][][... function expandRoleAncestors (line 494) | func expandRoleAncestors(roleIDs []uint, roleStatusMap map[uint]roleStat... FILE: internal/service/access/menu_api_defaults.go type defaultMenuAPIBinding (line 10) | type defaultMenuAPIBinding struct type MenuAPIDefaultsService (line 111) | type MenuAPIDefaultsService struct method Sync (line 152) | func (s *MenuAPIDefaultsService) Sync(tx ...*gorm.DB) error { type MenuAPIDefaultsServiceDeps (line 117) | type MenuAPIDefaultsServiceDeps struct function NewMenuAPIDefaultsService (line 123) | func NewMenuAPIDefaultsService() *MenuAPIDefaultsService { function NewMenuAPIDefaultsServiceWithDeps (line 128) | func NewMenuAPIDefaultsServiceWithDeps(deps MenuAPIDefaultsServiceDeps) ... function defaultMenuAPIBindings (line 138) | func defaultMenuAPIBindings() []defaultMenuAPIBinding { function cloneMenuAPIBindings (line 142) | func cloneMenuAPIBindings(source []defaultMenuAPIBinding) []defaultMenuA... function defaultMenuAPIDB (line 180) | func defaultMenuAPIDB(tx *gorm.DB) (*gorm.DB, error) { function collectMenuAPIBindingKeys (line 187) | func collectMenuAPIBindingKeys(bindings []defaultMenuAPIBinding) (menuCo... type defaultMenuAPITargets (line 209) | type defaultMenuAPITargets struct function loadDefaultMenuAPITargets (line 214) | func loadDefaultMenuAPITargets(db *gorm.DB, menuCodes []string, routes [... function buildDefaultMenuAPIMappings (line 243) | func buildDefaultMenuAPIMappings(bindings []defaultMenuAPIBinding, targe... FILE: internal/service/access/menu_api_defaults_test.go function TestNewMenuAPIDefaultsServiceUsesIsolatedDefaultBindings (line 10) | func TestNewMenuAPIDefaultsServiceUsesIsolatedDefaultBindings(t *testing... function TestNewMenuAPIDefaultsServiceWithDepsClonesBindings (line 25) | func TestNewMenuAPIDefaultsServiceWithDepsClonesBindings(t *testing.T) { function TestNewMenuAPIDefaultsServiceWithDepsAllowsEmptyBindings (line 40) | func TestNewMenuAPIDefaultsServiceWithDepsAllowsEmptyBindings(t *testing... function TestDefaultMenuAPIBindingsCoverManagementRoutes (line 50) | func TestDefaultMenuAPIBindingsCoverManagementRoutes(t *testing.T) { function TestCollectMenuAPIBindingKeysKeepsUniqueValues (line 79) | func TestCollectMenuAPIBindingKeysKeepsUniqueValues(t *testing.T) { function TestBuildDefaultMenuAPIMappingsSkipsMissingTargets (line 99) | func TestBuildDefaultMenuAPIMappingsSkipsMissingTargets(t *testing.T) { FILE: internal/service/access/scope_resolver.go type PermissionChangeScope (line 10) | type PermissionChangeScope struct type AffectedUsersResolver (line 19) | type AffectedUsersResolver struct method Resolve (line 27) | func (r *AffectedUsersResolver) Resolve(scope PermissionChangeScope, t... method userIDsByRoles (line 80) | func (r *AffectedUsersResolver) userIDsByRoles(roleIDs []uint, tx ...*... method expandRoleSubtree (line 121) | func (r *AffectedUsersResolver) expandRoleSubtree(roleIDs []uint, tx .... function NewAffectedUsersResolver (line 22) | func NewAffectedUsersResolver() *AffectedUsersResolver { FILE: internal/service/access/system_defaults.go type SystemDefaultsService (line 16) | type SystemDefaultsService struct method Ensure (line 24) | func (s *SystemDefaultsService) Ensure(tx ...*gorm.DB) error { method IsProtectedRole (line 40) | func (s *SystemDefaultsService) IsProtectedRole(role *model.Role) bool { method IsProtectedDepartment (line 45) | func (s *SystemDefaultsService) IsProtectedDepartment(dept *model.Depa... method EnsureSuperAdminRoleMenus (line 50) | func (s *SystemDefaultsService) EnsureSuperAdminRoleMenus(tx ...*gorm.... method ensureWithTx (line 54) | func (s *SystemDefaultsService) ensureWithTx(tx *gorm.DB) error { method ensureDefaultDepartment (line 80) | func (s *SystemDefaultsService) ensureDefaultDepartment(tx *gorm.DB) (... method ensureSuperAdminRole (line 127) | func (s *SystemDefaultsService) ensureSuperAdminRole(tx *gorm.DB) (*mo... method ensureSuperAdminUser (line 187) | func (s *SystemDefaultsService) ensureSuperAdminUser(tx *gorm.DB) error { method ensureSuperAdminUserDept (line 210) | func (s *SystemDefaultsService) ensureSuperAdminUserDept(tx *gorm.DB, ... method ensureSuperAdminUserRole (line 225) | func (s *SystemDefaultsService) ensureSuperAdminUserRole(tx *gorm.DB, ... method ensureSuperAdminRoleMenusWithTx (line 240) | func (s *SystemDefaultsService) ensureSuperAdminRoleMenusWithTx(tx *go... method RequireSuperAdminRoleForUser (line 273) | func (s *SystemDefaultsService) RequireSuperAdminRoleForUser(uid uint,... function NewSystemDefaultsService (line 19) | func NewSystemDefaultsService() *SystemDefaultsService { FILE: internal/service/access/system_defaults_test.go function TestSystemDefaultsServiceProtectedPredicates (line 10) | func TestSystemDefaultsServiceProtectedPredicates(t *testing.T) { function TestRequireSuperAdminRoleForNonSuperAdminUserSkipsLookup (line 42) | func TestRequireSuperAdminRoleForNonSuperAdminUserSkipsLookup(t *testing... FILE: internal/service/access/transaction.go function RunInTransaction (line 6) | func RunInTransaction(db *gorm.DB, fn func(tx *gorm.DB) error) error { FILE: internal/service/access/user_permission_sync.go type UserPermissionSyncService (line 11) | type UserPermissionSyncService struct method ReloadPolicyCache (line 39) | func (s *UserPermissionSyncService) ReloadPolicyCache() error { method SyncUser (line 44) | func (s *UserPermissionSyncService) SyncUser(userID uint, tx ...*gorm.... method SyncUsers (line 49) | func (s *UserPermissionSyncService) SyncUsers(userIDs []uint, tx ...*g... method SyncAllUsers (line 60) | func (s *UserPermissionSyncService) SyncAllUsers(tx ...*gorm.DB) error { method ClearUser (line 75) | func (s *UserPermissionSyncService) ClearUser(userID uint, tx ...*gorm... method AccessibleMenuIDs (line 87) | func (s *UserPermissionSyncService) AccessibleMenuIDs(userID uint, inc... method withSyncTransaction (line 106) | func (s *UserPermissionSyncService) withSyncTransaction(tx []*gorm.DB,... method forEachUser (line 121) | func (s *UserPermissionSyncService) forEachUser(userIDs []uint, fn fun... method batchSyncUsersWithEnforcer (line 140) | func (s *UserPermissionSyncService) batchSyncUsersWithEnforcer(userIDs... method syncUserWithTx (line 162) | func (s *UserPermissionSyncService) syncUserWithTx(userID uint, tx *go... type UserPermissionSyncServiceDeps (line 17) | type UserPermissionSyncServiceDeps struct function NewUserPermissionSyncService (line 23) | func NewUserPermissionSyncService() *UserPermissionSyncService { function NewUserPermissionSyncServiceWithDeps (line 28) | func NewUserPermissionSyncServiceWithDeps(deps UserPermissionSyncService... function UniqueUintSlice (line 178) | func UniqueUintSlice(values []uint) []uint { FILE: internal/service/access/user_permission_sync_bench_test.go function BenchmarkBatchPermissionSync (line 5) | func BenchmarkBatchPermissionSync(b *testing.B) { FILE: internal/service/access/user_permission_sync_test.go function TestUserPermissionSyncForEachUserDeduplicatesInOrder (line 12) | func TestUserPermissionSyncForEachUserDeduplicatesInOrder(t *testing.T) { function TestUserPermissionSyncForEachUserStopsOnError (line 30) | func TestUserPermissionSyncForEachUserStopsOnError(t *testing.T) { function TestExpandRoleAncestorsSkipsDisabledRoles (line 45) | func TestExpandRoleAncestorsSkipsDisabledRoles(t *testing.T) { function TestPermissionSyncCoordinatorRunAfterCommitReloadsOnce (line 59) | func TestPermissionSyncCoordinatorRunAfterCommitReloadsOnce(t *testing.T) { FILE: internal/service/admin/admin_user.go type AdminUserService (line 23) | type AdminUserService struct method handleMutationError (line 38) | func (s *AdminUserService) handleMutationError(err error, fallbackCode... method revokeUserTokens (line 51) | func (s *AdminUserService) revokeUserTokens(tx *gorm.DB, userID uint, ... method revokeUserTokensAfterCommit (line 64) | func (s *AdminUserService) revokeUserTokensAfterCommit(items []userTok... method GetUserInfo (line 71) | func (s *AdminUserService) GetUserInfo(id uint) (*resources.AdminUserR... method GetUserMenuInfo (line 85) | func (s *AdminUserService) GetUserMenuInfo(id uint, locale string) (an... method List (line 129) | func (s *AdminUserService) List(params *form.AdminUserList) *resources... method adminUserListOptions (line 142) | func (s *AdminUserService) adminUserListOptions() model.ListOptionalPa... method buildListCondition (line 154) | func (s *AdminUserService) buildListCondition(params *form.AdminUserLi... method userMenuQuery (line 188) | func (s *AdminUserService) userMenuQuery(isSuperAdmin bool, menuIDs []... constant menuQuerySuperAdmin (line 28) | menuQuerySuperAdmin = "status = ?" constant menuQueryNoAuth (line 29) | menuQueryNoAuth = "status = ? AND is_auth = ?" constant menuQueryWithAuth (line 30) | menuQueryWithAuth = "status = ? AND (is_auth = ? OR (is_auth = ? AND i... function NewAdminUserService (line 34) | func NewAdminUserService() *AdminUserService { type userTokenRevocation (line 58) | type userTokenRevocation struct function zeroToNil (line 175) | func zeroToNil(value uint) any { type adminUserEditParams (line 199) | type adminUserEditParams struct FILE: internal/service/admin/admin_user_bind.go method BindDept (line 17) | func (s *AdminUserService) BindDept(uid uint, deptId []uint, tx ...*gorm... method updateDeptUserNumber (line 61) | func (s *AdminUserService) updateDeptUserNumber(deptIds []uint, delta in... method BindRole (line 80) | func (s *AdminUserService) BindRole(params *form.BindRole) error { method updateAdminUserRole (line 108) | func (s *AdminUserService) updateAdminUserRole(uid uint, roleIds []uint,... FILE: internal/service/admin/admin_user_create_test.go function TestAdminUserCreateRequiresUsername (line 11) | func TestAdminUserCreateRequiresUsername(t *testing.T) { function TestAdminUserCreateRequiresNickname (line 22) | func TestAdminUserCreateRequiresNickname(t *testing.T) { function TestAdminUserCreateRequiresPassword (line 35) | func TestAdminUserCreateRequiresPassword(t *testing.T) { function assertBusinessErrorMessage (line 48) | func assertBusinessErrorMessage(t *testing.T, err error, code int, messa... FILE: internal/service/admin/admin_user_mutation.go method Create (line 16) | func (s *AdminUserService) Create(params *form.CreateAdminUser) error { method Update (line 31) | func (s *AdminUserService) Update(params *form.UpdateAdminUser) error { method saveAdminUserMutation (line 53) | func (s *AdminUserService) saveAdminUserMutation(params *adminUserEditPa... method applyUpdateFields (line 152) | func (s *AdminUserService) applyUpdateFields(adminUserModel *model.Admin... method applyCreateFields (line 203) | func (s *AdminUserService) applyCreateFields(adminUserModel *model.Admin... function setHashedPassword (line 243) | func setHashedPassword(adminUserModel *model.AdminUser, plainPassword st... method UpdateProfile (line 253) | func (s *AdminUserService) UpdateProfile(uid uint, params *form.UpdatePr... method validateUniqueFieldsWithLock (line 342) | func (s *AdminUserService) validateUniqueFieldsWithLock(tx *gorm.DB, par... method Delete (line 389) | func (s *AdminUserService) Delete(id uint) error { FILE: internal/service/admin/admin_user_test.go function TestAdminUserBuildListCondition (line 17) | func TestAdminUserBuildListCondition(t *testing.T) { function TestUniqueUintSlice (line 39) | func TestUniqueUintSlice(t *testing.T) { function TestUserPermissionSyncUserKey (line 49) | func TestUserPermissionSyncUserKey(t *testing.T) { function TestAdminUserMenuQuery (line 56) | func TestAdminUserMenuQuery(t *testing.T) { function TestAdminUserHandleMutationErrorKeepsBusinessError (line 75) | func TestAdminUserHandleMutationErrorKeepsBusinessError(t *testing.T) { function TestAdminUserHandleMutationErrorWrapsPlainError (line 85) | func TestAdminUserHandleMutationErrorWrapsPlainError(t *testing.T) { function TestAdminUserListOptionsDepartmentSelectFields (line 92) | func TestAdminUserListOptionsDepartmentSelectFields(t *testing.T) { function TestApplyUpdateFieldsDefaultsCountryCodeWhenPhoneChanges (line 114) | func TestApplyUpdateFieldsDefaultsCountryCodeWhenPhoneChanges(t *testing... function TestApplyUpdateFieldsClearsFullPhoneWhenPhoneCleared (line 136) | func TestApplyUpdateFieldsClearsFullPhoneWhenPhoneCleared(t *testing.T) { function TestApplyUpdateFieldsRejectsSuperAdminPasswordChange (line 160) | func TestApplyUpdateFieldsRejectsSuperAdminPasswordChange(t *testing.T) { FILE: internal/service/admin/audit_diff.go method CreateWithAuditDiff (line 47) | func (s *AdminUserService) CreateWithAuditDiff(params *form.CreateAdminU... method UpdateWithAuditDiff (line 69) | func (s *AdminUserService) UpdateWithAuditDiff(params *form.UpdateAdminU... method DeleteWithAuditDiff (line 88) | func (s *AdminUserService) DeleteWithAuditDiff(id uint) (string, error) { method UpdateProfileWithAuditDiff (line 100) | func (s *AdminUserService) UpdateProfileWithAuditDiff(uid uint, params *... method BindRoleWithAuditDiff (line 119) | func (s *AdminUserService) BindRoleWithAuditDiff(params *form.BindRole) ... method snapshotAdminUserByUsername (line 138) | func (s *AdminUserService) snapshotAdminUserByUsername(username string) ... method snapshotAdminUserByID (line 150) | func (s *AdminUserService) snapshotAdminUserByID(id uint) (map[string]an... method snapshotAdminUserRoleBinding (line 180) | func (s *AdminUserService) snapshotAdminUserRoleBinding(userID uint) (ma... function buildAdminUserDiff (line 196) | func buildAdminUserDiff(before, after map[string]any) string { function sortUintSlice (line 201) | func sortUintSlice(values []uint) { FILE: internal/service/admin/audit_diff_test.go function TestBuildAdminUserDiffIncludesStatusDisplay (line 8) | func TestBuildAdminUserDiffIncludesStatusDisplay(t *testing.T) { FILE: internal/service/api_permission/api.go type ApiService (line 16) | type ApiService struct method Update (line 26) | func (s *ApiService) Update(params *form.UpdatePermission) error { method ListPage (line 58) | func (s *ApiService) ListPage(params *form.ListPermission) *resources.... method buildListCondition (line 80) | func (s *ApiService) buildListCondition(params *form.ListPermission) (... function NewApiService (line 21) | func NewApiService() *ApiService { function emptyToNil (line 95) | func emptyToNil(value string) any { FILE: internal/service/api_permission/api_test.go function TestApiBuildListCondition (line 9) | func TestApiBuildListCondition(t *testing.T) { FILE: internal/service/api_permission/audit_diff.go method UpdateWithAuditDiff (line 27) | func (s *ApiService) UpdateWithAuditDiff(params *form.UpdatePermission) ... method snapshotAPIPermissionByID (line 46) | func (s *ApiService) snapshotAPIPermissionByID(id uint) (map[string]any,... FILE: internal/service/api_permission/audit_diff_test.go function TestAPIPermissionDiffIncludesAuthModeDisplay (line 10) | func TestAPIPermissionDiffIncludesAuthModeDisplay(t *testing.T) { FILE: internal/service/audit/list_helpers.go type logListQuery (line 5) | type logListQuery struct method addEq (line 13) | func (q *logListQuery) addEq(field string, value any) *logListQuery { method addLike (line 18) | func (q *logListQuery) addLike(field, value string) *logListQuery { method addCondition (line 23) | func (q *logListQuery) addCondition(condition string, args ...any) *lo... method addCreatedAtRange (line 28) | func (q *logListQuery) addCreatedAtRange(startTime, endTime string) *l... function newLogListQuery (line 9) | func newLogListQuery() *logListQuery { function uintFilterValue (line 38) | func uintFilterValue(value uint) any { FILE: internal/service/audit/login_log.go type AdminLoginLogService (line 16) | type AdminLoginLogService struct method ensureRuntimeDeps (line 42) | func (s *AdminLoginLogService) ensureRuntimeDeps() { method currentConfig (line 48) | func (s *AdminLoginLogService) currentConfig() *config.Conf { method List (line 54) | func (s *AdminLoginLogService) List(params *form.AdminLoginLogList) *r... method Detail (line 98) | func (s *AdminLoginLogService) Detail(id uint) (any, error) { type AdminLoginLogServiceDeps (line 23) | type AdminLoginLogServiceDeps struct function NewAdminLoginLogService (line 29) | func NewAdminLoginLogService() *AdminLoginLogService { function NewAdminLoginLogServiceWithDeps (line 34) | func NewAdminLoginLogServiceWithDeps(deps AdminLoginLogServiceDeps) *Adm... function decryptLoginTokenIfNeeded (line 111) | func decryptLoginTokenIfNeeded(token, decryptKey string) string { FILE: internal/service/audit/login_log_test.go function TestDecryptLoginTokenIfNeeded (line 12) | func TestDecryptLoginTokenIfNeeded(t *testing.T) { function TestDecryptLoginTokenIfNeededFallbackOnDecryptError (line 26) | func TestDecryptLoginTokenIfNeededFallbackOnDecryptError(t *testing.T) { function TestCurrentAuditConfigUsesInjectedProvider (line 35) | func TestCurrentAuditConfigUsesInjectedProvider(t *testing.T) { FILE: internal/service/audit/request_log.go type RequestLogService (line 14) | type RequestLogService struct method List (line 24) | func (s *RequestLogService) List(params *form.RequestLogList) *resourc... method Detail (line 74) | func (s *RequestLogService) Detail(id uint) (any, error) { function NewRequestLogService (line 19) | func NewRequestLogService() *RequestLogService { type requestLogQueryInput (line 84) | type requestLogQueryInput struct function buildRequestLogQuery (line 97) | func buildRequestLogQuery(input requestLogQueryInput) *logListQuery { FILE: internal/service/audit/request_log_manage.go constant defaultRequestLogExportLimit (line 23) | defaultRequestLogExportLimit = 1000 constant requestLogMaskConfigGroupCode (line 26) | requestLogMaskConfigGroupCode = "audit" constant requestLogMaskConfigSort (line 27) | requestLogMaskConfigSort = 95 constant requestLogMaskConfigRemark (line 28) | requestLogMaskConfigRemark = "请求日志脱敏字段配置" constant requestLogMaskConfigManageTab (line 29) | requestLogMaskConfigManageTab = "audit_mask" method ExportCSV (line 46) | func (s *RequestLogService) ExportCSV(params *form.RequestLogExport) ([]... method GetMaskConfig (line 143) | func (s *RequestLogService) GetMaskConfig() map[string]any { function toMaskConfigMap (line 151) | func toMaskConfigMap(cfg sensitive.SensitiveFieldsConfig) map[string]any { method UpdateMaskConfig (line 162) | func (s *RequestLogService) UpdateMaskConfig(params *form.RequestLogMask... method UpdateMaskConfigWithAuditDiff (line 192) | func (s *RequestLogService) UpdateMaskConfigWithAuditDiff(params *form.R... function buildMaskConfigAuditDiff (line 202) | func buildMaskConfigAuditDiff(before, after map[string]any) string { function normalizeSensitiveFieldList (line 207) | func normalizeSensitiveFieldList(input []string) []string { function loadMaskConfigFromSysConfig (line 227) | func loadMaskConfigFromSysConfig() (sensitive.SensitiveFieldsConfig, err... function decodeMaskConfig (line 238) | func decodeMaskConfig(raw string) (sensitive.SensitiveFieldsConfig, erro... function saveMaskConfigToSysConfig (line 256) | func saveMaskConfigToSysConfig(config sensitive.SensitiveFieldsConfig) (... FILE: internal/service/audit/request_log_manage_test.go function TestDecodeMaskConfigNormalizesFields (line 10) | func TestDecodeMaskConfigNormalizesFields(t *testing.T) { function TestDecodeMaskConfigEmptyUsesDefault (line 48) | func TestDecodeMaskConfigEmptyUsesDefault(t *testing.T) { function TestBuildMaskConfigAuditDiff (line 63) | func TestBuildMaskConfigAuditDiff(t *testing.T) { FILE: internal/service/audit/request_log_write.go type AuditLogSnapshot (line 8) | type AuditLogSnapshot struct function PersistAuditLog (line 34) | func PersistAuditLog(snapshot *AuditLogSnapshot) error { FILE: internal/service/auth/login.go type LoginService (line 23) | type LoginService struct method ensureRuntimeDeps (line 89) | func (s *LoginService) ensureRuntimeDeps() { method currentConfig (line 120) | func (s *LoginService) currentConfig() *config.Conf { method Login (line 126) | func (s *LoginService) Login(username, password string, logInfo LoginL... method validateUser (line 166) | func (s *LoginService) validateUser(username, password string) (*model... method recordLoginLog (line 188) | func (s *LoginService) recordLoginLog(adminUser *model.AdminUser, clai... method Refresh (line 215) | func (s *LoginService) Refresh(id uint, logInfo LoginLogInfo) (*TokenR... method newAdminCustomClaims (line 246) | func (s *LoginService) newAdminCustomClaims(user *model.AdminUser) tok... type LoginServiceDeps (line 46) | type LoginServiceDeps struct function NewLoginService (line 68) | func NewLoginService() *LoginService { function NewLoginServiceWithDeps (line 73) | func NewLoginServiceWithDeps(deps LoginServiceDeps) *LoginService { FILE: internal/service/auth/login_bench_test.go function BenchmarkResolvePrincipal (line 12) | func BenchmarkResolvePrincipal(b *testing.B) { FILE: internal/service/auth/login_blacklist.go constant redisOpTimeout (line 23) | redisOpTimeout = 3 * time.Second method Logout (line 28) | func (s *LoginService) Logout(accessToken string) error { method parseToken (line 57) | func (s *LoginService) parseToken(accessToken string) (*token.AdminCusto... method IsInBlacklist (line 76) | func (s *LoginService) IsInBlacklist(jwtId string) (bool, error) { method writeTokenToBlacklist (line 94) | func (s *LoginService) writeTokenToBlacklist(jwtID string, remainingTime... method getBlacklistKey (line 113) | func (s *LoginService) getBlacklistKey(jwtId string) string { method addTokensToBlacklist (line 118) | func (s *LoginService) addTokensToBlacklist(loginLogs []model.AdminLogin... method calculateRemainingTime (line 160) | func (s *LoginService) calculateRemainingTime(tokenExpires *utils.Format... method RevokeUserTokens (line 172) | func (s *LoginService) RevokeUserTokens(userId uint, revokedCode uint8, ... function collectJWTIDs (line 204) | func collectJWTIDs(loginLogs []model.AdminLoginLogs) []string { FILE: internal/service/auth/login_helpers_test.go function TestExtractErrorMessage (line 24) | func TestExtractErrorMessage(t *testing.T) { function TestCalculateTokenHash (line 39) | func TestCalculateTokenHash(t *testing.T) { function TestGetBlacklistKey (line 50) | func TestGetBlacklistKey(t *testing.T) { function TestCalculateRemainingTime (line 59) | func TestCalculateRemainingTime(t *testing.T) { function TestBuildRefreshLockKey (line 79) | func TestBuildRefreshLockKey(t *testing.T) { function TestShouldRefreshToken (line 89) | func TestShouldRefreshToken(t *testing.T) { function TestIsPrincipalValidSkipsFallbackWhenMysqlUnavailable (line 120) | func TestIsPrincipalValidSkipsFallbackWhenMysqlUnavailable(t *testing.T) { function TestIsPrincipalValidFallsBackToDatabaseWhenMysqlReady (line 147) | func TestIsPrincipalValidFallsBackToDatabaseWhenMysqlReady(t *testing.T) { function TestIsPrincipalValidChecksDatabaseWhenRedisMisses (line 174) | func TestIsPrincipalValidChecksDatabaseWhenRedisMisses(t *testing.T) { function TestIsPrincipalValidRejectsRevokedToken (line 201) | func TestIsPrincipalValidRejectsRevokedToken(t *testing.T) { function TestValidateUserReturnsDependencyErrorWhenDBUnavailable (line 222) | func TestValidateUserReturnsDependencyErrorWhenDBUnavailable(t *testing.... function TestLogoutFallsBackToDatabaseRevocationWhenRedisUnavailable (line 239) | func TestLogoutFallsBackToDatabaseRevocationWhenRedisUnavailable(t *test... function TestLogoutTreatsRedisWriteFailureAsSuccessAfterDatabaseRevocation (line 287) | func TestLogoutTreatsRedisWriteFailureAsSuccessAfterDatabaseRevocation(t... function TestAcquireMemoryLock (line 347) | func TestAcquireMemoryLock(t *testing.T) { function TestNewLoginServiceSharesDefaultRefreshLockStore (line 356) | func TestNewLoginServiceSharesDefaultRefreshLockStore(t *testing.T) { function TestNewLoginServiceWithDepsUsesCustomRefreshLockStore (line 367) | func TestNewLoginServiceWithDepsUsesCustomRefreshLockStore(t *testing.T) { function TestAcquireRefreshLockFallsBackToMemoryWhenRedisDisabled (line 378) | func TestAcquireRefreshLockFallsBackToMemoryWhenRedisDisabled(t *testing... function TestResolvePrincipalSkipsAutoRefreshWhenMysqlUnavailable (line 402) | func TestResolvePrincipalSkipsAutoRefreshWhenMysqlUnavailable(t *testing... function signTokenForTest (line 428) | func signTokenForTest(claims jwt.Claims, secret string) (string, error) { FILE: internal/service/auth/login_log_helpers.go method buildLoginLog (line 19) | func (s *LoginService) buildLoginLog(uid uint, username, jwtId, accessTo... method encryptAndSetToken (line 40) | func (s *LoginService) encryptAndSetToken(loginLog *model.AdminLoginLogs... method encryptToken (line 53) | func (s *LoginService) encryptToken(key, token, tokenType string, uid ui... method extractErrorMessage (line 63) | func (s *LoginService) extractErrorMessage(err error) string { method ExtractErrorMessage (line 72) | func (s *LoginService) ExtractErrorMessage(err error) string { method RecordLoginFailLog (line 77) | func (s *LoginService) RecordLoginFailLog(username, failReason string, l... method calculateTokenHash (line 105) | func (s *LoginService) calculateTokenHash(accessToken string) string { function logLoginAsyncError (line 110) | func logLoginAsyncError(message string, fields ...zap.Field) { FILE: internal/service/auth/login_refresh.go constant refreshLockRedisTimeout (line 18) | refreshLockRedisTimeout = 2 * time.Second constant unknownUserAgentPart (line 19) | unknownUserAgentPart = "Unknown" method BuildLoginLogInfo (line 22) | func (s *LoginService) BuildLoginLogInfo(c *gin.Context) LoginLogInfo { function normalizeUserAgentPart (line 37) | func normalizeUserAgentPart(value string) string { method tryRefreshToken (line 46) | func (s *LoginService) tryRefreshToken(principal *AuthPrincipal) { method shouldRefreshToken (line 66) | func (s *LoginService) shouldRefreshToken(principal *AuthPrincipal) bool { method buildRefreshLockKey (line 82) | func (s *LoginService) buildRefreshLockKey(claims *token.AdminCustomClai... method acquireRefreshLock (line 87) | func (s *LoginService) acquireRefreshLock(lockKey string, claims *token.... method acquireRedisLock (line 105) | func (s *LoginService) acquireRedisLock(lockKey string) (func(), bool, e... method acquireMemoryLock (line 127) | func (s *LoginService) acquireMemoryLock(lockKey string) func() { method doRefreshToken (line 135) | func (s *LoginService) doRefreshToken(principal *AuthPrincipal) { FILE: internal/service/auth/login_revoke.go constant revokeLogAsyncTimeout (line 16) | revokeLogAsyncTimeout = 5 * time.Second method isTokenRevokedInLog (line 19) | func (s *LoginService) isTokenRevokedInLog(jwtId string) bool { method markTokensRevoked (line 36) | func (s *LoginService) markTokensRevoked(ctx context.Context, jwtIds []s... function logRevokeError (line 56) | func logRevokeError(message string, fields ...zap.Field) { FILE: internal/service/auth/login_security.go constant defaultLoginMaxFailures (line 20) | defaultLoginMaxFailures = 5 constant defaultLoginLockMinutes (line 21) | defaultLoginLockMinutes = 15 type loginLockPolicy (line 24) | type loginLockPolicy struct method CheckLoginAllowed (line 31) | func (s *LoginService) CheckLoginAllowed(username string) error { method HandleLoginFailure (line 36) | func (s *LoginService) HandleLoginFailure(username, failReason string, l... method ensureLoginAllowed (line 46) | func (s *LoginService) ensureLoginAllowed(username string) error { method incrementLoginFailState (line 81) | func (s *LoginService) incrementLoginFailState(username string) error { method clearLoginFailState (line 124) | func (s *LoginService) clearLoginFailState(username string) error { method loginLockPolicy (line 144) | func (s *LoginService) loginLockPolicy() loginLockPolicy { method shouldCountLockFailure (line 159) | func (s *LoginService) shouldCountLockFailure(err error) bool { function applyLoginFailState (line 172) | func applyLoginFailState(state *model.LoginSecurityState, now time.Time,... function isTableNotFoundErr (line 188) | func isTableNotFoundErr(err error) bool { FILE: internal/service/auth/login_security_test.go function TestShouldCountLockFailure (line 12) | func TestShouldCountLockFailure(t *testing.T) { function TestApplyLoginFailStateLocksWhenThresholdReached (line 34) | func TestApplyLoginFailStateLocksWhenThresholdReached(t *testing.T) { function TestApplyLoginFailStateResetsExpiredLock (line 58) | func TestApplyLoginFailStateResetsExpiredLock(t *testing.T) { FILE: internal/service/auth/login_token_ops.go method CheckToken (line 13) | func (s *LoginService) CheckToken(accessToken string) (*model.AdminUser,... method ResolvePrincipal (line 22) | func (s *LoginService) ResolvePrincipal(accessToken string) (*AuthPrinci... method resolvePrincipalFromClaims (line 30) | func (s *LoginService) resolvePrincipalFromClaims(claims *token.AdminCus... method isPrincipalValid (line 53) | func (s *LoginService) isPrincipalValid(claims *token.AdminCustomClaims)... method shouldLogRedisFallback (line 79) | func (s *LoginService) shouldLogRedisFallback(err error) bool { FILE: internal/service/auth/login_types.go constant tokenTypeBearer (line 11) | tokenTypeBearer = "Bearer" constant blacklistPrefix (line 12) | blacklistPrefix = "blacklist:" constant refreshLockPrefix (line 13) | refreshLockPrefix = "refresh_token_lock:" constant refreshLockTTL (line 14) | refreshLockTTL = 5 * time.Second constant defaultTokenTTL (line 15) | defaultTokenTTL = 24 * time.Hour type refreshTokenLock (line 19) | type refreshTokenLock struct method getLock (line 33) | func (r *refreshTokenLock) getLock(key string) *sync.Mutex { function newRefreshTokenLock (line 25) | func newRefreshTokenLock(ttl, cleanupInterval time.Duration) *refreshTok... function defaultRefreshLockStore (line 60) | func defaultRefreshLockStore() *refreshTokenLock { type TokenResponse (line 68) | type TokenResponse struct type LoginLogInfo (line 76) | type LoginLogInfo struct FILE: internal/service/auth/login_types_test.go function TestRefreshTokenLockReusesMutexBeforeExpiry (line 9) | func TestRefreshTokenLockReusesMutexBeforeExpiry(t *testing.T) { function TestRefreshTokenLockCreatesNewMutexAfterExpiry (line 20) | func TestRefreshTokenLockCreatesNewMutexAfterExpiry(t *testing.T) { function TestRefreshTokenLockIsSafeUnderConcurrentAccess (line 32) | func TestRefreshTokenLockIsSafeUnderConcurrentAccess(t *testing.T) { FILE: internal/service/auth/principal.go type AuthPrincipal (line 15) | type AuthPrincipal struct method AdminUser (line 50) | func (p *AuthPrincipal) AdminUser() *model.AdminUser { function newAuthPrincipalFromClaims (line 28) | func newAuthPrincipalFromClaims(claims *token.AdminCustomClaims) *AuthPr... function StoreAuthPrincipal (line 69) | func StoreAuthPrincipal(c *gin.Context, principal *AuthPrincipal) { function GetAuthPrincipal (line 78) | func GetAuthPrincipal(c *gin.Context) *AuthPrincipal { FILE: internal/service/auth/session.go constant defaultSessionRevokeReason (line 20) | defaultSessionRevokeReason = "管理员强制下线" method ListSessions (line 23) | func (s *LoginService) ListSessions(params *form.SessionList) *resources... method RevokeSession (line 69) | func (s *LoginService) RevokeSession(ctx context.Context, id uint, reaso... method loadRevocableSession (line 98) | func (s *LoginService) loadRevocableSession(id uint) (*model.AdminLoginL... FILE: internal/service/auth/session_test.go function TestRevokeSessionUpdatesDatabaseWhenRedisUnavailable (line 15) | func TestRevokeSessionUpdatesDatabaseWhenRedisUnavailable(t *testing.T) { function TestRevokeSessionRejectsExpiredSession (line 52) | func TestRevokeSessionRejectsExpiredSession(t *testing.T) { function newSessionTestDB (line 73) | func newSessionTestDB(t *testing.T) *gorm.DB { FILE: internal/service/common.go type CommonService (line 21) | type CommonService struct method UploadImages (line 33) | func (s CommonService) UploadImages(files []*multipart.FileHeader, pat... method UploadImage (line 50) | func (s CommonService) UploadImage(fileHeader *multipart.FileHeader, i... method GetFileAccessPath (line 199) | func (s CommonService) GetFileAccessPath(fileUUID string, checkAuth bo... constant maxUploadFileSize (line 25) | maxUploadFileSize int64 = 10 * 1024 * 1024 function NewCommonService (line 28) | func NewCommonService() *CommonService { type FileAccessResult (line 194) | type FileAccessResult struct FILE: internal/service/common_test.go function TestVisibilityFlag (line 15) | func TestVisibilityFlag(t *testing.T) { function TestStorageBasePath (line 20) | func TestStorageBasePath(t *testing.T) { function TestNormalizeUploadPath (line 32) | func TestNormalizeUploadPath(t *testing.T) { function TestBuildFileURL (line 42) | func TestBuildFileURL(t *testing.T) { function TestFillFileInfoFromModel (line 56) | func TestFillFileInfoFromModel(t *testing.T) { function TestFillFileInfoFromUploadResult (line 80) | func TestFillFileInfoFromUploadResult(t *testing.T) { function TestSummarizeImageUploadResults (line 104) | func TestSummarizeImageUploadResults(t *testing.T) { function TestSummarizeImageUploadResultsAllFailed (line 116) | func TestSummarizeImageUploadResultsAllFailed(t *testing.T) { function TestIsPartialImageUploadError (line 127) | func TestIsPartialImageUploadError(t *testing.T) { FILE: internal/service/common_upload_helpers.go constant defaultUploadSubDir (line 18) | defaultUploadSubDir = "default" function buildFileURL (line 20) | func buildFileURL(uuid string) string { function setFileFailure (line 31) | func setFileFailure(info *utils.FileInfo, reason string, err error) (*ut... function visibilityFlag (line 37) | func visibilityFlag(isPublic bool) uint8 { function storageBasePath (line 44) | func storageBasePath(isPublic bool) string { function storageBaseForDriver (line 52) | func storageBaseForDriver(driverName string, isPublic bool, bucket strin... function normalizeUploadPath (line 59) | func normalizeUploadPath(path string) (string, error) { function resolveUploadDestination (line 78) | func resolveUploadDestination(basePath, uploadPath string) (string, erro... function findReusableUploadFile (line 96) | func findReusableUploadFile(hash string, isPublic uint8) (*model.UploadF... function existingUploadFileExists (line 104) | func existingUploadFileExists(basePath, relativePath string) bool { function fillFileInfoFromModel (line 113) | func fillFileInfoFromModel(fileInfo *utils.FileInfo, uploadFile *model.U... function fillFileInfoFromUploadResult (line 125) | func fillFileInfoFromUploadResult(fileInfo *utils.FileInfo, result *util... function classifyUploadFileType (line 137) | func classifyUploadFileType(mimeType string) string { function cleanupStoredUpload (line 163) | func cleanupStoredUpload(path string) { function summarizeImageUploadResults (line 170) | func summarizeImageUploadResults(filesInfo []*utils.FileInfo) ([]*utils.... function IsPartialImageUploadError (line 193) | func IsPartialImageUploadError(err error) bool { function initUploadResult (line 198) | func initUploadResult(fileHeader *multipart.FileHeader) *utils.FileInfo { FILE: internal/service/common_upload_helpers_test.go function TestNormalizeUploadPathRejectsTraversal (line 5) | func TestNormalizeUploadPathRejectsTraversal(t *testing.T) { function TestNormalizeUploadPathKeepsRelativeSubdirs (line 14) | func TestNormalizeUploadPathKeepsRelativeSubdirs(t *testing.T) { FILE: internal/service/dashboard/overview.go type Metric (line 14) | type Metric struct type ActivityItem (line 24) | type ActivityItem struct type UserLogin (line 32) | type UserLogin struct type Overview (line 37) | type Overview struct type OverviewService (line 43) | type OverviewService struct method Overview (line 51) | func (s *OverviewService) Overview() (*Overview, error) { function NewOverviewService (line 47) | func NewOverviewService() *OverviewService { function countRows (line 115) | func countRows(db *gorm.DB) (int64, error) { function countDistinct (line 123) | func countDistinct(db *gorm.DB, field string) (int64, error) { function taskCompletionRate (line 131) | func taskCompletionRate(db *gorm.DB, start time.Time, end time.Time) (fl... function buildActivities (line 146) | func buildActivities(db *gorm.DB) []ActivityItem { function formatChange (line 180) | func formatChange(current int64, previous int64) string { function strconvFormatFloat (line 195) | func strconvFormatFloat(value float64) string { function changeType (line 199) | func changeType(current int64, previous int64) string { function inverseChangeType (line 206) | func inverseChangeType(current int64, previous int64) string { function activityType (line 213) | func activityType(status int) string { FILE: internal/service/dept/audit_diff.go method CreateWithAuditDiff (line 31) | func (s *DeptService) CreateWithAuditDiff(params *form.CreateDept) (stri... method UpdateWithAuditDiff (line 52) | func (s *DeptService) UpdateWithAuditDiff(params *form.UpdateDept) (stri... method DeleteWithAuditDiff (line 71) | func (s *DeptService) DeleteWithAuditDiff(id uint) (string, error) { method BindRoleWithAuditDiff (line 83) | func (s *DeptService) BindRoleWithAuditDiff(params *form.DeptBindRole) (... method snapshotDeptByID (line 102) | func (s *DeptService) snapshotDeptByID(id uint) (map[string]any, error) { method snapshotDeptRoleBinding (line 128) | func (s *DeptService) snapshotDeptRoleBinding(deptID uint) (map[string]a... function buildDeptDiff (line 146) | func buildDeptDiff(before, after map[string]any) string { FILE: internal/service/dept/audit_diff_test.go function TestBuildDeptDiffContainsRoleIDs (line 8) | func TestBuildDeptDiffContainsRoleIDs(t *testing.T) { FILE: internal/service/dept/dept.go constant maxDeptLevel (line 18) | maxDeptLevel = 5 constant deptRootPid (line 19) | deptRootPid = 0 type DeptService (line 23) | type DeptService struct method List (line 33) | func (s *DeptService) List(params *form.ListDept) any { method buildListCondition (line 47) | func (s *DeptService) buildListCondition(params *form.ListDept) (strin... method Create (line 55) | func (s *DeptService) Create(params *form.CreateDept) error { method Update (line 66) | func (s *DeptService) Update(params *form.UpdateDept) error { method Delete (line 78) | func (s *DeptService) Delete(id uint) error { method Detail (line 94) | func (s *DeptService) Detail(id uint) (any, error) { method BindRole (line 103) | func (s *DeptService) BindRole(params *form.DeptBindRole) error { method updateDeptRole (line 133) | func (s *DeptService) updateDeptRole(deptId uint, roleIds []uint, tx .... method userIDsByDept (line 178) | func (s *DeptService) userIDsByDept(deptId uint, tx ...*gorm.DB) ([]ui... function NewDeptService (line 28) | func NewDeptService() *DeptService { FILE: internal/service/dept/dept_mutation.go type deptMutation (line 16) | type deptMutation struct method applyDeptMutation (line 31) | func (s *DeptService) applyDeptMutation(params *deptMutation) (*model.De... method generateDeptCode (line 134) | func (s *DeptService) generateDeptCode() string { method buildPidsUpdateExpr (line 146) | func (s *DeptService) buildPidsUpdateExpr(originPids, newPids string) st... method executeDeleteTransaction (line 167) | func (s *DeptService) executeDeleteTransaction(dept *model.Department, i... FILE: internal/service/dept/dept_test.go function TestGenerateDeptCodeUsesUniqueDefaultPrefix (line 5) | func TestGenerateDeptCodeUsesUniqueDefaultPrefix(t *testing.T) { FILE: internal/service/file_object.go type uploadFileObjectInput (line 15) | type uploadFileObjectInput struct function findReusableFileObject (line 28) | func findReusableFileObject(tx *gorm.DB, storageDriver, bucket, hash str... function findFileObjectByID (line 41) | func findFileObjectByID(tx *gorm.DB, id uint) (*model.UploadFileObject, ... function createFileObject (line 52) | func createFileObject(tx *gorm.DB, input uploadFileObjectInput) (*model.... function ensureFileObject (line 79) | func ensureFileObject(tx *gorm.DB, input uploadFileObjectInput) (*model.... function normalizeFileObjectBucket (line 89) | func normalizeFileObjectBucket(storageDriver, bucket string) string { function applyObjectToUploadFile (line 96) | func applyObjectToUploadFile(uploadFile *model.UploadFiles, object *mode... method deletePhysicalObject (line 122) | func (s *FileResourceService) deletePhysicalObject(object *model.UploadF... method deleteObjectIfUnreferenced (line 147) | func (s *FileResourceService) deleteObjectIfUnreferenced(db *gorm.DB, ob... FILE: internal/service/file_reference.go type FileReferenceService (line 16) | type FileReferenceService struct method BindReference (line 28) | func (s *FileReferenceService) BindReference(fileURL, ownerType string... method ReleaseReference (line 57) | func (s *FileReferenceService) ReleaseReference(fileURL, ownerType str... method ReleaseReferencesByOwner (line 72) | func (s *FileReferenceService) ReleaseReferencesByOwner(ownerType stri... method HasActiveReferences (line 87) | func (s *FileReferenceService) HasActiveReferences(fileID uint) (bool,... method List (line 102) | func (s *FileReferenceService) List(params *form.FileReferenceList) *r... method ReferencesByFileID (line 149) | func (s *FileReferenceService) ReferencesByFileID(fileID uint) ([]*mod... method dbOrDefault (line 182) | func (s *FileReferenceService) dbOrDefault() (*gorm.DB, error) { function NewFileReferenceService (line 20) | func NewFileReferenceService(tx ...*gorm.DB) *FileReferenceService { function buildFileReferenceListQuery (line 121) | func buildFileReferenceListQuery(params *form.FileReferenceList) *query_... function referenceListFileID (line 139) | func referenceListFileID(params *form.FileReferenceList) uint { function ExtractFileUUID (line 162) | func ExtractFileUUID(raw string) string { FILE: internal/service/file_reference_test.go function TestExtractFileUUID (line 10) | func TestExtractFileUUID(t *testing.T) { function TestReferenceListFileIDUsesIDAlias (line 26) | func TestReferenceListFileIDUsesIDAlias(t *testing.T) { function TestReferenceListFileIDPrefersFileID (line 33) | func TestReferenceListFileIDPrefersFileID(t *testing.T) { function TestBuildFileReferenceListQuerySkipsZeroOwnerID (line 40) | func TestBuildFileReferenceListQuerySkipsZeroOwnerID(t *testing.T) { function TestBuildFileReferenceListQueryAddsPositiveOwnerID (line 51) | func TestBuildFileReferenceListQueryAddsPositiveOwnerID(t *testing.T) { FILE: internal/service/file_resource.go type FileResourceService (line 22) | type FileResourceService struct method List (line 79) | func (s *FileResourceService) List(params *form.FileResourceList) *res... method Detail (line 125) | func (s *FileResourceService) Detail(id uint) (any, error) { method Delete (line 146) | func (s *FileResourceService) Delete(id uint, deletedBy uint, reason s... method Restore (line 174) | func (s *FileResourceService) Restore(id uint) error { method Destroy (line 193) | func (s *FileResourceService) Destroy(id uint) error { method References (line 219) | func (s *FileResourceService) References(params *form.FileReferenceLis... method findByID (line 232) | func (s *FileResourceService) findByID(id uint) (*model.UploadFiles, e... method findByIDUnscoped (line 246) | func (s *FileResourceService) findByIDUnscoped(id uint) (*model.Upload... method deletePhysicalFile (line 258) | func (s *FileResourceService) deletePhysicalFile(uploadFile *model.Upl... method storageDriverByName (line 287) | func (s *FileResourceService) storageDriverByName(ctx context.Context,... method activeStorageDriver (line 294) | func (s *FileResourceService) activeStorageDriver(ctx context.Context)... method descendantFolderIDs (line 301) | func (s *FileResourceService) descendantFolderIDs(folderID uint) []uint { method listUploadFiles (line 319) | func (s *FileResourceService) listUploadFiles(params *form.FileResourc... method fillReferenceCounts (line 355) | func (s *FileResourceService) fillReferenceCounts(rows []*model.Upload... method fillObjectReuseCounts (line 384) | func (s *FileResourceService) fillObjectReuseCounts(rows []*model.Uplo... method markDeleteFailed (line 433) | func (s *FileResourceService) markDeleteFailed(id uint) error { method dbOrDefault (line 444) | func (s *FileResourceService) dbOrDefault() (*gorm.DB, error) { type FileReferencedDeleteError (line 30) | type FileReferencedDeleteError struct method Error (line 42) | func (err *FileReferencedDeleteError) Error() string { method Unwrap (line 49) | func (err *FileReferencedDeleteError) Unwrap() error { method BusinessError (line 56) | func (err *FileReferencedDeleteError) BusinessError() *e.BusinessError { function NewFileReferencedDeleteError (line 35) | func NewFileReferencedDeleteError(references []*resources.FileReferenceR... type FileResourceServiceDeps (line 64) | type FileResourceServiceDeps struct function NewFileResourceService (line 70) | func NewFileResourceService() *FileResourceService { function NewFileResourceServiceWithDeps (line 74) | func NewFileResourceServiceWithDeps(deps FileResourceServiceDeps) *FileR... function buildFileReferenceResources (line 223) | func buildFileReferenceResources(refs []*model.UploadFileReference) []*r... FILE: internal/service/file_resource_folder_upload.go method FolderTree (line 31) | func (s *FileResourceService) FolderTree() ([]*resources.FileFolderResou... method CreateFolder (line 72) | func (s *FileResourceService) CreateFolder(params *form.FileFolderCreate... method UpdateFolder (line 101) | func (s *FileResourceService) UpdateFolder(params *form.FileFolderUpdate... method DeleteFolder (line 142) | func (s *FileResourceService) DeleteFolder(id uint) error { method MoveFolder (line 171) | func (s *FileResourceService) MoveFolder(params *form.FileFolderMove, ui... method MoveFiles (line 224) | func (s *FileResourceService) MoveFiles(params *form.FileMove) (*resourc... method UploadLocal (line 245) | func (s *FileResourceService) UploadLocal(files []*multipart.FileHeader,... method UploadCredential (line 257) | func (s *FileResourceService) UploadCredential(params *form.FileUploadCr... function buildCredentialCompletePayload (line 326) | func buildCredentialCompletePayload(params *form.FileUploadCredential, d... method CompleteDirectUpload (line 346) | func (s *FileResourceService) CompleteDirectUpload(params *form.FileUplo... method CreateFromReader (line 434) | func (s *FileResourceService) CreateFromReader(ctx context.Context, inpu... type ServerGeneratedFileInput (line 532) | type ServerGeneratedFileInput struct method CreateFromLocalPath (line 543) | func (s *FileResourceService) CreateFromLocalPath(ctx context.Context, p... method uploadLocalOne (line 559) | func (s *FileResourceService) uploadLocalOne(file *multipart.FileHeader,... type folderStat (line 646) | type folderStat struct method folderStats (line 652) | func (s *FileResourceService) folderStats() (map[uint]folderStat, error) { method folderLogicalPath (line 668) | func (s *FileResourceService) folderLogicalPath(folderID uint) (string, ... function folderLogicalPathTx (line 676) | func folderLogicalPathTx(tx *gorm.DB, folderID uint) (string, error) { function normalizeFolderName (line 687) | func normalizeFolderName(name string) (string, error) { function ensureFolderNameUnique (line 695) | func ensureFolderNameUnique(tx *gorm.DB, currentID, parentID uint, name ... function joinLogicalPath (line 710) | func joinLogicalPath(parentPath, name string) string { function updateLogicalPathSnapshots (line 718) | func updateLogicalPathSnapshots(tx *gorm.DB, folderID uint, oldPath, new... function buildUploadObjectKey (line 738) | func buildUploadObjectKey(filename string) string { FILE: internal/service/file_resource_test.go function TestFileResourceDeleteReturnsReferencedError (line 30) | func TestFileResourceDeleteReturnsReferencedError(t *testing.T) { function currentConfigFileResourceTestDB (line 81) | func currentConfigFileResourceTestDB(t *testing.T) *gorm.DB { function cleanupFileResourceTestData (line 102) | func cleanupFileResourceTestData(t *testing.T, db *gorm.DB, uuid string) { function TestFileResourceMoveFolderRejectsDescendant (line 113) | func TestFileResourceMoveFolderRejectsDescendant(t *testing.T) { function TestFileResourceMoveFilesReturnsStatsAndUpdatesLogicalPath (line 130) | func TestFileResourceMoveFilesReturnsStatsAndUpdatesLogicalPath(t *testi... function TestFileResourceUploadLocalRecordsLocationFields (line 157) | func TestFileResourceUploadLocalRecordsLocationFields(t *testing.T) { function TestFileResourceUploadLocalReusesPhysicalObject (line 188) | func TestFileResourceUploadLocalReusesPhysicalObject(t *testing.T) { function TestFileResourceDestroyKeepsPhysicalObjectUntilLastRecord (line 221) | func TestFileResourceDestroyKeepsPhysicalObjectUntilLastRecord(t *testin... function TestFileResourceUploadCredentialReturnsReuse (line 280) | func TestFileResourceUploadCredentialReturnsReuse(t *testing.T) { function TestFileResourceDeletePhysicalUsesFileStorageDriver (line 322) | func TestFileResourceDeletePhysicalUsesFileStorageDriver(t *testing.T) { function newFileResourceSQLiteDB (line 343) | func newFileResourceSQLiteDB(t *testing.T) *gorm.DB { function execFileResourceTestSchema (line 353) | func execFileResourceTestSchema(t *testing.T, db *gorm.DB) { function newMultipartFileHeader (line 435) | func newMultipartFileHeader(t *testing.T, filename string, content []byt... type fakeFileResourceDriver (line 460) | type fakeFileResourceDriver struct method Name (line 464) | func (d fakeFileResourceDriver) Name() string { return d.name } method Put (line 466) | func (d fakeFileResourceDriver) Put(context.Context, filestorage.PutIn... method Open (line 470) | func (d fakeFileResourceDriver) Open(context.Context, string, string) ... method Exists (line 474) | func (d fakeFileResourceDriver) Exists(context.Context, string, string... method Delete (line 478) | func (d fakeFileResourceDriver) Delete(context.Context, string, string... method URL (line 482) | func (d fakeFileResourceDriver) URL(string, string, bool) string { method SignedURL (line 486) | func (d fakeFileResourceDriver) SignedURL(context.Context, string, str... FILE: internal/service/i18n_text.go function NormalizeLocaleTextMap (line 10) | func NormalizeLocaleTextMap(data map[string]string) map[string]string { function NormalizeLocaleKey (line 24) | func NormalizeLocaleKey(locale string) string { function LocalePriority (line 42) | func LocalePriority(locale string) []string { function ResolveLocaleText (line 64) | func ResolveLocaleText(translations map[string]string, locale string) st... FILE: internal/service/menu/audit_diff.go method CreateWithAuditDiff (line 83) | func (s *MenuService) CreateWithAuditDiff(params *form.CreateMenu, _ str... method UpdateWithAuditDiff (line 120) | func (s *MenuService) UpdateWithAuditDiff(params *form.UpdateMenu, _ str... method DeleteWithAuditDiff (line 161) | func (s *MenuService) DeleteWithAuditDiff(id uint) (string, error) { method snapshotMenuByID (line 172) | func (s *MenuService) snapshotMenuByID(id uint) (map[string]any, error) { function buildMenuDiff (line 216) | func buildMenuDiff(before, after map[string]any) string { FILE: internal/service/menu/audit_diff_test.go function TestBuildMenuDiffIncludesTypeDisplay (line 8) | func TestBuildMenuDiffIncludesTypeDisplay(t *testing.T) { FILE: internal/service/menu/menu.go constant menuRootPid (line 6) | menuRootPid = "0" constant menuRootLevel (line 7) | menuRootLevel = 1 constant maxMenuLevel (line 8) | maxMenuLevel = 4 constant allStatus (line 9) | allStatus = 2 constant rootPath (line 10) | rootPath = "/" type MenuService (line 14) | type MenuService struct function NewMenuService (line 19) | func NewMenuService() *MenuService { FILE: internal/service/menu/menu_edit.go method Create (line 19) | func (s *MenuService) Create(params *form.CreateMenu, _ string) error { method Update (line 46) | func (s *MenuService) Update(params *form.UpdateMenu, _ string) error { type menuMutation (line 74) | type menuMutation struct type menuEditContext (line 99) | type menuEditContext struct method applyMenuMutation (line 115) | func (s *MenuService) applyMenuMutation(params *menuMutation) (*model.Me... method prepareMutationContext (line 153) | func (s *MenuService) prepareMutationContext(params *menuMutation) (*mod... function newMenuEditContext (line 171) | func newMenuEditContext() *menuEditContext { method normalizeMenuAPIList (line 181) | func (s *MenuService) normalizeMenuAPIList(params *menuMutation) error { method normalizeMenuTitles (line 197) | func (s *MenuService) normalizeMenuTitles(params *menuMutation) error { function isSupportedMenuLocale (line 220) | func isSupportedMenuLocale(locale string) bool { method resolveMenuHierarchy (line 230) | func (s *MenuService) resolveMenuHierarchy(menu *model.Menu, params *men... method buildPids (line 267) | func (s *MenuService) buildPids(parentPids string, parentID uint) string { method buildFullPath (line 276) | func (s *MenuService) buildFullPath(path, parentPath string, menuType ui... method assignMenuFields (line 295) | func (s *MenuService) assignMenuFields(menu *model.Menu, params *menuMut... method validateUniqueFields (line 321) | func (s *MenuService) validateUniqueFields(menu *model.Menu, params *men... method executeEditTransaction (line 360) | func (s *MenuService) executeEditTransaction(menu *model.Menu, apiList [... method persistMenu (line 392) | func (s *MenuService) persistMenu(menu *model.Menu, tx *gorm.DB) error { method updateParentChildrenNum (line 398) | func (s *MenuService) updateParentChildrenNum(menu *model.Menu, editCont... method updateChildrenLevels (line 416) | func (s *MenuService) updateChildrenLevels(menu *model.Menu, originPids ... method groupDescendantsByPID (line 440) | func (s *MenuService) groupDescendantsByPID(descendants []model.Menu) ma... method rebuildMenuDescendants (line 450) | func (s *MenuService) rebuildMenuDescendants(tx *gorm.DB, parent *model.... method updateMenuPermissions (line 479) | func (s *MenuService) updateMenuPermissions(menu *model.Menu, apiList []... method UpdateAllMenuPermissions (line 518) | func (s *MenuService) UpdateAllMenuPermissions() error { FILE: internal/service/menu/menu_query.go method ListPage (line 16) | func (s *MenuService) ListPage(params *form.ListMenu) *resources.Collect... method List (line 27) | func (s *MenuService) List(params *form.ListMenu, locale string) any { method Delete (line 43) | func (s *MenuService) Delete(id uint) error { method Detail (line 94) | func (s *MenuService) Detail(id uint, _ string) (any, error) { method buildListCondition (line 106) | func (s *MenuService) buildListCondition(params *form.ListMenu, includeS... method loadLocalizedTitles (line 118) | func (s *MenuService) loadLocalizedTitles(menus []*model.Menu, locale st... function menuLocalePriority (line 132) | func menuLocalePriority(locale string) []string { FILE: internal/service/menu/menu_test.go function TestMenuBuildListCondition (line 11) | func TestMenuBuildListCondition(t *testing.T) { function TestAssembleFullPath (line 30) | func TestAssembleFullPath(t *testing.T) { function TestBuildPids (line 43) | func TestBuildPids(t *testing.T) { function TestMenuLocalePriority (line 53) | func TestMenuLocalePriority(t *testing.T) { FILE: internal/service/role/audit_diff.go method CreateWithAuditDiff (line 34) | func (s *RoleService) CreateWithAuditDiff(params *form.CreateRole) (stri... method UpdateWithAuditDiff (line 54) | func (s *RoleService) UpdateWithAuditDiff(params *form.UpdateRole) (stri... method DeleteWithAuditDiff (line 73) | func (s *RoleService) DeleteWithAuditDiff(id uint) (string, error) { method snapshotRoleByCode (line 84) | func (s *RoleService) snapshotRoleByCode(code string) (map[string]any, e... method snapshotRoleByID (line 92) | func (s *RoleService) snapshotRoleByID(id uint) (map[string]any, error) { function buildRoleDiff (line 118) | func buildRoleDiff(before, after map[string]any) string { FILE: internal/service/role/audit_diff_test.go function TestBuildRoleDiffIncludesStatusDisplay (line 8) | func TestBuildRoleDiffIncludesStatusDisplay(t *testing.T) { FILE: internal/service/role/role.go constant maxRoleLevel (line 16) | maxRoleLevel = 2 constant maxChildrenPerTop (line 17) | maxChildrenPerTop = 5 type RoleService (line 21) | type RoleService struct method List (line 31) | func (s *RoleService) List(params *form.RoleList) interface{} { method buildListCondition (line 50) | func (s *RoleService) buildListCondition(params *form.RoleList) (strin... method Create (line 59) | func (s *RoleService) Create(params *form.CreateRole) error { method Update (line 72) | func (s *RoleService) Update(params *form.UpdateRole) error { method Delete (line 85) | func (s *RoleService) Delete(id uint) error { method Detail (line 101) | func (s *RoleService) Detail(id uint) (any, error) { method GetRoleMenus (line 111) | func (s *RoleService) GetRoleMenus(roleId uint) ([]string, error) { function NewRoleService (line 26) | func NewRoleService() *RoleService { FILE: internal/service/role/role_mutation.go type roleMutation (line 18) | type roleMutation struct method applyRoleMutation (line 38) | func (s *RoleService) applyRoleMutation(params *roleMutation) error { method generateRoleCode (line 158) | func (s *RoleService) generateRoleCode() string { method buildPidsUpdateExpr (line 170) | func (s *RoleService) buildPidsUpdateExpr(originPids, newPids string) st... method updateRoleMenu (line 190) | func (s *RoleService) updateRoleMenu(roleId uint, menuList []uint, tx ..... method executeDeleteTransaction (line 229) | func (s *RoleService) executeDeleteTransaction(role *model.Role, id uint... FILE: internal/service/role/role_test.go function TestGenerateRoleCodeUsesUniqueDefaultPrefix (line 5) | func TestGenerateRoleCodeUsesUniqueDefaultPrefix(t *testing.T) { FILE: internal/service/storage_config.go constant StorageActiveDriverConfigKey (line 22) | StorageActiveDriverConfigKey = "storage.active_driver" constant StorageConfigConfigKey (line 23) | StorageConfigConfigKey = "storage.config" constant storageConfigManageTab (line 24) | storageConfigManageTab = "storage" type StorageConfigService (line 27) | type StorageConfigService struct method Get (line 38) | func (s *StorageConfigService) Get(maskSensitive bool) (StorageSetting... method Save (line 59) | func (s *StorageConfigService) Save(next StorageSettings) error { method Test (line 102) | func (s *StorageConfigService) Test(ctx context.Context, settings Stor... function NewStorageConfigService (line 29) | func NewStorageConfigService() *StorageConfigService { type StorageSettings (line 33) | type StorageSettings struct function storageSysConfigValue (line 91) | func storageSysConfigValue(key string) (string, error) { function NewActiveStorageDriver (line 125) | func NewActiveStorageDriver(ctx context.Context) (filestorage.Driver, fi... function NewStorageDriverByName (line 134) | func NewStorageDriverByName(ctx context.Context, driverName string) (fil... function buildStorageDriver (line 143) | func buildStorageDriver(ctx context.Context, driverName string, config f... function bucketForDriver (line 165) | func bucketForDriver(driverName string, config filestorage.Config, isPub... function validateStorageDriver (line 179) | func validateStorageDriver(driverName string) error { function upsertStorageSysConfig (line 188) | func upsertStorageSysConfig(tx *gorm.DB, key, value, valueType string, s... function maskStorageSettings (line 214) | func maskStorageSettings(settings *StorageSettings) { function mergeSensitiveStorageConfig (line 221) | func mergeSensitiveStorageConfig(next *filestorage.Config, current files... function applyLocalStorageDefaults (line 236) | func applyLocalStorageDefaults(settings *StorageSettings) { function maskIfNotEmpty (line 256) | func maskIfNotEmpty(value string) string { function shouldKeepSecret (line 263) | func shouldKeepSecret(value string) bool { function firstNonEmpty (line 268) | func firstNonEmpty(values ...string) string { function ensureLocalStorageDirs (line 277) | func ensureLocalStorageDirs() error { FILE: internal/service/sys_base.go type Base (line 6) | type Base struct method SetAdminUserId (line 12) | func (b *Base) SetAdminUserId(userId uint) { method GetAdminUserId (line 17) | func (b *Base) GetAdminUserId() uint { method SetCtx (line 22) | func (b *Base) SetCtx(c *gin.Context) { method GetCtx (line 27) | func (b *Base) GetCtx() *gin.Context { FILE: internal/service/sys_config/audit_diff.go method CreateWithAuditDiff (line 60) | func (s *SysConfigService) CreateWithAuditDiff(params *form.CreateSysCon... method UpdateWithAuditDiff (line 75) | func (s *SysConfigService) UpdateWithAuditDiff(params *form.UpdateSysCon... method DeleteWithAuditDiff (line 94) | func (s *SysConfigService) DeleteWithAuditDiff(id uint) (string, error) { method deleteConfig (line 105) | func (s *SysConfigService) deleteConfig(id uint) error { method snapshotConfigByID (line 129) | func (s *SysConfigService) snapshotConfigByID(id uint) (map[string]any, ... method snapshotConfigByKey (line 137) | func (s *SysConfigService) snapshotConfigByKey(key string) (map[string]a... function snapshotConfig (line 145) | func snapshotConfig(config *model.SysConfig) (map[string]any, error) { function buildSysConfigDiffJSON (line 172) | func buildSysConfigDiffJSON(before, after map[string]any) string { FILE: internal/service/sys_config/audit_request_body.go method MaskedAuditRequestBody (line 13) | func (s *SysConfigService) MaskedAuditRequestBody(id uint, params *form.... method shouldMaskConfigMutationValue (line 45) | func (s *SysConfigService) shouldMaskConfigMutationValue(id uint, params... FILE: internal/service/sys_config/cache.go type ConfigCacheItem (line 9) | type ConfigCacheItem struct function replaceCache (line 25) | func replaceCache(configs []model.SysConfig) { function getCachedValue (line 43) | func getCachedValue(key string) (ConfigCacheItem, bool) { function cacheLoaded (line 50) | func cacheLoaded() bool { FILE: internal/service/sys_config/cache_sync.go constant sysConfigCacheSyncChannel (line 21) | sysConfigCacheSyncChannel = "sys_config:cache:refresh" constant sysConfigCacheSyncTimeout (line 22) | sysConfigCacheSyncTimeout = 3 * time.Second type sysConfigCacheSyncPayload (line 25) | type sysConfigCacheSyncPayload struct function notifySysConfigCacheRefreshed (line 38) | func notifySysConfigCacheRefreshed() { function ensureSysConfigCacheSyncSubscriber (line 65) | func ensureSysConfigCacheSyncSubscriber() { function runSysConfigCacheSyncSubscriber (line 86) | func runSysConfigCacheSyncSubscriber(client *redis.Client) { function decodeSysConfigCacheSyncPayload (line 122) | func decodeSysConfigCacheSyncPayload(raw string) (sysConfigCacheSyncPayl... function buildSysConfigCacheSyncSourceID (line 134) | func buildSysConfigCacheSyncSourceID() string { FILE: internal/service/sys_config/cache_sync_test.go function TestDecodeSysConfigCacheSyncPayload (line 5) | func TestDecodeSysConfigCacheSyncPayload(t *testing.T) { function TestDecodeSysConfigCacheSyncPayloadRejectsInvalidJSON (line 15) | func TestDecodeSysConfigCacheSyncPayloadRejectsInvalidJSON(t *testing.T) { FILE: internal/service/sys_config/runtime_audit.go constant AuditSensitiveFieldsConfigKey (line 12) | AuditSensitiveFieldsConfigKey = "audit.sensitive_fields" method WarmupRuntimeConfigIfAvailable (line 17) | func (s *SysConfigService) WarmupRuntimeConfigIfAvailable() error { function applyRuntimeConfig (line 32) | func applyRuntimeConfig(configs []model.SysConfig) error { function resolveAuditSensitiveFieldsConfig (line 41) | func resolveAuditSensitiveFieldsConfig(configs []model.SysConfig) (sensi... function normalizeSensitiveFieldsConfig (line 64) | func normalizeSensitiveFieldsConfig(config sensitive.SensitiveFieldsConf... function normalizeStringList (line 74) | func normalizeStringList(input []string) []string { FILE: internal/service/sys_config/runtime_audit_test.go function TestResolveAuditSensitiveFieldsConfigReturnsDefaultWhenMissing (line 10) | func TestResolveAuditSensitiveFieldsConfigReturnsDefaultWhenMissing(t *t... function TestResolveAuditSensitiveFieldsConfigNormalizesValues (line 21) | func TestResolveAuditSensitiveFieldsConfigNormalizesValues(t *testing.T) { function TestResolveAuditSensitiveFieldsConfigRejectsNonJSONValueType (line 38) | func TestResolveAuditSensitiveFieldsConfigRejectsNonJSONValueType(t *tes... function TestApplyRuntimeConfigLoadsSensitiveManager (line 51) | func TestApplyRuntimeConfigLoadsSensitiveManager(t *testing.T) { function assertStringSliceEqual (line 77) | func assertStringSliceEqual(t *testing.T, got []string, want []string) { FILE: internal/service/sys_config/sys_config.go type SysConfigService (line 20) | type SysConfigService struct method List (line 30) | func (s *SysConfigService) List(params *form.SysConfigList, locale str... method Detail (line 44) | func (s *SysConfigService) Detail(id uint, locale string) (any, error) { method Create (line 59) | func (s *SysConfigService) Create(params *form.CreateSysConfig) error { method Update (line 64) | func (s *SysConfigService) Update(params *form.UpdateSysConfig) error { method Delete (line 69) | func (s *SysConfigService) Delete(id uint) error { method Value (line 74) | func (s *SysConfigService) Value(key string) (ConfigCacheItem, error) { method PublicValue (line 91) | func (s *SysConfigService) PublicValue(key string) (ConfigCacheItem, e... method RefreshCache (line 103) | func (s *SysConfigService) RefreshCache() error { method refreshCache (line 107) | func (s *SysConfigService) refreshCache(notify bool) error { method applyMutation (line 122) | func (s *SysConfigService) applyMutation(id uint, params *form.SysConf... method buildListCondition (line 202) | func (s *SysConfigService) buildListCondition(params *form.SysConfigLi... method fillLocalizedNames (line 220) | func (s *SysConfigService) fillLocalizedNames(configs []*model.SysConf... method maskSensitiveValues (line 243) | func (s *SysConfigService) maskSensitiveValues(configs []*model.SysCon... constant maskedConfigValue (line 24) | maskedConfigValue = "******" function NewSysConfigService (line 26) | func NewSysConfigService() *SysConfigService { function resolveMutationConfigValue (line 195) | func resolveMutationConfigValue(existing *model.SysConfig, incoming stri... function validateConfigValue (line 254) | func validateConfigValue(valueType, value string) error { function valueOrDefault (line 277) | func valueOrDefault(value *uint8, fallback uint8) uint8 { function defaultVisible (line 284) | func defaultVisible(current uint8, id uint) uint8 { function defaultStatus (line 291) | func defaultStatus(current uint8, id uint) uint8 { FILE: internal/service/sys_config/sys_config_mask_test.go function TestMaskSensitiveValues (line 12) | func TestMaskSensitiveValues(t *testing.T) { function TestSysConfigDetailResourceKeepsSensitiveConfigValue (line 37) | func TestSysConfigDetailResourceKeepsSensitiveConfigValue(t *testing.T) { function TestMaskedAuditRequestBodyMasksSensitiveConfigValue (line 51) | func TestMaskedAuditRequestBodyMasksSensitiveConfigValue(t *testing.T) { function TestMaskedAuditRequestBodySkipsNonSensitiveConfig (line 83) | func TestMaskedAuditRequestBodySkipsNonSensitiveConfig(t *testing.T) { function TestResolveMutationConfigValueKeepsSensitiveValueForMaskedPlaceholder (line 96) | func TestResolveMutationConfigValueKeepsSensitiveValueForMaskedPlacehold... function TestResolveMutationConfigValueUsesIncomingValueWhenChanged (line 110) | func TestResolveMutationConfigValueUsesIncomingValueWhenChanged(t *testi... function TestResolveMutationConfigValuePreservesStringWhitespace (line 124) | func TestResolveMutationConfigValuePreservesStringWhitespace(t *testing.... function TestBuildSysConfigDiffIncludesVisibilityFields (line 132) | func TestBuildSysConfigDiffIncludesVisibilityFields(t *testing.T) { FILE: internal/service/sys_config/typed_value.go constant TaskCronDemoEnabledConfigKey (line 6) | TaskCronDemoEnabledConfigKey = "task.cron_demo_enabled" constant AuthLoginLockEnabledConfigKey (line 8) | AuthLoginLockEnabledConfigKey = "auth.login_lock_enabled" constant AuthLoginMaxFailuresConfigKey (line 9) | AuthLoginMaxFailuresConfigKey = "auth.login_max_failures" constant AuthLoginLockMinutesConfigKey (line 10) | AuthLoginLockMinutesConfigKey = "auth.login_lock_minutes" function BoolValue (line 14) | func BoolValue(key string, fallback bool) bool { function IntValue (line 27) | func IntValue(key string, fallback int) int { FILE: internal/service/sys_config/typed_value_test.go function TestBoolValueFallbackWhenMissing (line 9) | func TestBoolValueFallbackWhenMissing(t *testing.T) { function TestBoolValueFromCache (line 18) | func TestBoolValueFromCache(t *testing.T) { function TestIntValueFromCache (line 29) | func TestIntValueFromCache(t *testing.T) { function TestIntValueFallbackWhenInvalid (line 40) | func TestIntValueFallbackWhenInvalid(t *testing.T) { function setRuntimeCacheForTest (line 51) | func setRuntimeCacheForTest(configs []model.SysConfig) func() { FILE: internal/service/sys_dict/audit_diff.go method CreateTypeWithAuditDiff (line 57) | func (s *SysDictService) CreateTypeWithAuditDiff(params *form.CreateSysD... method UpdateTypeWithAuditDiff (line 72) | func (s *SysDictService) UpdateTypeWithAuditDiff(params *form.UpdateSysD... method DeleteTypeWithAuditDiff (line 91) | func (s *SysDictService) DeleteTypeWithAuditDiff(id uint) (string, error) { method CreateItemWithAuditDiff (line 103) | func (s *SysDictService) CreateItemWithAuditDiff(params *form.CreateSysD... method UpdateItemWithAuditDiff (line 118) | func (s *SysDictService) UpdateItemWithAuditDiff(params *form.UpdateSysD... method DeleteItemWithAuditDiff (line 137) | func (s *SysDictService) DeleteItemWithAuditDiff(id uint) (string, error) { method deleteType (line 148) | func (s *SysDictService) deleteType(id uint) error { method deleteItem (line 176) | func (s *SysDictService) deleteItem(id uint) error { method snapshotTypeByID (line 197) | func (s *SysDictService) snapshotTypeByID(id uint) (map[string]any, erro... method snapshotTypeByTypeCode (line 205) | func (s *SysDictService) snapshotTypeByTypeCode(typeCode string) (map[st... function snapshotDictType (line 213) | func snapshotDictType(dictType *model.SysDictType) (map[string]any, erro... method snapshotItemByID (line 230) | func (s *SysDictService) snapshotItemByID(id uint) (map[string]any, erro... method snapshotItemByTypeValue (line 238) | func (s *SysDictService) snapshotItemByTypeValue(typeCode, value string)... function snapshotDictItem (line 246) | func snapshotDictItem(item *model.SysDictItem) (map[string]any, error) { function buildSysDictTypeDiffJSON (line 267) | func buildSysDictTypeDiffJSON(before, after map[string]any) string { function buildSysDictItemDiffJSON (line 271) | func buildSysDictItemDiffJSON(before, after map[string]any) string { FILE: internal/service/sys_dict/sys_dict.go type SysDictService (line 19) | type SysDictService struct method TypeList (line 27) | func (s *SysDictService) TypeList(params *form.SysDictTypeList, locale... method TypeDetail (line 39) | func (s *SysDictService) TypeDetail(id uint, locale string) (any, erro... method CreateType (line 53) | func (s *SysDictService) CreateType(params *form.CreateSysDictType) er... method UpdateType (line 58) | func (s *SysDictService) UpdateType(params *form.UpdateSysDictType) er... method DeleteType (line 63) | func (s *SysDictService) DeleteType(id uint) error { method ItemList (line 68) | func (s *SysDictService) ItemList(params *form.SysDictItemList, locale... method CreateItem (line 80) | func (s *SysDictService) CreateItem(params *form.CreateSysDictItem) er... method UpdateItem (line 85) | func (s *SysDictService) UpdateItem(params *form.UpdateSysDictItem) er... method DeleteItem (line 90) | func (s *SysDictService) DeleteItem(id uint) error { method Options (line 95) | func (s *SysDictService) Options(typeCode string, locale string) ([]re... method applyTypeMutation (line 111) | func (s *SysDictService) applyTypeMutation(id uint, params *form.SysDi... method applyItemMutation (line 151) | func (s *SysDictService) applyItemMutation(id uint, params *form.SysDi... method ensureTypeExists (line 209) | func (s *SysDictService) ensureTypeExists(typeCode string) error { method ensureEnabledType (line 220) | func (s *SysDictService) ensureEnabledType(typeCode string) error { method buildTypeCondition (line 234) | func (s *SysDictService) buildTypeCondition(params *form.SysDictTypeLi... method buildItemCondition (line 244) | func (s *SysDictService) buildItemCondition(params *form.SysDictItemLi... method fillLocalizedTypeNames (line 255) | func (s *SysDictService) fillLocalizedTypeNames(items []*model.SysDict... method fillLocalizedItemLabels (line 278) | func (s *SysDictService) fillLocalizedItemLabels(items []*model.SysDic... method fillLocalizedItemLabelsFromSlice (line 301) | func (s *SysDictService) fillLocalizedItemLabelsFromSlice(items []mode... function NewSysDictService (line 23) | func NewSysDictService() *SysDictService { function valueOrDefault (line 318) | func valueOrDefault(value *uint8, fallback uint8) uint8 { function defaultStatus (line 325) | func defaultStatus(current uint8, id uint) uint8 { FILE: internal/service/system/init.go constant defaultSort (line 19) | defaultSort = 100 constant defaultIsAuth (line 20) | defaultIsAuth = 0 constant defaultGroupCode (line 21) | defaultGroupCode = "other" function InitApiRoutes (line 25) | func InitApiRoutes() error { function RebuildUserPermissions (line 58) | func RebuildUserPermissions() error { function buildApiData (line 75) | func buildApiData(routes []gin.RouteInfo, apiMap routers.RouteMetaMap) [... function extractHandlerName (line 114) | func extractHandlerName(handler string) string { function saveApiData (line 125) | func saveApiData(apiData []map[string]any) error { function checkDatabaseConnection (line 135) | func checkDatabaseConnection() error { FILE: internal/service/system/migration_runner.go function ResolveMigrationsPath (line 12) | func ResolveMigrationsPath() (string, error) { function NewMigrator (line 17) | func NewMigrator() (*migrate.Migrate, error) { function NewMigratorWithPath (line 22) | func NewMigratorWithPath(path string) (*migrate.Migrate, error) { FILE: internal/service/system/reset.go constant migrationsPathEnvKey (line 23) | migrationsPathEnvKey = "GO_LAYOUT_MIGRATIONS_PATH" type ResetService (line 27) | type ResetService struct method ensureRuntimeDeps (line 52) | func (s *ResetService) ensureRuntimeDeps() { method currentConfig (line 58) | func (s *ResetService) currentConfig() *config.Conf { method ResetSystemData (line 64) | func (s *ResetService) ResetSystemData() error { method ReinitializeSystemData (line 69) | func (s *ResetService) ReinitializeSystemData() error { method cleanupExpiredSystemData (line 83) | func (s *ResetService) cleanupExpiredSystemData() error { method reinitializeSystemData (line 139) | func (s *ResetService) reinitializeSystemData() error { method rollbackMigrations (line 170) | func (s *ResetService) rollbackMigrations() error { method runMigrations (line 194) | func (s *ResetService) runMigrations() error { method createMigrateInstance (line 207) | func (s *ResetService) createMigrateInstance() (*migrate.Migrate, erro... method buildDatabaseURL (line 269) | func (s *ResetService) buildDatabaseURL() string { function NewResetService (line 33) | func NewResetService() *ResetService { type ResetServiceDeps (line 38) | type ResetServiceDeps struct function NewResetServiceWithDeps (line 44) | func NewResetServiceWithDeps(deps ResetServiceDeps) *ResetService { function ResetSystemData (line 74) | func ResetSystemData() error { function ReinitializeSystemData (line 79) | func ReinitializeSystemData() error { function getMigrationsPath (line 224) | func getMigrationsPath() (string, error) { function initAPIRoutes (line 280) | func initAPIRoutes() error { function rebuildUserPermissions (line 284) | func rebuildUserPermissions() error { FILE: internal/service/system/reset_path_test.go function TestGetMigrationsPathPrefersEnvPath (line 9) | func TestGetMigrationsPathPrefersEnvPath(t *testing.T) { FILE: internal/service/system/reset_test.go function TestResetSystemDataReturnsErrorWhenMysqlUnavailable (line 13) | func TestResetSystemDataReturnsErrorWhenMysqlUnavailable(t *testing.T) { function TestBuildDatabaseURLUsesInjectedConfig (line 29) | func TestBuildDatabaseURLUsesInjectedConfig(t *testing.T) { FILE: internal/service/taskcenter/action.go method TriggerTask (line 44) | func (s *TaskCenterService) TriggerTask(ctx context.Context, params *for... method triggerAsyncTask (line 77) | func (s *TaskCenterService) triggerAsyncTask(ctx context.Context, defini... method triggerCronTask (line 141) | func (s *TaskCenterService) triggerCronTask(ctx context.Context, definit... method RetryTask (line 198) | func (s *TaskCenterService) RetryTask(ctx context.Context, runID uint, t... method CancelTask (line 290) | func (s *TaskCenterService) CancelTask(ctx context.Context, runID uint, ... FILE: internal/service/taskcenter/action_test.go type stubPublisher (line 15) | type stubPublisher struct method Enqueue (line 20) | func (s *stubPublisher) Enqueue(ctx context.Context, job queue.Job) (q... type fakeActionRecorder (line 29) | type fakeActionRecorder struct method Enqueue (line 45) | func (f *fakeActionRecorder) Enqueue(ctx context.Context, input RunSta... method Start (line 51) | func (f *fakeActionRecorder) Start(ctx context.Context, input RunStart... method Finish (line 57) | func (f *fakeActionRecorder) Finish(ctx context.Context, run *model.Ta... type stubInspector (line 35) | type stubInspector struct method DeleteTask (line 64) | func (s *stubInspector) DeleteTask(ctx context.Context, queueName, tas... method CancelProcessing (line 73) | func (s *stubInspector) CancelProcessing(ctx context.Context, taskID s... function TestTriggerTaskSuccess (line 79) | func TestTriggerTaskSuccess(t *testing.T) { function TestTriggerTaskReturnsDependencyNotReadyWhenPublisherUnavailable (line 120) | func TestTriggerTaskReturnsDependencyNotReadyWhenPublisherUnavailable(t ... function TestTriggerTaskCronSuccess (line 159) | func TestTriggerTaskCronSuccess(t *testing.T) { function TestTriggerTaskReturnsErrorWhenManualNotAllowed (line 210) | func TestTriggerTaskReturnsErrorWhenManualNotAllowed(t *testing.T) { function TestTriggerTaskHighRiskRequiresConfirm (line 238) | func TestTriggerTaskHighRiskRequiresConfirm(t *testing.T) { function TestTriggerTaskRecordsConfirmAndReason (line 267) | func TestTriggerTaskRecordsConfirmAndReason(t *testing.T) { function TestRetryTaskRespectsCurrentDefinition (line 306) | func TestRetryTaskRespectsCurrentDefinition(t *testing.T) { function TestCancelTaskDeletesPendingTaskAndMarksRunCanceled (line 344) | func TestCancelTaskDeletesPendingTaskAndMarksRunCanceled(t *testing.T) { function TestCancelTaskReturnsDependencyNotReadyWhenInspectorUnavailable (line 384) | func TestCancelTaskReturnsDependencyNotReadyWhenInspectorUnavailable(t *... function setTaskRunLoaderForTest (line 415) | func setTaskRunLoaderForTest(loader func(runID uint) (*model.TaskRun, er... function setTaskDefinitionLoaderForTest (line 423) | func setTaskDefinitionLoaderForTest(loader func(taskCode string) (*model... function setCronExecutorForTest (line 431) | func setCronExecutorForTest(executor func(ctx context.Context, handler s... FILE: internal/service/taskcenter/audit_diff.go type TaskRunAuditSnapshot (line 38) | type TaskRunAuditSnapshot struct function BuildTriggerAuditDiff (line 50) | func BuildTriggerAuditDiff(params *form.TaskTriggerForm, result map[stri... function BuildRetryAuditDiff (line 69) | func BuildRetryAuditDiff(before *TaskRunAuditSnapshot, result map[string... function BuildCancelAuditDiff (line 92) | func BuildCancelAuditDiff(before *TaskRunAuditSnapshot, result map[strin... function payloadKeys (line 124) | func payloadKeys(payload map[string]any) []string { FILE: internal/service/taskcenter/audit_diff_test.go function TestBuildCancelAuditDiffContainsStatusMapping (line 11) | func TestBuildCancelAuditDiffContainsStatusMapping(t *testing.T) { function TestBuildTriggerAuditDiffContainsPayloadKeys (line 63) | func TestBuildTriggerAuditDiffContainsPayloadKeys(t *testing.T) { FILE: internal/service/taskcenter/list_helpers.go type listQuery (line 5) | type listQuery struct method addEq (line 13) | func (q *listQuery) addEq(field string, value any) *listQuery { method addLike (line 18) | func (q *listQuery) addLike(field, value string) *listQuery { method addCreatedAtRange (line 23) | func (q *listQuery) addCreatedAtRange(startTime, endTime string) *list... function newListQuery (line 9) | func newListQuery() *listQuery { FILE: internal/service/taskcenter/query.go type TaskCenterService (line 16) | type TaskCenterService struct method ListTaskDefinitions (line 35) | func (s *TaskCenterService) ListTaskDefinitions(params *form.TaskDefin... method ListTaskRuns (line 77) | func (s *TaskCenterService) ListTaskRuns(params *form.TaskRunList) *re... method TaskRunDetail (line 120) | func (s *TaskCenterService) TaskRunDetail(id uint) (any, error) { method TaskRunEvents (line 132) | func (s *TaskCenterService) TaskRunEvents(runID uint) ([]*resources.Ta... method TaskRunAuditSnapshot (line 173) | func (s *TaskCenterService) TaskRunAuditSnapshot(id uint) (*TaskRunAud... method ListCronTaskStates (line 192) | func (s *TaskCenterService) ListCronTaskStates(params *form.CronTaskSt... type TaskCenterServiceDeps (line 22) | type TaskCenterServiceDeps struct function NewTaskCenterService (line 26) | func NewTaskCenterService() *TaskCenterService { function NewTaskCenterServiceWithDeps (line 30) | func NewTaskCenterServiceWithDeps(deps TaskCenterServiceDeps) *TaskCente... function buildTaskRunEventResources (line 163) | func buildTaskRunEventResources(events []*model.TaskRunEvent) []*resourc... FILE: internal/service/taskcenter/recorder.go constant maxPayloadBytes (line 19) | maxPayloadBytes = 64 * 1024 constant maxErrorBytes (line 20) | maxErrorBytes = 8 * 1024 type RunStart (line 24) | type RunStart struct type RunFinish (line 41) | type RunFinish struct type Recorder (line 51) | type Recorder interface type recorder (line 57) | type recorder struct method Start (line 101) | func (r *recorder) Start(ctx context.Context, input RunStart) (*model.... method Enqueue (line 191) | func (r *recorder) Enqueue(ctx context.Context, input RunStart) (*mode... method Finish (line 231) | func (r *recorder) Finish(ctx context.Context, run *model.TaskRun, inp... method dbWithContext (line 302) | func (r *recorder) dbWithContext(ctx context.Context) (*gorm.DB, error) { function NewRecorder (line 69) | func NewRecorder() Recorder { function NewRecorderWithDB (line 74) | func NewRecorderWithDB(db *gorm.DB) Recorder { function NewRunRecorder (line 79) | func NewRunRecorder() Recorder { function SetRecorderForTesting (line 86) | func SetRecorderForTesting(next Recorder) func() { function resolveFinishEvent (line 289) | func resolveFinishEvent(status string) (eventType string, message string) { function newEvent (line 316) | func newEvent(runID uint, eventType, message string, meta map[string]any... function inputMeta (line 325) | func inputMeta(input RunStart) map[string]any { function finishMeta (line 348) | func finishMeta(input RunFinish) map[string]any { function marshalMeta (line 367) | func marshalMeta(meta map[string]any) string { function upsertCronState (line 378) | func upsertCronState(tx *gorm.DB, run *model.TaskRun, cronSpec string, l... function truncateBytes (line 414) | func truncateBytes(raw []byte, limit int) string { function truncateString (line 424) | func truncateString(raw string, limit int) string { FILE: internal/service/taskcenter/recorder_test.go function TestRecorderStartAndFinishSuccess (line 15) | func TestRecorderStartAndFinishSuccess(t *testing.T) { function TestRecorderFinishFailureUpdatesCronState (line 60) | func TestRecorderFinishFailureUpdatesCronState(t *testing.T) { function TestRecorderFinishCancelWritesOperatorMeta (line 115) | func TestRecorderFinishCancelWritesOperatorMeta(t *testing.T) { function TestTaskRunEventsReturnsCreatedAtAscending (line 167) | func TestTaskRunEventsReturnsCreatedAtAscending(t *testing.T) { function newTaskCenterTestDB (line 191) | func newTaskCenterTestDB(t *testing.T) *gorm.DB { FILE: internal/validator/binding.go constant eofErrorPattern (line 18) | eofErrorPattern = `^multipart:nextpart:eof$` constant typeConvertErrorPattern (line 19) | typeConvertErrorPattern = `parsing .*?: invalid syntax` function ResponseError (line 28) | func ResponseError(c *gin.Context, err error) { function handleValidationError (line 37) | func handleValidationError(c *gin.Context, errs validator.ValidationErro... function translateFieldError (line 47) | func translateFieldError(fieldErr validator.FieldError, primary, fallbac... function handleBindingError (line 61) | func handleBindingError(c *gin.Context, err error) { function isEOFError (line 82) | func isEOFError(errStr string) bool { function isConvertError (line 92) | func isConvertError(errStr string) bool { function CheckParams (line 103) | func CheckParams(c *gin.Context, obj interface{}, bindFunc func(obj inte... function CheckQueryParams (line 112) | func CheckQueryParams(c *gin.Context, obj interface{}) error { function CheckPostParams (line 117) | func CheckPostParams(c *gin.Context, obj interface{}) error { FILE: internal/validator/binding_i18n_test.go type phonePayload (line 17) | type phonePayload struct type validationResult (line 21) | type validationResult struct function TestValidationErrorUsesRequestLocale (line 26) | func TestValidationErrorUsesRequestLocale(t *testing.T) { function TestValidationErrorFallsBackToDefaultTranslator (line 43) | func TestValidationErrorFallsBackToDefaultTranslator(t *testing.T) { function validatePayloadAndReadMessage (line 55) | func validatePayloadAndReadMessage(t *testing.T, locale string) string { function resetValidatorRuntimeForI18nTest (line 83) | func resetValidatorRuntimeForI18nTest(t *testing.T) { FILE: internal/validator/form/admin_user.go type adminUserEditableFields (line 3) | type adminUserEditableFields struct type adminUserOptionalFields (line 10) | type adminUserOptionalFields struct type CreateAdminUser (line 19) | type CreateAdminUser struct function NewCreateAdminUser (line 26) | func NewCreateAdminUser() *CreateAdminUser { type UpdateAdminUser (line 30) | type UpdateAdminUser struct function NewUpdateAdminUser (line 35) | func NewUpdateAdminUser() *UpdateAdminUser { type AdminUserList (line 39) | type AdminUserList struct function NewAdminUserListQuery (line 50) | func NewAdminUserListQuery() *AdminUserList { type UpdateProfile (line 54) | type UpdateProfile struct function NewUpdateProfile (line 63) | func NewUpdateProfile() *UpdateProfile { type BindRole (line 67) | type BindRole struct function NewBindRole (line 73) | func NewBindRole() *BindRole { FILE: internal/validator/form/admin_user_test.go function TestUpdateAdminUserDeptIDsDistinguishEmptyArrayFromAbsentField (line 8) | func TestUpdateAdminUserDeptIDsDistinguishEmptyArrayFromAbsentField(t *t... function TestCreateAdminUserRequiresPassword (line 29) | func TestCreateAdminUserRequiresPassword(t *testing.T) { function TestCreateAdminUserAllowsRequiredFields (line 36) | func TestCreateAdminUserAllowsRequiredFields(t *testing.T) { FILE: internal/validator/form/auth.go type LoginAuth (line 3) | type LoginAuth struct function NewLoginForm (line 11) | func NewLoginForm() *LoginAuth { FILE: internal/validator/form/common.go type Paginate (line 3) | type Paginate struct function NewPaginate (line 9) | func NewPaginate() *Paginate { type ID (line 13) | type ID struct function NewIdForm (line 18) | func NewIdForm() *ID { FILE: internal/validator/form/dept.go type deptPayload (line 3) | type deptPayload struct type CreateDept (line 10) | type CreateDept struct function NewCreateDeptForm (line 14) | func NewCreateDeptForm() *CreateDept { type UpdateDept (line 18) | type UpdateDept struct method GetIDPointer (line 27) | func (f *UpdateDept) GetIDPointer() *uint { function NewUpdateDeptForm (line 23) | func NewUpdateDeptForm() *UpdateDept { type ListDept (line 31) | type ListDept struct function NewDeptListQuery (line 38) | func NewDeptListQuery() *ListDept { type DeptBindRole (line 43) | type DeptBindRole struct function NewDeptBindRole (line 49) | func NewDeptBindRole() *DeptBindRole { FILE: internal/validator/form/file_resource.go type FileResourceList (line 4) | type FileResourceList struct function NewFileResourceListQuery (line 22) | func NewFileResourceListQuery() *FileResourceList { type FileResourceID (line 27) | type FileResourceID struct function NewFileResourceIDForm (line 32) | func NewFileResourceIDForm() *FileResourceID { type FileFolderCreate (line 36) | type FileFolderCreate struct function NewFileFolderCreateForm (line 41) | func NewFileFolderCreateForm() *FileFolderCreate { type FileFolderUpdate (line 45) | type FileFolderUpdate struct function NewFileFolderUpdateForm (line 50) | func NewFileFolderUpdateForm() *FileFolderUpdate { type FileFolderDelete (line 54) | type FileFolderDelete struct function NewFileFolderDeleteForm (line 58) | func NewFileFolderDeleteForm() *FileFolderDelete { type FileFolderMove (line 62) | type FileFolderMove struct function NewFileFolderMoveForm (line 68) | func NewFileFolderMoveForm() *FileFolderMove { type FileMove (line 72) | type FileMove struct function NewFileMoveForm (line 77) | func NewFileMoveForm() *FileMove { type FileLocalUpload (line 81) | type FileLocalUpload struct function NewFileLocalUploadForm (line 87) | func NewFileLocalUploadForm() *FileLocalUpload { type FileUploadCredential (line 91) | type FileUploadCredential struct function NewFileUploadCredentialForm (line 103) | func NewFileUploadCredentialForm() *FileUploadCredential { type FileUploadComplete (line 107) | type FileUploadComplete struct function NewFileUploadCompleteForm (line 129) | func NewFileUploadCompleteForm() *FileUploadComplete { type FileReferenceList (line 133) | type FileReferenceList struct function NewFileReferenceListQuery (line 143) | func NewFileReferenceListQuery() *FileReferenceList { FILE: internal/validator/form/file_resource_test.go function TestFileResourceListRejectsInvalidIsPublic (line 5) | func TestFileResourceListRejectsInvalidIsPublic(t *testing.T) { function TestFileResourceListRejectsInvalidFileType (line 12) | func TestFileResourceListRejectsInvalidFileType(t *testing.T) { function TestFileResourceIDRejectsZero (line 19) | func TestFileResourceIDRejectsZero(t *testing.T) { function TestFileResourceListRejectsInvalidStorageDriver (line 26) | func TestFileResourceListRejectsInvalidStorageDriver(t *testing.T) { function TestFileResourceListAllowsStorageFilters (line 33) | func TestFileResourceListAllowsStorageFilters(t *testing.T) { function TestFileReferenceListAllowsIDAlias (line 40) | func TestFileReferenceListAllowsIDAlias(t *testing.T) { function TestFileMoveRejectsZeroID (line 47) | func TestFileMoveRejectsZeroID(t *testing.T) { function TestFileUploadCompleteRejectsLocalDriver (line 54) | func TestFileUploadCompleteRejectsLocalDriver(t *testing.T) { function TestFileResourceListAllowsFolderFilters (line 61) | func TestFileResourceListAllowsFolderFilters(t *testing.T) { FILE: internal/validator/form/id_array_validation_test.go function bindJSONBody (line 14) | func bindJSONBody(t *testing.T, body string, payload any) error { function TestDeptBindRoleRejectsZeroRoleID (line 28) | func TestDeptBindRoleRejectsZeroRoleID(t *testing.T) { function TestAdminUserBindRoleRejectsZeroRoleID (line 36) | func TestAdminUserBindRoleRejectsZeroRoleID(t *testing.T) { function TestCreateRoleRejectsZeroMenuID (line 44) | func TestCreateRoleRejectsZeroMenuID(t *testing.T) { function TestCreateMenuRejectsZeroAPIID (line 52) | func TestCreateMenuRejectsZeroAPIID(t *testing.T) { function TestIDArraysAllowPositiveValues (line 60) | func TestIDArraysAllowPositiveValues(t *testing.T) { FILE: internal/validator/form/login_log.go type AdminLoginLogList (line 4) | type AdminLoginLogList struct function NewAdminLoginLogListQuery (line 14) | func NewAdminLoginLogListQuery() *AdminLoginLogList { FILE: internal/validator/form/menu.go type menuPayload (line 3) | type menuPayload struct type CreateMenu (line 26) | type CreateMenu struct function NewCreateMenuForm (line 30) | func NewCreateMenuForm() *CreateMenu { type UpdateMenu (line 34) | type UpdateMenu struct method GetIDPointer (line 43) | func (f *UpdateMenu) GetIDPointer() *uint { function NewUpdateMenuForm (line 39) | func NewUpdateMenuForm() *UpdateMenu { type ListMenu (line 47) | type ListMenu struct function NewMenuListQuery (line 55) | func NewMenuListQuery() *ListMenu { FILE: internal/validator/form/menu_test.go function TestListMenuAllowsBinaryEnumFilters (line 13) | func TestListMenuAllowsBinaryEnumFilters(t *testing.T) { function TestListMenuRejectsInvalidIsAuth (line 29) | func TestListMenuRejectsInvalidIsAuth(t *testing.T) { function TestListMenuRejectsInvalidStatus (line 45) | func TestListMenuRejectsInvalidStatus(t *testing.T) { FILE: internal/validator/form/permission.go type apiBasePayload (line 3) | type apiBasePayload struct type CreatePermission (line 10) | type CreatePermission struct function NewCreateApiForm (line 18) | func NewCreateApiForm() *CreatePermission { type UpdatePermission (line 22) | type UpdatePermission struct method GetIDPointer (line 31) | func (f *UpdatePermission) GetIDPointer() *uint { function NewUpdateApiForm (line 27) | func NewUpdateApiForm() *UpdatePermission { type ListPermission (line 35) | type ListPermission struct function NewListApiQuery (line 46) | func NewListApiQuery() *ListPermission { FILE: internal/validator/form/permission_test.go function TestUpdatePermissionAllowsThreeStateIsAuth (line 14) | func TestUpdatePermissionAllowsThreeStateIsAuth(t *testing.T) { function TestListPermissionAllowsThreeStateIsAuth (line 32) | func TestListPermissionAllowsThreeStateIsAuth(t *testing.T) { function TestUpdatePermissionRejectsUnknownIsAuth (line 48) | func TestUpdatePermissionRejectsUnknownIsAuth(t *testing.T) { FILE: internal/validator/form/request_log.go type RequestLogList (line 4) | type RequestLogList struct function NewRequestLogListQuery (line 19) | func NewRequestLogListQuery() *RequestLogList { type RequestLogExport (line 24) | type RequestLogExport struct function NewRequestLogExportQuery (line 38) | func NewRequestLogExportQuery() *RequestLogExport { type RequestLogMaskConfigForm (line 43) | type RequestLogMaskConfigForm struct function NewRequestLogMaskConfigForm (line 51) | func NewRequestLogMaskConfigForm() *RequestLogMaskConfigForm { FILE: internal/validator/form/request_log_test.go function TestRequestLogListAllowsKnownHTTPMethod (line 13) | func TestRequestLogListAllowsKnownHTTPMethod(t *testing.T) { function TestRequestLogListRejectsUnknownHTTPMethod (line 29) | func TestRequestLogListRejectsUnknownHTTPMethod(t *testing.T) { FILE: internal/validator/form/role.go type RoleList (line 3) | type RoleList struct function NewRoleListQuery (line 11) | func NewRoleListQuery() *RoleList { type rolePayload (line 15) | type rolePayload struct type CreateRole (line 25) | type CreateRole struct function NewCreateRoleForm (line 29) | func NewCreateRoleForm() *CreateRole { type UpdateRole (line 33) | type UpdateRole struct method GetIDPointer (line 42) | func (f *UpdateRole) GetIDPointer() *uint { function NewUpdateRoleForm (line 38) | func NewUpdateRoleForm() *UpdateRole { FILE: internal/validator/form/role_test.go function TestRoleStatusUsesBinaryEnum (line 5) | func TestRoleStatusUsesBinaryEnum(t *testing.T) { FILE: internal/validator/form/session.go type SessionList (line 4) | type SessionList struct function NewSessionListQuery (line 14) | func NewSessionListQuery() *SessionList { type SessionRevoke (line 19) | type SessionRevoke struct function NewSessionRevokeForm (line 24) | func NewSessionRevokeForm() *SessionRevoke { FILE: internal/validator/form/session_test.go function TestSessionListRejectsInvalidIsRevoked (line 5) | func TestSessionListRejectsInvalidIsRevoked(t *testing.T) { function TestSessionRevokeRejectsZeroID (line 12) | func TestSessionRevokeRejectsZeroID(t *testing.T) { FILE: internal/validator/form/storage_config.go type StorageConfigPayload (line 5) | type StorageConfigPayload struct function NewStorageConfigPayload (line 10) | func NewStorageConfigPayload() *StorageConfigPayload { FILE: internal/validator/form/storage_config_test.go function TestStorageConfigRejectsInvalidDriver (line 5) | func TestStorageConfigRejectsInvalidDriver(t *testing.T) { function TestStorageConfigAllowsLocalDriver (line 12) | func TestStorageConfigAllowsLocalDriver(t *testing.T) { FILE: internal/validator/form/sys_config.go type SysConfigList (line 3) | type SysConfigList struct type SysConfigPayload (line 15) | type SysConfigPayload struct type CreateSysConfig (line 29) | type CreateSysConfig struct type UpdateSysConfig (line 33) | type UpdateSysConfig struct type SysConfigKeyQuery (line 38) | type SysConfigKeyQuery struct function NewSysConfigListQuery (line 42) | func NewSysConfigListQuery() *SysConfigList { function NewCreateSysConfigForm (line 46) | func NewCreateSysConfigForm() *CreateSysConfig { function NewUpdateSysConfigForm (line 50) | func NewUpdateSysConfigForm() *UpdateSysConfig { function NewSysConfigKeyQuery (line 54) | func NewSysConfigKeyQuery() *SysConfigKeyQuery { FILE: internal/validator/form/sys_config_test.go function TestCreateSysConfigAllowsValidValueTypes (line 5) | func TestCreateSysConfigAllowsValidValueTypes(t *testing.T) { function TestCreateSysConfigRejectsInvalidValueType (line 18) | func TestCreateSysConfigRejectsInvalidValueType(t *testing.T) { function TestSysConfigListRejectsInvalidStatus (line 25) | func TestSysConfigListRejectsInvalidStatus(t *testing.T) { FILE: internal/validator/form/sys_dict.go type SysDictTypeList (line 3) | type SysDictTypeList struct type SysDictTypePayload (line 10) | type SysDictTypePayload struct type CreateSysDictType (line 18) | type CreateSysDictType struct type UpdateSysDictType (line 22) | type UpdateSysDictType struct type SysDictItemList (line 27) | type SysDictItemList struct type SysDictItemPayload (line 35) | type SysDictItemPayload struct type CreateSysDictItem (line 47) | type CreateSysDictItem struct type UpdateSysDictItem (line 51) | type UpdateSysDictItem struct type SysDictOptionsQuery (line 56) | type SysDictOptionsQuery struct function NewSysDictTypeListQuery (line 60) | func NewSysDictTypeListQuery() *SysDictTypeList { function NewCreateSysDictTypeForm (line 64) | func NewCreateSysDictTypeForm() *CreateSysDictType { function NewUpdateSysDictTypeForm (line 68) | func NewUpdateSysDictTypeForm() *UpdateSysDictType { function NewSysDictItemListQuery (line 72) | func NewSysDictItemListQuery() *SysDictItemList { function NewCreateSysDictItemForm (line 76) | func NewCreateSysDictItemForm() *CreateSysDictItem { function NewUpdateSysDictItemForm (line 80) | func NewUpdateSysDictItemForm() *UpdateSysDictItem { function NewSysDictOptionsQuery (line 84) | func NewSysDictOptionsQuery() *SysDictOptionsQuery { FILE: internal/validator/form/sys_dict_test.go function TestCreateSysDictTypeRejectsInvalidStatus (line 5) | func TestCreateSysDictTypeRejectsInvalidStatus(t *testing.T) { function TestCreateSysDictItemAllowsValidBinaryFlags (line 12) | func TestCreateSysDictItemAllowsValidBinaryFlags(t *testing.T) { function TestCreateSysDictItemRejectsInvalidDefaultFlag (line 19) | func TestCreateSysDictItemRejectsInvalidDefaultFlag(t *testing.T) { FILE: internal/validator/form/task_center.go type TaskDefinitionList (line 4) | type TaskDefinitionList struct function NewTaskDefinitionListQuery (line 15) | func NewTaskDefinitionListQuery() *TaskDefinitionList { type TaskRunList (line 20) | type TaskRunList struct function NewTaskRunListQuery (line 31) | func NewTaskRunListQuery() *TaskRunList { type TaskRunEvents (line 36) | type TaskRunEvents struct function NewTaskRunEventsQuery (line 40) | func NewTaskRunEventsQuery() *TaskRunEvents { type CronTaskStateList (line 45) | type CronTaskStateList struct function NewCronTaskStateListQuery (line 51) | func NewCronTaskStateListQuery() *CronTaskStateList { type TaskTriggerForm (line 56) | type TaskTriggerForm struct function NewTaskTriggerForm (line 65) | func NewTaskTriggerForm() *TaskTriggerForm { type TaskRetryForm (line 70) | type TaskRetryForm struct function NewTaskRetryForm (line 74) | func NewTaskRetryForm() *TaskRetryForm { type TaskCancelForm (line 79) | type TaskCancelForm struct function NewTaskCancelForm (line 84) | func NewTaskCancelForm() *TaskCancelForm { FILE: internal/validator/form/task_center_test.go function TestTaskRunListRejectsInvalidStatus (line 5) | func TestTaskRunListRejectsInvalidStatus(t *testing.T) { function TestTaskRunListAllowsKnownStatus (line 12) | func TestTaskRunListAllowsKnownStatus(t *testing.T) { function TestCronTaskStateListRejectsInvalidLastStatus (line 19) | func TestCronTaskStateListRejectsInvalidLastStatus(t *testing.T) { function TestCronTaskStateListAllowsKnownLastStatus (line 26) | func TestCronTaskStateListAllowsKnownLastStatus(t *testing.T) { FILE: internal/validator/rules.go function RegexpValidator (line 19) | func RegexpValidator(fl validator.FieldLevel) bool { function initCustomRules (line 38) | func initCustomRules(validate *validator.Validate) error { function apiAuthModeValidator (line 63) | func apiAuthModeValidator(fl validator.FieldLevel) bool { function requiredIf (line 85) | func requiredIf(fl validator.FieldLevel) bool { FILE: internal/validator/runtime.go type validatorRuntimeState (line 21) | type validatorRuntimeState struct method initOnce (line 44) | func (s *validatorRuntimeState) initOnce(locale string) error { method init (line 51) | func (s *validatorRuntimeState) init(locale string) error { method ensureRules (line 72) | func (s *validatorRuntimeState) ensureRules() error { method ensureTagNameFunc (line 83) | func (s *validatorRuntimeState) ensureTagNameFunc() { method translatorForRequest (line 115) | func (s *validatorRuntimeState) translatorForRequest(c *gin.Context) u... method fallbackTranslator (line 141) | func (s *validatorRuntimeState) fallbackTranslator(primary ut.Translat... function newValidatorRuntime (line 31) | func newValidatorRuntime() *validatorRuntimeState { function InitValidatorTrans (line 36) | func InitValidatorTrans(locale string) error { function getValidatorEngine (line 91) | func getValidatorEngine() (*validator.Validate, bool) { function registerTagNameFunc (line 100) | func registerTagNameFunc(validate *validator.Validate) { FILE: internal/validator/translation.go function initTranslators (line 18) | func initTranslators(validate *validator.Validate) (map[string]ut.Transl... function registerLocaleTranslations (line 38) | func registerLocaleTranslations(validate *validator.Validate, trans ut.T... type translation (line 58) | type translation struct function customRegisTranslation (line 66) | func customRegisTranslation(validate *validator.Validate, trans ut.Trans... function localeTranslations (line 70) | func localeTranslations(locale string) []translation { function registerTranslation (line 87) | func registerTranslation(validate *validator.Validate, trans ut.Translat... function registrationFunc (line 106) | func registrationFunc(tag string, translation string, override bool) val... function translateFunc (line 115) | func translateFunc(ut ut.Translator, fe validator.FieldError) string { function normalizeValidatorLocale (line 124) | func normalizeValidatorLocale(locale string) string { FILE: internal/validator/validator_test.go function TestInitValidatorTransCanRetryAfterFailure (line 8) | func TestInitValidatorTransCanRetryAfterFailure(t *testing.T) { function resetValidatorRuntimeForTest (line 29) | func resetValidatorRuntimeForTest() { FILE: main.go function main (line 7) | func main() { FILE: pkg/convert/convert.go function GetString (line 5) | func GetString(val interface{}) (s string) { function GetBool (line 11) | func GetBool(val interface{}) (b bool) { function GetInt (line 17) | func GetInt(val interface{}) (i int) { function GetInt64 (line 23) | func GetInt64(val interface{}) (i64 int64) { function GetUint (line 29) | func GetUint(val interface{}) (ui uint) { function GetUint8 (line 35) | func GetUint8(val interface{}) (ui uint8) { function GetUint64 (line 41) | func GetUint64(val interface{}) (ui64 uint64) { function GetFloat64 (line 47) | func GetFloat64(val interface{}) (f64 float64) { function GetTime (line 53) | func GetTime(val interface{}) (t time.Time) { function GetDuration (line 59) | func GetDuration(val interface{}) (d time.Duration) { FILE: pkg/utils/captcha/captcha.go type Item (line 15) | type Item struct type memoryStore (line 22) | type memoryStore struct method Set (line 36) | func (m *memoryStore) Set(id, answer string, expiration time.Duration) { method Get (line 48) | func (m *memoryStore) Get(id string) (string, bool) { method Delete (line 55) | func (m *memoryStore) Delete(id string) { constant captchaRedisKeyPrefix (line 63) | captchaRedisKeyPrefix = "captcha:" constant captchaExpiration (line 65) | captchaExpiration = 5 * time.Minute constant captchaLength (line 67) | captchaLength = 4 constant captchaRedisTimeout (line 69) | captchaRedisTimeout = 2 * time.Second constant captchaCharset (line 72) | captchaCharset = base64Captcha.TxtAlphabet + base64Captcha.TxtNumbers function withRedisTimeout (line 75) | func withRedisTimeout() (context.Context, context.CancelFunc) { function initCaptcha (line 80) | func initCaptcha() { function setCaptchaAnswer (line 106) | func setCaptchaAnswer(id, answer string) { function getCaptchaAnswer (line 124) | func getCaptchaAnswer(id string) (string, bool) { function deleteCaptchaAnswer (line 143) | func deleteCaptchaAnswer(id string) { function Generate (line 163) | func Generate() (item *Item, err error) { function Verify (line 202) | func Verify(id, value string) bool { function equalIgnoreCase (line 236) | func equalIgnoreCase(s1, s2 string) bool { FILE: pkg/utils/crypto/crypto.go function Encrypt (line 10) | func Encrypt(key, plaintext string, algorithm ...Algorithm) (string, err... function Decrypt (line 38) | func Decrypt(key, ciphertext string, algorithm ...Algorithm) (string, er... FILE: pkg/utils/crypto/crypto_aes.go function AESEncrypt (line 17) | func AESEncrypt(key, plaintext string) (string, error) { function AESDecrypt (line 58) | func AESDecrypt(key, ciphertext string) (string, error) { function deriveKey256 (line 107) | func deriveKey256(key string) []byte { FILE: pkg/utils/crypto/types.go type Algorithm (line 4) | type Algorithm method String (line 12) | func (a Algorithm) String() string { method IsValid (line 17) | func (a Algorithm) IsValid() bool { constant AlgorithmAES256GCM (line 8) | AlgorithmAES256GCM Algorithm = "aes-256-gcm" FILE: pkg/utils/helpers.go constant passwordHashCost (line 9) | passwordHashCost = 12 function MaskSensitiveInfo (line 16) | func MaskSensitiveInfo(s string, start int, maskNumber int, maskChars ..... function PasswordHash (line 41) | func PasswordHash(pwd string) (string, error) { function ComparePasswords (line 47) | func ComparePasswords(oldPassword, password string) bool { function SliceToAny (line 55) | func SliceToAny[T any](data []T) []any { FILE: pkg/utils/helpers_test.go function TestMaskSensitiveInfo (line 9) | func TestMaskSensitiveInfo(t *testing.T) { function TestPasswordHashUsesStrongerCost (line 45) | func TestPasswordHashUsesStrongerCost(t *testing.T) { FILE: pkg/utils/http.go type HttpRequest (line 12) | type HttpRequest struct method JsonRequest (line 19) | func (hr *HttpRequest) JsonRequest(method string, url string, body io.... method GetRequest (line 35) | func (hr *HttpRequest) GetRequest(url string, params *url.Values, args... method Request (line 45) | func (hr *HttpRequest) Request(method string, url string, body io.Read... method ParseJson (line 65) | func (hr *HttpRequest) ParseJson(payload any) error { method ParseBytes (line 74) | func (hr *HttpRequest) ParseBytes() (body []byte, err error) { method Raw (line 93) | func (hr *HttpRequest) Raw() (string, error) { FILE: pkg/utils/http_test.go type roundTripFunc (line 11) | type roundTripFunc method RoundTrip (line 13) | func (f roundTripFunc) RoundTrip(req *http.Request) (*http.Response, e... function TestGetRequest (line 17) | func TestGetRequest(t *testing.T) { function TestJsonRequestSetsContentType (line 46) | func TestJsonRequestSetsContentType(t *testing.T) { FILE: pkg/utils/upload.go type FileInfo (line 20) | type FileInfo struct constant fileHeaderSampleSize (line 35) | fileHeaderSampleSize = 261 constant uploadBufferSize (line 36) | uploadBufferSize = 32 * 1024 function UploadFile (line 42) | func UploadFile(fileHeader *multipart.FileHeader, path ...string) (fileI... function SaveUploadedFileWithUUID (line 56) | func SaveUploadedFileWithUUID(fileHeader *multipart.FileHeader, uploadDi... function SaveUploadedImageWithUUID (line 61) | func SaveUploadedImageWithUUID(fileHeader *multipart.FileHeader, uploadD... function EnsureAbsPath (line 66) | func EnsureAbsPath(path string, baseDir ...string) (string, error) { function GetFileSha256AndSizeFromHeader (line 86) | func GetFileSha256AndSizeFromHeader(file io.ReadSeeker) (string, int64, ... function IsAllowedImage (line 105) | func IsAllowedImage(file io.ReadSeeker) (string, bool, error) { function getMimeTypeByExt (line 126) | func getMimeTypeByExt(ext string) string { function resolveUploadDir (line 147) | func resolveUploadDir(uploadSubDir string) (string, error) { function ensureUploadDir (line 166) | func ensureUploadDir(uploadDir string) error { function saveUploadedFile (line 173) | func saveUploadedFile(fileHeader *multipart.FileHeader, uploadDir string... function copyUploadedContent (line 253) | func copyUploadedContent(dst io.Writer, src io.Reader) ([]byte, int64, s... function appendHeaderSample (line 283) | func appendHeaderSample(header []byte, chunk []byte) []byte { function writeUploadChunk (line 294) | func writeUploadChunk(dst io.Writer, chunk []byte) (int, error) { function shouldStopUploadRead (line 302) | func shouldStopUploadRead(err error) (bool, error) { function detectMimeType (line 312) | func detectMimeType(header []byte) (string, string, error) { function detectAllowedImage (line 326) | func detectAllowedImage(header []byte) (string, bool, string, error) { FILE: pkg/utils/upload_test.go function TestIsAllowedImageHandlesShortNonImageFile (line 10) | func TestIsAllowedImageHandlesShortNonImageFile(t *testing.T) { function TestAppendHeaderSampleRespectsLimit (line 25) | func TestAppendHeaderSampleRespectsLimit(t *testing.T) { function TestShouldStopUploadRead (line 40) | func TestShouldStopUploadRead(t *testing.T) { FILE: pkg/utils/utils.go function If (line 14) | func If[T any](condition bool, trueVal, falseVal T) T { function WouldCauseCycle (line 22) | func WouldCauseCycle(id, parentPid uint, parentPids string) bool { function GetRunPath (line 41) | func GetRunPath() string { function GetFileDirectoryToCaller (line 50) | func GetFileDirectoryToCaller(opts ...int) (directory string, ok bool) { function GetCurrentAbPathByExecutable (line 65) | func GetCurrentAbPathByExecutable() (string, error) { function GetCurrentPath (line 90) | func GetCurrentPath() (dir string, err error) { function GetDefaultPath (line 95) | func GetDefaultPath() (dir string, err error) { function MD5 (line 109) | func MD5(str string) string { FILE: pkg/utils/utils_test.go function TestGetRunPath (line 7) | func TestGetRunPath(t *testing.T) { function TestGetCurrentPath (line 14) | func TestGetCurrentPath(t *testing.T) { function TestGetCurrentAbPathByExecutable (line 21) | func TestGetCurrentAbPathByExecutable(t *testing.T) { function TestGetCurrentFileDirectory (line 28) | func TestGetCurrentFileDirectory(t *testing.T) { function TestIf (line 40) | func TestIf(t *testing.T) { FILE: tests/admin_test/admin_test.go function TestMain (line 31) | func TestMain(m *testing.M) { function postRequest (line 65) | func postRequest(route string, body *string) *httptest.ResponseRecorder { function anonymousPostRequest (line 69) | func anonymousPostRequest(route string, body *string) *httptest.Response... function getRequest (line 73) | func getRequest(route string, queryParams *url.Values) *httptest.Respons... function anonymousGetRequest (line 81) | func anonymousGetRequest(route string, queryParams *url.Values) *httptes... function performRequest (line 89) | func performRequest(method, route string, body *string, authHeader strin... function decodeResult (line 109) | func decodeResult(t *testing.T, recorder *httptest.ResponseRecorder) *re... function requireMySQL (line 120) | func requireMySQL(t *testing.T) { FILE: tests/admin_test/admin_user_test.go function TestGetAdminUserRequiresLogin (line 17) | func TestGetAdminUserRequiresLogin(t *testing.T) { function TestGetCurrentAdminUserWithAuthorization (line 27) | func TestGetCurrentAdminUserWithAuthorization(t *testing.T) { function TestGetUserMenuInfoWithAuthorization (line 41) | func TestGetUserMenuInfoWithAuthorization(t *testing.T) { function TestUpdateProfileInvalidEmail (line 51) | func TestUpdateProfileInvalidEmail(t *testing.T) { function TestAdminUserListWithAuthorization (line 62) | func TestAdminUserListWithAuthorization(t *testing.T) { function TestAdminUserListRequiresLogin (line 72) | func TestAdminUserListRequiresLogin(t *testing.T) { function TestAdminUserProtectedGetRoutesRequireLogin (line 80) | func TestAdminUserProtectedGetRoutesRequireLogin(t *testing.T) { function TestAdminUserProtectedPostRoutesRequireLogin (line 102) | func TestAdminUserProtectedPostRoutesRequireLogin(t *testing.T) { function TestAdminUserWriteFlow (line 126) | func TestAdminUserWriteFlow(t *testing.T) { FILE: tests/admin_test/auth_routes_test.go function parseTestToken (line 20) | func parseTestToken(accessToken string) (*token.AdminCustomClaims, error) { function TestLoginCaptcha (line 35) | func TestLoginCaptcha(t *testing.T) { function TestLoginInvalidCaptcha (line 42) | func TestLoginInvalidCaptcha(t *testing.T) { function TestCheckTokenWithAuthorization (line 59) | func TestCheckTokenWithAuthorization(t *testing.T) { function TestProtectedAuthRoutesRequireLogin (line 72) | func TestProtectedAuthRoutesRequireLogin(t *testing.T) { function TestLogoutUpdatesDatabase (line 94) | func TestLogoutUpdatesDatabase(t *testing.T) { FILE: tests/admin_test/common_routes_test.go function TestCommonUploadRequiresLogin (line 12) | func TestCommonUploadRequiresLogin(t *testing.T) { FILE: tests/admin_test/department_test.go function TestDepartmentListWithAuthorization (line 15) | func TestDepartmentListWithAuthorization(t *testing.T) { function TestDepartmentListRequiresLogin (line 25) | func TestDepartmentListRequiresLogin(t *testing.T) { function TestDepartmentProtectedRoutesRequireLogin (line 33) | func TestDepartmentProtectedRoutesRequireLogin(t *testing.T) { function TestDepartmentWriteFlow (line 62) | func TestDepartmentWriteFlow(t *testing.T) { FILE: tests/admin_test/log_routes_test.go function TestLogListRoutesWithAuthorization (line 13) | func TestLogListRoutesWithAuthorization(t *testing.T) { function TestRequestLogExportRouteWithAuthorization (line 44) | func TestRequestLogExportRouteWithAuthorization(t *testing.T) { function TestRequestLogMaskConfigRoutesWithAuthorization (line 53) | func TestRequestLogMaskConfigRoutesWithAuthorization(t *testing.T) { function TestLogRoutesRequireLogin (line 66) | func TestLogRoutesRequireLogin(t *testing.T) { FILE: tests/admin_test/menu_test.go function TestMenuListWithAuthorization (line 15) | func TestMenuListWithAuthorization(t *testing.T) { function TestMenuListRequiresLogin (line 32) | func TestMenuListRequiresLogin(t *testing.T) { function TestMenuProtectedRoutesRequireLogin (line 40) | func TestMenuProtectedRoutesRequireLogin(t *testing.T) { function TestMenuWriteFlow (line 69) | func TestMenuWriteFlow(t *testing.T) { function firstMenuNode (line 151) | func firstMenuNode(data any) map[string]any { FILE: tests/admin_test/permission_routes_test.go function TestPermissionEditRequiresLogin (line 13) | func TestPermissionEditRequiresLogin(t *testing.T) { function TestPermissionListRequiresLogin (line 22) | func TestPermissionListRequiresLogin(t *testing.T) { function TestPermissionListWithAuthorization (line 37) | func TestPermissionListWithAuthorization(t *testing.T) { function TestPermissionUpdateValidationWithAuthorization (line 52) | func TestPermissionUpdateValidationWithAuthorization(t *testing.T) { FILE: tests/admin_test/public_routes_test.go function TestPublicDemoRoute (line 12) | func TestPublicDemoRoute(t *testing.T) { function TestPublicFileRouteWithoutAuthorization (line 20) | func TestPublicFileRouteWithoutAuthorization(t *testing.T) { FILE: tests/admin_test/role_test.go function TestRoleListWithAuthorization (line 15) | func TestRoleListWithAuthorization(t *testing.T) { function TestRoleListRequiresLogin (line 25) | func TestRoleListRequiresLogin(t *testing.T) { function TestRoleProtectedRoutesRequireLogin (line 33) | func TestRoleProtectedRoutesRequireLogin(t *testing.T) { function TestRoleWriteFlow (line 61) | func TestRoleWriteFlow(t *testing.T) { FILE: tests/admin_test/system_routes_test.go function TestSystemConfigWriteFlow (line 16) | func TestSystemConfigWriteFlow(t *testing.T) { function TestSystemConfigVisibilityTabsAndHiddenSaveFlags (line 133) | func TestSystemConfigVisibilityTabsAndHiddenSaveFlags(t *testing.T) { function TestSystemDictWriteFlow (line 223) | func TestSystemDictWriteFlow(t *testing.T) { function TestSystemConfigProtectedRoutesRequireLogin (line 368) | func TestSystemConfigProtectedRoutesRequireLogin(t *testing.T) { function TestSystemDictProtectedRoutesRequireLogin (line 410) | func TestSystemDictProtectedRoutesRequireLogin(t *testing.T) { function collectionContainsFieldValue (line 455) | func collectionContainsFieldValue(collectionData any, field string, targ... function plainListContainsFieldValue (line 476) | func plainListContainsFieldValue(data any, field string, target any) bool { function requireSystemModuleTables (line 506) | func requireSystemModuleTables(t *testing.T) { FILE: tests/admin_test/task_routes_test.go function TestTaskCenterListRoutesWithAuthorization (line 13) | func TestTaskCenterListRoutesWithAuthorization(t *testing.T) { function TestTaskCenterRunDetailNotFound (line 48) | func TestTaskCenterRunDetailNotFound(t *testing.T) { function TestTaskCenterRoutesRequireLogin (line 57) | func TestTaskCenterRoutesRequireLogin(t *testing.T) { function TestTaskCenterOperateRouteValidation (line 110) | func TestTaskCenterOperateRouteValidation(t *testing.T) { FILE: tests/admin_test/test_helpers_test.go constant testResourcePrefix (line 15) | testResourcePrefix = "test-auto-" function requireWritableDB (line 18) | func requireWritableDB(t *testing.T) { function uniqueTestName (line 27) | func uniqueTestName(kind string) string { function containsPrefix (line 32) | func containsPrefix(s string) bool { function uniqueCompactTestName (line 37) | func uniqueCompactTestName(kind string) string { function findAdminUserByUsername (line 42) | func findAdminUserByUsername(t *testing.T, username string) *model.Admin... function findRoleByName (line 56) | func findRoleByName(t *testing.T, name string) *model.Role { function findDepartmentByName (line 70) | func findDepartmentByName(t *testing.T, name string) *model.Department { function findMenuByTitle (line 84) | func findMenuByTitle(t *testing.T, title string) *model.Menu { function cleanupAdminUsers (line 102) | func cleanupAdminUsers(t *testing.T, usernamePrefix string) { function cleanupRoles (line 112) | func cleanupRoles(t *testing.T, namePrefix string) { function cleanupDepartments (line 138) | func cleanupDepartments(t *testing.T, namePrefix string) { function cleanupMenus (line 163) | func cleanupMenus(t *testing.T, titlePrefix string) { function firstActiveRoleID (line 187) | func firstActiveRoleID(t *testing.T) uint { function firstActiveMenuID (line 204) | func firstActiveMenuID(t *testing.T) uint { function createFallbackRole (line 221) | func createFallbackRole(t *testing.T) uint { function createFallbackMenu (line 242) | func createFallbackMenu(t *testing.T) uint { function findSysConfigByKey (line 275) | func findSysConfigByKey(t *testing.T, key string) *model.SysConfig { function findSysDictTypeByCode (line 289) | func findSysDictTypeByCode(t *testing.T, typeCode string) *model.SysDict... function findSysDictItemByTypeAndValue (line 303) | func findSysDictItemByTypeAndValue(t *testing.T, typeCode, value string)... function cleanupSysConfigsByKeyPrefix (line 317) | func cleanupSysConfigsByKeyPrefix(t *testing.T, keyPrefix string) { function cleanupSysDictByTypeCodePrefix (line 339) | func cleanupSysDictByTypeCodePrefix(t *testing.T, typeCodePrefix string) { FILE: tests/ping_test.go function TestPingRoute (line 9) | func TestPingRoute(t *testing.T) { FILE: tests/test.go function SetupRouter (line 23) | func SetupRouter() (*gin.Engine, error) { function testConfigPath (line 64) | func testConfigPath() (string, error) { function projectRootPath (line 92) | func projectRootPath() (string, error) { function isProjectConfigUsable (line 101) | func isProjectConfigUsable(configPath string) bool { function canDial (line 124) | func canDial(host string, port int) bool {