Storage: Support get with resourceversion (#83849)

support getting old resourceversion, return explicit resource version in list
This commit is contained in:
Dan Cech
2024-03-05 10:57:32 -05:00
committed by GitHub
parent b3efb4217e
commit 9fa9eaab44
5 changed files with 150 additions and 123 deletions
@@ -214,7 +214,7 @@ func (s *sqlEntityServer) read(ctx context.Context, tx session.SessionQuerier, r
if r.ResourceVersion != 0 {
table = "entity_history"
where = append(where, s.dialect.Quote("resource_version")+"=?")
where = append(where, s.dialect.Quote("resource_version")+">=?")
args = append(args, r.ResourceVersion)
}
@@ -230,6 +230,11 @@ func (s *sqlEntityServer) read(ctx context.Context, tx session.SessionQuerier, r
query += " FROM " + table +
" WHERE " + strings.Join(where, " AND ")
if r.ResourceVersion != 0 {
query += " ORDER BY resource_version DESC"
}
query += " LIMIT 1"
s.log.Debug("read", "query", query, "args", args)
rows, err := tx.Query(ctx, query, args...)
@@ -1156,7 +1161,9 @@ func (s *sqlEntityServer) List(ctx context.Context, r *entity.EntityListRequest)
return nil, err
}
defer func() { _ = rows.Close() }()
rsp := &entity.EntityListResponse{}
rsp := &entity.EntityListResponse{
ResourceVersion: s.snowflake.Generate().Int64(),
}
for rows.Next() {
result, err := s.rowToEntity(ctx, rows, rr)
if err != nil {