Skip to content
Snippets Groups Projects
Commit eecf4ef1 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

add getting current value for VarlenSeries

parent c8fee5f6
No related branches found
No related tags found
No related merge requests found
......@@ -56,7 +56,9 @@ cdef class Database:
cpdef int delete_series(self, str name) except -1:
"""
Deletes a constant-length time series
Deletes a constant-length time series.
Note that the series must either not be open, or closed.
:param name: name of series to delete
:raises ValueError: tried to delete "varlen" series
......@@ -77,7 +79,9 @@ cdef class Database:
cpdef int delete_varlen_series(self, str name) except -1:
"""
Deletes a variable-length time series
Deletes a variable-length time series.
Note that the series must either not be open, or closed.
:param name: name of series to delete
:raises DoesNotExist: series does not exist
......
from .series cimport TimeSeries, create_series
from .series cimport TimeSeries
cdef class VarlenSeries:
......@@ -20,6 +20,7 @@ cdef class VarlenSeries:
cpdef int mark_synced_up_to(self, unsigned long long timestamp) except -1
cpdef int close(self) except -1
cpdef int delete(self) except -1
cpdef tuple get_current_value(self)
cdef int get_length_for(self, int index)
cpdef int trim(self, unsigned long long timestamp) except -1
cdef int add_series(self) except -1
......
......@@ -435,6 +435,26 @@ cdef class VarlenSeries:
"""
return VarlenIterator(self, start, stop, direct_bytes=direct_bytes)
cpdef tuple get_current_value(self):
"""
Return latest value of this series
:return: tuple of (timestamp, value)
:rtype: tp.Tuple[int, bytes]
:raises ValueError: series has no data
"""
if self.root_series.last_chunk is None:
raise ValueError('No data in series')
cdef:
VarlenIterator it = self.iterate_range(self.root_series.last_entry_ts,
self.root_series.last_entry_ts)
VarlenEntry et = it.get_next()
try:
return et.timestamp(), et.to_bytes()
finally:
et.close()
it.close()
def __init__(self, path: str, name: str):
self.closed = False
self.path = path
......
......@@ -16,6 +16,7 @@ class TestDatabase(unittest.TestCase):
ser.close()
ser = self.db.get_series('hello-world')
self.assertEqual(ser.get_current_value(), (20, b'\x00'))
self.assertEqual(ser.last_entry_ts, 20)
ser.close()
......@@ -29,6 +30,7 @@ class TestDatabase(unittest.TestCase):
ser.close()
ser = self.db.get_varlen_series('hello-world')
self.assertEqual(ser.get_current_value(), (20, b'\x00\x00\x00'))
self.assertEqual(ser.last_entry_ts, 20)
ser.close()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment