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: ...@@ -56,7 +56,9 @@ cdef class Database:
cpdef int delete_series(self, str name) except -1: 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 :param name: name of series to delete
:raises ValueError: tried to delete "varlen" series :raises ValueError: tried to delete "varlen" series
...@@ -77,7 +79,9 @@ cdef class Database: ...@@ -77,7 +79,9 @@ cdef class Database:
cpdef int delete_varlen_series(self, str name) except -1: 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 :param name: name of series to delete
:raises DoesNotExist: series does not exist :raises DoesNotExist: series does not exist
......
from .series cimport TimeSeries, create_series from .series cimport TimeSeries
cdef class VarlenSeries: cdef class VarlenSeries:
...@@ -20,6 +20,7 @@ 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 mark_synced_up_to(self, unsigned long long timestamp) except -1
cpdef int close(self) except -1 cpdef int close(self) except -1
cpdef int delete(self) except -1 cpdef int delete(self) except -1
cpdef tuple get_current_value(self)
cdef int get_length_for(self, int index) cdef int get_length_for(self, int index)
cpdef int trim(self, unsigned long long timestamp) except -1 cpdef int trim(self, unsigned long long timestamp) except -1
cdef int add_series(self) except -1 cdef int add_series(self) except -1
......
...@@ -435,6 +435,26 @@ cdef class VarlenSeries: ...@@ -435,6 +435,26 @@ cdef class VarlenSeries:
""" """
return VarlenIterator(self, start, stop, direct_bytes=direct_bytes) 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): def __init__(self, path: str, name: str):
self.closed = False self.closed = False
self.path = path self.path = path
......
...@@ -16,6 +16,7 @@ class TestDatabase(unittest.TestCase): ...@@ -16,6 +16,7 @@ class TestDatabase(unittest.TestCase):
ser.close() ser.close()
ser = self.db.get_series('hello-world') ser = self.db.get_series('hello-world')
self.assertEqual(ser.get_current_value(), (20, b'\x00'))
self.assertEqual(ser.last_entry_ts, 20) self.assertEqual(ser.last_entry_ts, 20)
ser.close() ser.close()
...@@ -29,6 +30,7 @@ class TestDatabase(unittest.TestCase): ...@@ -29,6 +30,7 @@ class TestDatabase(unittest.TestCase):
ser.close() ser.close()
ser = self.db.get_varlen_series('hello-world') 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) self.assertEqual(ser.last_entry_ts, 20)
ser.close() 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