Go: add audit log framework (#17129)

### Summary

Prepare for audit log

---------

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-07-20 23:50:45 +08:00
committed by GitHub
parent f45f03a016
commit 3670b047f0
11 changed files with 229 additions and 6 deletions

View File

@@ -3191,10 +3191,12 @@ func (p *Parser) parseAdminListUserCommand() (*Command, error) {
case TokenProviders:
p.nextToken()
cmd = NewCommand("admin_list_user_providers")
case TokenLogs:
return p.parseAdminListUserLogs(userName)
case TokenDefault:
return p.parseAdminListUserDefaultModels(userName)
default:
return nil, fmt.Errorf("expected INGESTION or DATASETS or AGENTS or CHATS or SEARCHES or MODELS or FILES or KEYS after USER")
return nil, fmt.Errorf("expected INGESTION or DATASETS or AGENTS or CHATS or SEARCHES or MODELS or FILES or KEYS or LOGS after USER")
}
// Semicolon is optional
@@ -3299,6 +3301,31 @@ func (p *Parser) parseAdminListUserDefaultModels(userName string) (*Command, err
return cmd, nil
}
// LIST USER 'user_name' LOGS;
// LIST USER 'user_name' LOGS 10;
func (p *Parser) parseAdminListUserLogs(userName string) (*Command, error) {
p.nextToken() // consume LOGS
dayCount := 7
var err error
cmd := NewCommand("admin_list_user_operation_logs")
if p.curToken.Type == TokenNumber {
dayCount, err = p.parseNumber()
if err != nil {
return nil, err
}
p.nextToken()
}
cmd.Params["user_name"] = userName
cmd.Params["days"] = dayCount
if p.curToken.Type == TokenSemicolon {
p.nextToken()
}
return cmd, nil
}
// STOP USER 'user@example.com' INGESTION TASKS 'created';
func (p *Parser) parseAdminStopUserCommand() (*Command, error) {
p.nextToken() // consume USER