Commit 434f1e57 authored by Wei Shoulin's avatar Wei Shoulin
Browse files

add level0_id

parent 4a427749
...@@ -306,10 +306,12 @@ create table msc_level1_prc ...@@ -306,10 +306,12 @@ create table msc_level1_prc
create table msc_level2_data ( create table msc_level2_data (
id integer PRIMARY KEY autoincrement, id integer PRIMARY KEY autoincrement,
level0_id VARCHAR(20) null,
level1_id int(20) not null, level1_id int(20) not null,
data_type VARCHAR(64) not null, data_type VARCHAR(64) not null,
filename VARCHAR(128) null, filename VARCHAR(128) null,
file_path VARCHAR(256) null, file_path VARCHAR(256) null,
obs_time datetime null,
prc_status tinyint(1), prc_status tinyint(1),
prc_time datetime null, prc_time datetime null,
qc2_status tinyint(1), qc2_status tinyint(1),
...@@ -701,6 +703,7 @@ create table sls_level2_spectra ...@@ -701,6 +703,7 @@ create table sls_level2_spectra
( (
id integer PRIMARY KEY autoincrement, id integer PRIMARY KEY autoincrement,
spectra_id varchar(40), spectra_id varchar(40),
level0_id VARCHAR(20) null,
level1_id int(20) not null, level1_id int(20) not null,
region varchar(128), region varchar(128),
filename varchar(128), filename varchar(128),
......
import os import os
import logging import logging
import time, datetime import time, datetime
from astropy.io import fits
import shutil import shutil
from traceback import print_stack from traceback import print_stack
...@@ -9,6 +10,7 @@ from ..common.utils import * ...@@ -9,6 +10,7 @@ from ..common.utils import *
from csst_dfs_commons.models import Result from csst_dfs_commons.models import Result
from csst_dfs_commons.models.common import from_dict_list from csst_dfs_commons.models.common import from_dict_list
from csst_dfs_commons.models.msc import Level2Record, Level2CatalogRecord from csst_dfs_commons.models.msc import Level2Record, Level2CatalogRecord
from csst_dfs_commons.utils.fits import get_header_value
log = logging.getLogger('csst') log = logging.getLogger('csst')
...@@ -25,6 +27,7 @@ class Level2DataApi(object): ...@@ -25,6 +27,7 @@ class Level2DataApi(object):
''' retrieve level2 records from database ''' retrieve level2 records from database
:param kwargs: Parameter dictionary, key items support: :param kwargs: Parameter dictionary, key items support:
level0_id: [str]
level1_id: [int] level1_id: [int]
data_type: [str] data_type: [str]
create_time : (start, end), create_time : (start, end),
...@@ -36,6 +39,7 @@ class Level2DataApi(object): ...@@ -36,6 +39,7 @@ class Level2DataApi(object):
:returns: csst_dfs_common.models.Result :returns: csst_dfs_common.models.Result
''' '''
try: try:
level0_id = get_parameter(kwargs, "level0_id")
level1_id = get_parameter(kwargs, "level1_id") level1_id = get_parameter(kwargs, "level1_id")
data_type = get_parameter(kwargs, "data_type") data_type = get_parameter(kwargs, "data_type")
create_time_start = get_parameter(kwargs, "create_time", [None, None])[0] create_time_start = get_parameter(kwargs, "create_time", [None, None])[0]
...@@ -49,8 +53,10 @@ class Level2DataApi(object): ...@@ -49,8 +53,10 @@ class Level2DataApi(object):
sql_data = f"select * from msc_level2_data where 1=1" sql_data = f"select * from msc_level2_data where 1=1"
sql_condition = "" sql_condition = ""
if level0_id:
sql_condition = f"{sql_condition} and level0_id='{level0_id}'"
if level1_id: if level1_id:
sql_condition = f"{sql_condition} and level1_id='{level1_id}'" sql_condition = f"{sql_condition} and level1_id={level1_id}"
if data_type: if data_type:
sql_condition = f"{sql_condition} and data_type='{data_type}'" sql_condition = f"{sql_condition} and data_type='{data_type}'"
if create_time_start: if create_time_start:
...@@ -157,13 +163,16 @@ class Level2DataApi(object): ...@@ -157,13 +163,16 @@ class Level2DataApi(object):
''' insert a level2 record into database ''' insert a level2 record into database
parameter kwargs: parameter kwargs:
level0_id: [str]
level1_id: [int] level1_id: [int]
data_type : [str] data_type : [str]
filename : [str] filename : [str]
file_path : [str] file_path : [str]
obs_time : [str]
prc_status : [int] prc_status : [int]
prc_time : [str] prc_time : [str]
return csst_dfs_common.models.Result return csst_dfs_common.models.Result
''' '''
try: try:
...@@ -185,10 +194,24 @@ class Level2DataApi(object): ...@@ -185,10 +194,24 @@ class Level2DataApi(object):
log.error(f'{rec.filename} has already been existed') log.error(f'{rec.filename} has already been existed')
return Result.error(message=f'{rec.filename} has already been existed') return Result.error(message=f'{rec.filename} has already been existed')
hdul = fits.open(rec.file_path)
header = hdul[0].header
obs_id = get_header_value("OBSID",header, "")
obs_id_str = "%09d" % (obs_id) if isinstance(obs_id, int) else obs_id
detector = get_header_value("DETECTOR", header, "")
if len(detector) > 2:
detector = detector[-2:]
obs_time = f"{get_header_value('DATE-OBS', header, '')} {get_header_value('TIME-OBS', header, '')}"
level0_id = f"{obs_id_str}{detector}"
if not rec.filename:
rec.filename = os.path.basename(rec.file_path)
self.db.execute( self.db.execute(
'INSERT INTO msc_level2_data (level1_id,data_type,filename,file_path,qc2_status,prc_status,prc_time,create_time,pipeline_id) \ 'INSERT INTO msc_level2_data (level0_id, level1_id,data_type,filename,file_path,obs_time,qc2_status,prc_status,prc_time,create_time,pipeline_id) \
VALUES(?,?,?,?,?,?,?,?,?)', VALUES(?,?,?,?,?,?,?,?,?,?,?)',
(rec.level1_id, rec.data_type, rec.filename, rec.file_path, -1, rec.prc_status, rec.prc_time, format_time_ms(time.time()),rec.pipeline_id) (level0_id, rec.level1_id, rec.data_type, rec.filename, rec.file_path, obs_time, -1, rec.prc_status, rec.prc_time, format_time_ms(time.time()),rec.pipeline_id)
) )
self.db.end() self.db.end()
rec.id = self.db.last_row_id() rec.id = self.db.last_row_id()
......
...@@ -21,6 +21,7 @@ class Level2SpectraApi(object): ...@@ -21,6 +21,7 @@ class Level2SpectraApi(object):
''' retrieve records from database ''' retrieve records from database
parameter kwargs: parameter kwargs:
level0_id: [str]
level1_id: [int] level1_id: [int]
spectra_id: [str] spectra_id: [str]
create_time : (start, end), create_time : (start, end),
...@@ -32,6 +33,7 @@ class Level2SpectraApi(object): ...@@ -32,6 +33,7 @@ class Level2SpectraApi(object):
return: csst_dfs_common.models.Result return: csst_dfs_common.models.Result
''' '''
try: try:
level0_id = get_parameter(kwargs, "level0_id", "")
level1_id = get_parameter(kwargs, "level1_id", 0) level1_id = get_parameter(kwargs, "level1_id", 0)
spectra_id = get_parameter(kwargs, "spectra_id") spectra_id = get_parameter(kwargs, "spectra_id")
create_time_start = get_parameter(kwargs, "create_time", [None, None])[0] create_time_start = get_parameter(kwargs, "create_time", [None, None])[0]
...@@ -45,6 +47,8 @@ class Level2SpectraApi(object): ...@@ -45,6 +47,8 @@ class Level2SpectraApi(object):
sql_data = f"select * from sls_level2_spectra where 1=1" sql_data = f"select * from sls_level2_spectra where 1=1"
sql_condition = "" sql_condition = ""
if level0_id:
sql_condition = f"{sql_condition} and level0_id='{level0_id}'"
if level1_id > 0: if level1_id > 0:
sql_condition = f"{sql_condition} and level1_id={level1_id}" sql_condition = f"{sql_condition} and level1_id={level1_id}"
if spectra_id: if spectra_id:
...@@ -153,6 +157,7 @@ class Level2SpectraApi(object): ...@@ -153,6 +157,7 @@ class Level2SpectraApi(object):
''' insert a level1 record into database ''' insert a level1 record into database
parameter kwargs: parameter kwargs:
level0_id: [str]
level1_id: [int] level1_id: [int]
spectra_id : [str] spectra_id : [str]
region : [str] region : [str]
...@@ -167,6 +172,7 @@ class Level2SpectraApi(object): ...@@ -167,6 +172,7 @@ class Level2SpectraApi(object):
try: try:
rec = Level2Spectra( rec = Level2Spectra(
id = 0, id = 0,
level0_id = get_parameter(kwargs, "level0_id"),
level1_id = get_parameter(kwargs, "level1_id"), level1_id = get_parameter(kwargs, "level1_id"),
spectra_id = get_parameter(kwargs, "spectra_id"), spectra_id = get_parameter(kwargs, "spectra_id"),
region = get_parameter(kwargs, "region"), region = get_parameter(kwargs, "region"),
...@@ -185,9 +191,9 @@ class Level2SpectraApi(object): ...@@ -185,9 +191,9 @@ class Level2SpectraApi(object):
return Result.error(message=f'{rec.filename} has already been existed') return Result.error(message=f'{rec.filename} has already been existed')
self.db.execute( self.db.execute(
'INSERT INTO sls_level2_spectra (level1_id,spectra_id,region,filename,file_path,qc1_status,prc_status,prc_time,create_time,pipeline_id) \ 'INSERT INTO sls_level2_spectra (level0_id, level1_id,spectra_id,region,filename,file_path,qc1_status,prc_status,prc_time,create_time,pipeline_id) \
VALUES(?,?,?,?,?,?,?,?,?,?)', VALUES(?,?,?,?,?,?,?,?,?,?,?)',
(rec.level1_id, rec.spectra_id, rec.region, rec.filename, rec.file_path, -1, rec.prc_status, rec.prc_time, format_time_ms(time.time()),rec.pipeline_id,) (rec.level0_id, rec.level1_id, rec.spectra_id, rec.region, rec.filename, rec.file_path, -1, rec.prc_status, rec.prc_time, format_time_ms(time.time()),rec.pipeline_id,)
) )
self.db.end() self.db.end()
rec.id = self.db.last_row_id() rec.id = self.db.last_row_id()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment