mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-19 22:21:04 +08:00
Update go cli (#13717)
### What problem does this PR solve? Go cli ### Type of change - [x] New Feature (non-breaking change which adds functionality) --------- Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
@@ -102,6 +102,8 @@ func (p *Parser) parseSQLCommand() (*Command, error) {
|
||||
return p.parseRevokeCommand()
|
||||
case TokenSet:
|
||||
return p.parseSetCommand()
|
||||
case TokenUnset:
|
||||
return p.parseUnsetCommand()
|
||||
case TokenReset:
|
||||
return p.parseResetCommand()
|
||||
case TokenGenerate:
|
||||
@@ -189,18 +191,20 @@ func (p *Parser) parseLoginUser() (*Command, error) {
|
||||
cmd.Params["email"] = email
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parsePingServer() (*Command, error) {
|
||||
cmd := NewCommand("ping_server")
|
||||
cmd := NewCommand("ping")
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -208,7 +212,6 @@ func (p *Parser) parsePingServer() (*Command, error) {
|
||||
func (p *Parser) parseRegisterCommand() (*Command, error) {
|
||||
cmd := NewCommand("register_user")
|
||||
|
||||
p.nextToken() // consume REGISTER
|
||||
if err := p.expectPeek(TokenUser); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -245,8 +248,9 @@ func (p *Parser) parseRegisterCommand() (*Command, error) {
|
||||
cmd.Params["password"] = password
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return cmd, nil
|
||||
@@ -258,38 +262,51 @@ func (p *Parser) parseListCommand() (*Command, error) {
|
||||
switch p.curToken.Type {
|
||||
case TokenServices:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_services"), nil
|
||||
case TokenUsers:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_users"), nil
|
||||
case TokenRoles:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_roles"), nil
|
||||
case TokenVars:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_variables"), nil
|
||||
case TokenConfigs:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_configs"), nil
|
||||
case TokenTokens:
|
||||
p.nextToken()
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_tokens"), nil
|
||||
case TokenEnvs:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_environments"), nil
|
||||
case TokenDatasets:
|
||||
@@ -304,8 +321,9 @@ func (p *Parser) parseListCommand() (*Command, error) {
|
||||
return p.parseListDefaultModels()
|
||||
case TokenChats:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_user_chats"), nil
|
||||
case TokenFiles:
|
||||
@@ -334,8 +352,9 @@ func (p *Parser) parseListDatasets() (*Command, error) {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -361,8 +380,9 @@ func (p *Parser) parseListAgents() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -379,12 +399,13 @@ func (p *Parser) parseListKeys() (*Command, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("list_keys")
|
||||
cmd := NewCommand("list_tokens")
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -395,8 +416,9 @@ func (p *Parser) parseListModelProviders() (*Command, error) {
|
||||
return nil, fmt.Errorf("expected PROVIDERS")
|
||||
}
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_user_model_providers"), nil
|
||||
}
|
||||
@@ -407,8 +429,9 @@ func (p *Parser) parseListDefaultModels() (*Command, error) {
|
||||
return nil, fmt.Errorf("expected MODELS")
|
||||
}
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("list_user_default_models"), nil
|
||||
}
|
||||
@@ -433,8 +456,9 @@ func (p *Parser) parseListFiles() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -445,18 +469,27 @@ func (p *Parser) parseShowCommand() (*Command, error) {
|
||||
switch p.curToken.Type {
|
||||
case TokenVersion:
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("show_version"), nil
|
||||
case TokenToken:
|
||||
p.nextToken()
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("show_token"), nil
|
||||
case TokenCurrent:
|
||||
p.nextToken()
|
||||
if p.curToken.Type != TokenUser {
|
||||
return nil, fmt.Errorf("expected USER after CURRENT")
|
||||
}
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("show_current_user"), nil
|
||||
case TokenUser:
|
||||
@@ -485,8 +518,9 @@ func (p *Parser) parseShowUser() (*Command, error) {
|
||||
cmd := NewCommand("show_user_permission")
|
||||
cmd.Params["user_name"] = userName
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -500,8 +534,9 @@ func (p *Parser) parseShowUser() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -517,8 +552,9 @@ func (p *Parser) parseShowRole() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -534,8 +570,9 @@ func (p *Parser) parseShowVariable() (*Command, error) {
|
||||
cmd.Params["var_name"] = varName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -551,8 +588,9 @@ func (p *Parser) parseShowService() (*Command, error) {
|
||||
cmd.Params["number"] = serviceNum
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -571,11 +609,24 @@ func (p *Parser) parseCreateCommand() (*Command, error) {
|
||||
return p.parseCreateDataset()
|
||||
case TokenChat:
|
||||
return p.parseCreateChat()
|
||||
case TokenToken:
|
||||
return p.parseCreateToken()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown CREATE target: %s", p.curToken.Value)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) parseCreateToken() (*Command, error) {
|
||||
p.nextToken() // consume TOKEN
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return NewCommand("create_token"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseCreateUser() (*Command, error) {
|
||||
p.nextToken() // consume USER
|
||||
userName, err := p.parseQuotedString()
|
||||
@@ -595,8 +646,9 @@ func (p *Parser) parseCreateUser() (*Command, error) {
|
||||
cmd.Params["role"] = "user"
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -622,8 +674,9 @@ func (p *Parser) parseCreateRole() (*Command, error) {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -651,8 +704,9 @@ func (p *Parser) parseCreateModelProvider() (*Command, error) {
|
||||
cmd.Params["provider_key"] = providerKey
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -704,8 +758,9 @@ func (p *Parser) parseCreateDataset() (*Command, error) {
|
||||
return nil, fmt.Errorf("expected PARSER or PIPELINE")
|
||||
}
|
||||
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -721,8 +776,9 @@ func (p *Parser) parseCreateChat() (*Command, error) {
|
||||
cmd.Params["chat_name"] = chatName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -743,11 +799,32 @@ func (p *Parser) parseDropCommand() (*Command, error) {
|
||||
return p.parseDropChat()
|
||||
case TokenKey:
|
||||
return p.parseDropKey()
|
||||
case TokenToken:
|
||||
return p.parseDropToken()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown DROP target: %s", p.curToken.Value)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) parseDropToken() (*Command, error) {
|
||||
p.nextToken() // consume TOKEN
|
||||
|
||||
tokenValue, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("drop_token")
|
||||
cmd.Params["token"] = tokenValue
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseDropUser() (*Command, error) {
|
||||
p.nextToken() // consume USER
|
||||
userName, err := p.parseQuotedString()
|
||||
@@ -759,8 +836,9 @@ func (p *Parser) parseDropUser() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -776,8 +854,9 @@ func (p *Parser) parseDropRole() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -798,8 +877,9 @@ func (p *Parser) parseDropModelProvider() (*Command, error) {
|
||||
cmd.Params["provider_name"] = providerName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -815,8 +895,9 @@ func (p *Parser) parseDropDataset() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -832,15 +913,16 @@ func (p *Parser) parseDropChat() (*Command, error) {
|
||||
cmd.Params["chat_name"] = chatName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseDropKey() (*Command, error) {
|
||||
p.nextToken() // consume KEY
|
||||
key, err := p.parseQuotedString()
|
||||
token, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -856,13 +938,14 @@ func (p *Parser) parseDropKey() (*Command, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("drop_key")
|
||||
cmd.Params["key"] = key
|
||||
cmd := NewCommand("drop_token")
|
||||
cmd.Params["token"] = token
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -905,8 +988,9 @@ func (p *Parser) parseAlterUser() (*Command, error) {
|
||||
cmd.Params["password"] = password
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for SHOW TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -936,8 +1020,9 @@ func (p *Parser) parseAlterUser() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -954,16 +1039,17 @@ func (p *Parser) parseActivateUser() (*Command, error) {
|
||||
status := p.curToken.Value
|
||||
if status != "on" && status != "off" {
|
||||
return nil, fmt.Errorf("expected 'on' or 'off', got %s", p.curToken.Value)
|
||||
}
|
||||
}
|
||||
|
||||
cmd := NewCommand("activate_user")
|
||||
cmd.Params["user_name"] = userName
|
||||
cmd.Params["activate_status"] = status
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
@@ -994,8 +1080,9 @@ func (p *Parser) parseAlterRole() (*Command, error) {
|
||||
cmd.Params["description"] = description
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1021,8 +1108,9 @@ func (p *Parser) parseGrantAdmin() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1064,8 +1152,9 @@ func (p *Parser) parseGrantPermission() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1091,8 +1180,9 @@ func (p *Parser) parseRevokeAdmin() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1134,8 +1224,9 @@ func (p *Parser) parseRevokePermission() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1172,6 +1263,9 @@ func (p *Parser) parseSetCommand() (*Command, error) {
|
||||
if p.curToken.Type == TokenDefault {
|
||||
return p.parseSetDefault()
|
||||
}
|
||||
if p.curToken.Type == TokenToken {
|
||||
return p.parseSetToken()
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("unknown SET target: %s", p.curToken.Value)
|
||||
}
|
||||
@@ -1194,8 +1288,9 @@ func (p *Parser) parseSetVariable() (*Command, error) {
|
||||
cmd.Params["var_value"] = varValue
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1234,9 +1329,29 @@ func (p *Parser) parseSetDefault() (*Command, error) {
|
||||
cmd.Params["model_id"] = modelID
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetToken() (*Command, error) {
|
||||
p.nextToken() // consume TOKEN
|
||||
|
||||
tokenValue, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("set_token")
|
||||
cmd.Params["token"] = tokenValue
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
@@ -1270,8 +1385,9 @@ func (p *Parser) parseResetCommand() (*Command, error) {
|
||||
cmd.Params["model_type"] = modelType
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1296,12 +1412,13 @@ func (p *Parser) parseGenerateCommand() (*Command, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cmd := NewCommand("generate_key")
|
||||
cmd := NewCommand("generate_token")
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1333,8 +1450,9 @@ func (p *Parser) parseImportCommand() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1366,8 +1484,9 @@ func (p *Parser) parseSearchCommand() (*Command, error) {
|
||||
cmd.Params["datasets"] = datasets
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1404,8 +1523,9 @@ func (p *Parser) parseParseDataset() (*Command, error) {
|
||||
cmd.Params["method"] = method
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1436,8 +1556,9 @@ func (p *Parser) parseParseDocs() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1482,6 +1603,8 @@ func (p *Parser) parseUserStatement() (*Command, error) {
|
||||
return p.parseDropCommand()
|
||||
case TokenSet:
|
||||
return p.parseSetCommand()
|
||||
case TokenUnset:
|
||||
return p.parseUnsetCommand()
|
||||
case TokenReset:
|
||||
return p.parseResetCommand()
|
||||
case TokenList:
|
||||
@@ -1513,8 +1636,9 @@ func (p *Parser) parseStartupCommand() (*Command, error) {
|
||||
cmd.Params["number"] = serviceNum
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1535,8 +1659,9 @@ func (p *Parser) parseShutdownCommand() (*Command, error) {
|
||||
cmd.Params["number"] = serviceNum
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
@@ -1557,12 +1682,28 @@ func (p *Parser) parseRestartCommand() (*Command, error) {
|
||||
cmd.Params["number"] = serviceNum
|
||||
|
||||
p.nextToken()
|
||||
if err := p.expectSemicolon(); err != nil {
|
||||
return nil, err
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseUnsetCommand() (*Command, error) {
|
||||
p.nextToken() // consume UNSET
|
||||
|
||||
if p.curToken.Type != TokenToken {
|
||||
return nil, fmt.Errorf("expected TOKEN after UNSET")
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("unset_token"), nil
|
||||
}
|
||||
|
||||
func tokenTypeToString(t int) string {
|
||||
// Simplified for error messages
|
||||
return fmt.Sprintf("token(%d)", t)
|
||||
|
||||
Reference in New Issue
Block a user