Commit f947ef51 authored by pengjun's avatar pengjun

#627 add query index

parent 491ce6b8
......@@ -983,7 +983,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
return nil, pty.ErrPriceInvalid
}
ids, err := queryCollateralizeByStatus(action.localDB, pty.CollateralizeStatusCreated)
ids, err := queryCollateralizeByStatus(action.localDB, pty.CollateralizeStatusCreated, 0)
if err != nil {
clog.Error("CollateralizePriceFeed", "get collateralize record error", err)
return nil, err
......@@ -1095,8 +1095,14 @@ func queryCollateralizeByID(db dbm.KV, collateralizeID string) (*pty.Collaterali
return &coll, nil
}
func queryCollateralizeByStatus(localdb dbm.Lister, status int32) ([]string, error) {
data, err := localdb.List(calcCollateralizeStatusPrefix(status), nil, DefultCount, ListDESC)
func queryCollateralizeByStatus(localdb dbm.Lister, status int32, index int64) ([]string, error) {
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeStatusPrefix(status), calcCollateralizeStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeStatusPrefix(status), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Debug("queryCollateralizesByStatus", "error", err)
return nil, err
......@@ -1116,8 +1122,14 @@ func queryCollateralizeByStatus(localdb dbm.Lister, status int32) ([]string, err
return ids, nil
}
func queryCollateralizeByAddr(localdb dbm.Lister, addr string) ([]string, error) {
data, err := localdb.List(calcCollateralizeAddrPrefix(addr), nil, DefultCount, ListDESC)
func queryCollateralizeByAddr(localdb dbm.Lister, addr string, index int64) ([]string, error) {
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeAddrPrefix(addr), calcCollateralizeAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Debug("queryCollateralizesByAddr", "error", err)
return nil, err
......@@ -1160,8 +1172,14 @@ func queryCollateralizeRecordByID(db dbm.KV, collateralizeID string, recordID st
return nil, types.ErrNotFound
}
func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string) ([]*pty.BorrowRecord, error) {
data, err := localdb.List(calcCollateralizeRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string, index int64) ([]*pty.BorrowRecord, error) {
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeRecordAddrPrefix(addr), calcCollateralizeRecordAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Debug("queryCollateralizeRecordByAddr", "error", err)
return nil, err
......@@ -1187,7 +1205,7 @@ func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string)
return records, nil
}
func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int32) ([]*pty.BorrowRecord, error) {
func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int32, index int64) ([]*pty.BorrowRecord, error) {
var statusKey string
if status == 0 {
statusKey = ""
......@@ -1195,7 +1213,13 @@ func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int3
statusKey = fmt.Sprintf("%d", status)
}
data, err := localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), calcCollateralizeRecordStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Debug("queryCollateralizeRecordByStatus", "error", err)
return nil, err
......
......@@ -52,7 +52,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn
func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByStatus) (types.Message, error) {
ids := &pty.RepCollateralizeIDs{}
collIDRecords, err := queryCollateralizeByStatus(c.GetLocalDB(), req.Status)
collIDRecords, err := queryCollateralizeByStatus(c.GetLocalDB(), req.Status, req.Index)
if err != nil {
clog.Error("Query_CollateralizeByStatus", "get collateralize record error", err)
return nil, err
......@@ -64,7 +64,7 @@ func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByS
func (c *Collateralize) Query_CollateralizeByAddr(req *pty.ReqCollateralizeByAddr) (types.Message, error) {
ids := &pty.RepCollateralizeIDs{}
collIDRecords, err := queryCollateralizeByAddr(c.GetLocalDB(), req.Addr)
collIDRecords, err := queryCollateralizeByAddr(c.GetLocalDB(), req.Addr, req.Index)
if err != nil {
clog.Error("Query_CollateralizeByAddr", "get collateralize record error", err)
return nil, err
......@@ -88,7 +88,7 @@ func (c *Collateralize) Query_CollateralizeRecordByID(req *pty.ReqCollateralizeR
func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr)
records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Index)
if err != nil {
clog.Error("Query_CollateralizeRecordByAddr", "get collateralize record error", err)
return nil, err
......@@ -100,7 +100,7 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz
func (c *Collateralize) Query_CollateralizeRecordByStatus(req *pty.ReqCollateralizeRecordByStatus) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status)
records, err := queryCollateralizeRecordByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status, req.Index)
if err != nil {
clog.Error("Query_CollateralizeRecordByStatus", "get collateralize record error", err)
return nil, err
......
......@@ -160,11 +160,13 @@ message RepCollateralizeCurrentInfos {
// 根据借贷状态查询
message ReqCollateralizeByStatus {
int32 status = 1;
int64 index = 2;
}
// 根据用户地址查询
message ReqCollateralizeByAddr {
string addr = 1;
string addr = 1;
int64 index = 2;
}
// 返回借贷ID列表
......@@ -176,12 +178,14 @@ message RepCollateralizeIDs {
message ReqCollateralizeRecordByAddr {
string collateralizeId = 1;
string addr = 2;
int64 index = 3;
}
// 根据状态和借贷ID混合查询具体借贷记录
message ReqCollateralizeRecordByStatus {
string collateralizeId = 1;
int32 status = 2;
int32 status = 2;
int64 index = 3;
}
// 返回借贷记录
......
......@@ -864,7 +864,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro
return nil, pty.ErrPriceInvalid
}
ids, err := queryIssuanceByStatus(action.localDB, pty.IssuanceStatusCreated)
ids, err := queryIssuanceByStatus(action.localDB, pty.IssuanceStatusCreated, 0)
if err != nil {
clog.Error("IssuancePriceFeed", "get issuance record error", err)
return nil, err
......@@ -981,8 +981,14 @@ func queryIssuanceByID(db dbm.KV, issuanceID string) (*pty.Issuance, error) {
}
// 根据发行状态查找发行ID
func queryIssuanceByStatus(localdb dbm.Lister, status int32) ([]string, error) {
data, err := localdb.List(calcIssuanceStatusPrefix(status), nil, DefultCount, ListDESC)
func queryIssuanceByStatus(localdb dbm.Lister, status int32, index int64) ([]string, error) {
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceStatusPrefix(status), calcIssuanceStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceStatusPrefix(status), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Debug("queryIssuancesByStatus", "error", err)
return nil, err
......@@ -1026,7 +1032,7 @@ func queryIssuanceRecordByID(db dbm.KV, issuanceID string, debtID string) (*pty.
}
// 根据发行状态查找
func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) ([]*pty.DebtRecord, error) {
func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32, index int64) ([]*pty.DebtRecord, error) {
var statusKey string
if status == 0 {
statusKey = ""
......@@ -1034,7 +1040,13 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) (
statusKey = fmt.Sprintf("%d", status)
}
data, err := localdb.List(calcIssuanceRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceRecordStatusPrefix(statusKey), calcIssuanceRecordStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Error("queryIssuanceRecordsByStatus", "error", err)
return nil, err
......@@ -1061,8 +1073,14 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) (
}
// 根据用户地址查找
func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string) ([]*pty.DebtRecord, error) {
data, err := localdb.List(calcIssuanceRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string, index int64) ([]*pty.DebtRecord, error) {
var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceRecordAddrPrefix(addr), calcIssuanceRecordAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil {
clog.Error("queryIssuanceRecordByAddr", "error", err)
return nil, err
......
......@@ -52,7 +52,7 @@ func (c *Issuance) Query_IssuanceInfoByIDs(req *pty.ReqIssuanceInfos) (types.Mes
func (c *Issuance) Query_IssuanceByStatus(req *pty.ReqIssuanceByStatus) (types.Message, error) {
ids := &pty.RepIssuanceIDs{}
issuIDRecords, err := queryIssuanceByStatus(c.GetLocalDB(), req.Status)
issuIDRecords, err := queryIssuanceByStatus(c.GetLocalDB(), req.Status, req.Index)
if err != nil {
clog.Error("Query_IssuanceByStatus", "get issuance error", err)
return nil, err
......@@ -76,7 +76,7 @@ func (c *Issuance) Query_IssuanceRecordByID(req *pty.ReqIssuanceDebtInfo) (types
func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr) (types.Message, error) {
ret := &pty.RepIssuanceRecords{}
records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr)
records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Index)
if err != nil {
clog.Error("Query_IssuanceDebtInfoByAddr", "get issuance record error", err)
return nil, err
......@@ -88,7 +88,7 @@ func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr
func (c *Issuance) Query_IssuanceRecordsByStatus(req *pty.ReqIssuanceRecordsByStatus) (types.Message, error) {
ret := &pty.RepIssuanceRecords{}
records, err := queryIssuanceRecordsByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status)
records, err := queryIssuanceRecordsByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status, req.Index)
if err != nil {
clog.Error("Query_IssuanceDebtInfoByStatus", "get issuance record error", err)
return nil, err
......
......@@ -150,6 +150,7 @@ message RepIssuanceCurrentInfos {
// 根据发行状态查询
message ReqIssuanceByStatus {
int32 status = 1;
int64 index = 2;
}
// 返回借贷ID列表
......@@ -161,12 +162,14 @@ message RepIssuanceIDs {
message ReqIssuanceRecordsByAddr {
string issuanceId = 1;
string addr = 2;
int64 index = 3;
}
// 根据状态查询发行记录
message ReqIssuanceRecordsByStatus {
string issuanceId = 1;
int32 status = 2;
int64 index = 3;
}
// 返回记录列表
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment