Query handles query request in dbms.
(req *types.Request)
| 510 | |
| 511 | // Query handles query request in dbms. |
| 512 | func (dbms *DBMS) Query(req *types.Request) (res *types.Response, err error) { |
| 513 | var db *Database |
| 514 | var exists bool |
| 515 | |
| 516 | // check permission |
| 517 | addr, err := crypto.PubKeyHash(req.Header.Signee) |
| 518 | if err != nil { |
| 519 | return |
| 520 | } |
| 521 | err = dbms.checkPermission(addr, req.Header.DatabaseID, req.Header.QueryType, req.Payload.Queries) |
| 522 | if err != nil { |
| 523 | return |
| 524 | } |
| 525 | |
| 526 | // find database |
| 527 | if db, exists = dbms.getMeta(req.Header.DatabaseID); !exists { |
| 528 | err = ErrNotExists |
| 529 | return |
| 530 | } |
| 531 | |
| 532 | return db.Query(req) |
| 533 | } |
| 534 | |
| 535 | // Ack handles ack of previous response. |
| 536 | func (dbms *DBMS) Ack(ack *types.Ack) (err error) { |
nothing calls this directly
no test coverage detected