11from influxdb_client .client .influxdb_client import InfluxDBClient
2- from influxdb_client .client .write_api import ASYNCHRONOUS , WriteApi
3- from influxdb_client .client .query_api import QueryApi
2+ from influxdb_client .client .write_api import ASYNCHRONOUS
43from src .configs .influx_conf import InfluxConf
5- from src .models .raw import Raw
6- from src .services .db_service import DBService
4+ from src .models .raw import Raw , RAW_MEASUREMENT
75from src .services .influx_query import QueryIF
86
9- class InfluxService ( DBService ) :
7+ class InfluxService :
108 def __init__ (self ) -> None :
119 self .conf = InfluxConf ()
1210
@@ -22,10 +20,6 @@ def connect(self):
2220 self .write_api = self .client .write_api (write_options = ASYNCHRONOUS )
2321 self .query_api = self .client .query_api ()
2422
25- def get_data (self , batch_number :int = 1 ,batch_size :int = 50 ) -> list [Raw ]:
26- #TODO: add query
27- return []
28-
2923 def query_raw_data (self , start_time : int , end_time : int , cell_index : int , batch_number : int ):
3024 _LIMIT = 50
3125 offset = (batch_number - 1 ) * _LIMIT
@@ -61,3 +55,23 @@ def write_batch(self, data_list:list[dict]) -> None :
6155 raw_list = [Raw (** d ) for d in data_list ]
6256 points = [r .to_point () for r in raw_list ]
6357 self .write_api .write (bucket = self .conf .bucket , org = self .conf .org ,record = points )
58+
59+ def get_known_cells (self ) -> list [int ]:
60+ """Returns a list of known cell indexes"""
61+
62+ query = QueryIF .get_known_cells .format (
63+ bucket = self .conf .bucket ,
64+ measurement = RAW_MEASUREMENT
65+ )
66+
67+ tables = self .query_api .query (query )
68+
69+ cells = []
70+ for table in tables :
71+ for record in table .records :
72+ try :
73+ cells .append (int (record ["_value" ]))
74+ except (TypeError , ValueError ):
75+ pass
76+
77+ return set (cells )
0 commit comments