{"record":{"id":"ac5d159e166c4e6e","repo":"Tencent/WeKnora","slug":"folder-name-is-required","errorCode":null,"errorMessage":"folder name is required","messagePattern":"folder name is required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/service/wiki_page.go","lineNumber":1491,"sourceCode":"\tfor _, f := range all {\n\t\tsum := direct[f.ID]\n\t\tprefix := f.Path + \"/\"\n\t\tfor _, g := range all {\n\t\t\tif g.ID != f.ID && strings.HasPrefix(g.Path, prefix) {\n\t\t\t\tsum += direct[g.ID]\n\t\t\t}\n\t\t}\n\t\tres[f.ID] = sum\n\t}\n\treturn res\n}\n\n// validateFolderName trims and rejects blank names or names carrying directory\n// separators (a folder name is a single tree level).\nfunc validateFolderName(name string) (string, error) {\n\tname = strings.TrimSpace(name)\n\tif name == \"\" {\n\t\treturn \"\", errors.New(\"folder name is required\")\n\t}\n\tif strings.ContainsAny(name, \"/｜|／\") {\n\t\treturn \"\", fmt.Errorf(\"folder name %q must not contain a path separator\", name)\n\t}\n\treturn name, nil\n}\n\n// CreateFolder creates a new empty folder under parentID.\nfunc (s *wikiPageService) CreateFolder(\n\tctx context.Context, kbID string, tenantID uint64, parentID string, name string,\n) (*types.WikiFolder, error) {\n\tname, err := validateFolderName(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tparentPath := \"\"\n\tdepth := 1","sourceCodeStart":1473,"sourceCodeEnd":1509,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/service/wiki_page.go#L1473-L1509","documentation":"Raised in validateFolderName (used by CreateFolder and RenameOrMoveFolder) when the trimmed folder name is empty. A folder name must be a single tree level — blank names and later also separator-carrying names are rejected. Input-validation helper.","triggerScenarios":"Thrown at internal/application/service/wiki_page.go:1491 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty folder name","Fix client-side validation to trim and reject blank names before submission"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}