From 6143d55fbc41edd34702e6501d7613f2671a1889 Mon Sep 17 00:00:00 2001 From: shoulinwei Date: Sun, 12 Feb 2023 14:12:46 +0800 Subject: [PATCH] add filter --- csst_dfs_api_cluster/common/utils.py | 20 +++++++++++++++++--- csst_dfs_api_cluster/cpic/level1.py | 2 +- csst_dfs_api_cluster/facility/level0.py | 8 +++++--- csst_dfs_api_cluster/mbi/level2.py | 8 ++++++-- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/csst_dfs_api_cluster/common/utils.py b/csst_dfs_api_cluster/common/utils.py index e9ae9be..4309590 100644 --- a/csst_dfs_api_cluster/common/utils.py +++ b/csst_dfs_api_cluster/common/utils.py @@ -1,6 +1,11 @@ import os from datetime import datetime import time +import grpc + +from csst_dfs_commons.models import Result +from csst_dfs_proto.common.misc import misc_pb2, misc_pb2_grpc +from .service import ServiceProxy def format_datetime(dt): return dt.strftime('%Y-%m-%d %H:%M:%S') @@ -14,7 +19,6 @@ def format_time_ms(float_time): data_secs = (float_time - int(float_time)) * 1000 return "%s.%03d" % (data_head, data_secs) - def get_parameter(kwargs, key, default=None): """ Get a specified named value for this (calling) function @@ -40,7 +44,6 @@ def to_int(s, default_value = 0): except: return default_value - def singleton(cls): _instance = {} @@ -51,4 +54,15 @@ def singleton(cls): return inner def get_auth_headers(): - return (("csst_dfs_app",os.getenv("CSST_DFS_APP_ID")),("csst_dfs_token",os.getenv("CSST_DFS_APP_TOKEN")),) \ No newline at end of file + return (("csst_dfs_app",os.getenv("CSST_DFS_APP_ID")),("csst_dfs_token",os.getenv("CSST_DFS_APP_TOKEN")),) + +def get_nextId_by_prefix(prefix): + stub = misc_pb2_grpc.MiscSrvStub(ServiceProxy().channel()) + try: + resp,_ = stub.GetSeqId.with_call( + misc_pb2.GetSeqIdReq(prefix=prefix), + metadata = get_auth_headers() + ) + return Result.ok_data(data=resp.nextId) + except grpc.RpcError as e: + return Result.error(message="%s:%s" % (e.code().value, e.details())) \ No newline at end of file diff --git a/csst_dfs_api_cluster/cpic/level1.py b/csst_dfs_api_cluster/cpic/level1.py index 034c032..eec5010 100644 --- a/csst_dfs_api_cluster/cpic/level1.py +++ b/csst_dfs_api_cluster/cpic/level1.py @@ -72,7 +72,7 @@ class Level1DataApi(object): return Result.error(message=f"data not found") return Result.ok_data(data = Level1Record().from_proto_model(resp.record)) - + except grpc.RpcError as e: return Result.error(message="%s:%s" % (e.code().value, e.details())) diff --git a/csst_dfs_api_cluster/facility/level0.py b/csst_dfs_api_cluster/facility/level0.py index b49ac66..752ada2 100644 --- a/csst_dfs_api_cluster/facility/level0.py +++ b/csst_dfs_api_cluster/facility/level0.py @@ -20,9 +20,10 @@ class Level0DataApi(object): obs_id: [str] detector_no: [str] obs_type: [str] - obs_time : (start, end), - qc0_status : [int], - prc_status : [int], + filter: [str] + obs_time : (start, end) + qc0_status : [int] + prc_status : [int] file_name: [str] limit: limits returns the number of records,default 0:no-limit @@ -43,6 +44,7 @@ class Level0DataApi(object): radius = get_parameter(kwargs, "radius", 0), object_name = get_parameter(kwargs, "object_name", None), version = get_parameter(kwargs, "version", None), + filter = get_parameter(kwargs, "filter", None), limit = get_parameter(kwargs, "limit", 0), other_conditions = {"test":"cnlab.test"} ),metadata = get_auth_headers()) diff --git a/csst_dfs_api_cluster/mbi/level2.py b/csst_dfs_api_cluster/mbi/level2.py index e69f25e..898e588 100644 --- a/csst_dfs_api_cluster/mbi/level2.py +++ b/csst_dfs_api_cluster/mbi/level2.py @@ -61,6 +61,7 @@ class Level2DataApi(object): parameter kwargs: obs_id: [str] detector_no: [str] + filter: [str] ra: [float] in deg dec: [float] in deg radius: [float] in deg @@ -71,8 +72,9 @@ class Level2DataApi(object): ''' try: resp, _ = self.stub.FindCatalog.with_call(level2_pb2.FindLevel2CatalogReq( - obs_id = get_parameter(kwargs, "obs_id"), - detector_no = get_parameter(kwargs, "detector_no"), + obs_id = get_parameter(kwargs, "obs_id", None), + detector_no = get_parameter(kwargs, "detector_no", None), + filter = get_parameter(kwargs, "filter", None), obs_time_start = get_parameter(kwargs, "obs_time", [None, None])[0], obs_time_end = get_parameter(kwargs, "obs_time", [None, None])[1], ra = get_parameter(kwargs, "ra"), @@ -97,6 +99,7 @@ class Level2DataApi(object): parameter kwargs: obs_id: [str] detector_no: [str] + filter: [str] ra: [float] in deg dec: [float] in deg radius: [float] in deg @@ -109,6 +112,7 @@ class Level2DataApi(object): resp, _ = self.stub.FindCatalogFile.with_call(level2_pb2.FindLevel2CatalogReq( obs_id = get_parameter(kwargs, "obs_id"), detector_no = get_parameter(kwargs, "detector_no"), + filter = get_parameter(kwargs, "filter", None), obs_time_start = get_parameter(kwargs, "obs_time", [None, None])[0], obs_time_end = get_parameter(kwargs, "obs_time", [None, None])[1], ra = get_parameter(kwargs, "ra"), -- GitLab