Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 14f987a49d | |||
| 074e163c95 |
@@ -0,0 +1,28 @@
|
||||
import RecordingMeta from '../../../models/file/bps_recording_meta'
|
||||
import TriggerRaw from '../../../models/file/bps_trigger_raw'
|
||||
|
||||
const recordingMeta = new RecordingMeta()
|
||||
const triggerRaw = new TriggerRaw()
|
||||
|
||||
export const getMetaByUUID = async (ctx, next) => {
|
||||
const uuid = ctx.params.uuid
|
||||
const result = await recordingMeta.getMetaByUUID(uuid)
|
||||
ctx.body = result
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
export const getMetaAll = async (ctx, next) => {
|
||||
const result = await recordingMeta.getMetaAll()
|
||||
ctx.body = result
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
export const getTriggerRawByUUID = async (ctx, next) => {
|
||||
const parent_uuid = ctx.params.parent_uuid
|
||||
const result = await triggerRaw.getDataByUUID(parent_uuid)
|
||||
ctx.body = result
|
||||
|
||||
next()
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import * as recordingDataRaw from './file/recording_data_raw'
|
||||
import * as recordingDataMini from './file/recording_data_mini'
|
||||
import * as analysis from './analysis'
|
||||
import * as sdCard from './file/sd_card'
|
||||
import * as trigger from './file/trigger'
|
||||
|
||||
export default {
|
||||
upload,
|
||||
@@ -23,5 +24,6 @@ export default {
|
||||
recordingDataRaw,
|
||||
recordingDataMini,
|
||||
analysis,
|
||||
sdCard
|
||||
sdCard,
|
||||
trigger,
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ for (let i = 256; i < 288; i++) {
|
||||
for (let i = 256; i < 288; i++) {
|
||||
db[i + '_recording_data_minis'] = require('./schema/recording_data_mini.model')(sequelize, Sequelize, i)
|
||||
}
|
||||
db.recording_meta = require('./schema/bps_recording_meta.model')(sequelize, Sequelize)
|
||||
db.trigger_raw = require('./schema/bps_trigger_raw.model')(sequelize, Sequelize)
|
||||
|
||||
db.sequelize.sync()
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
|
||||
module.exports = (sequelize, Sequelize) => {
|
||||
const RecordingMeta = sequelize.define('bps_recording_meta', {
|
||||
uuid: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '',
|
||||
primaryKey: true
|
||||
},
|
||||
name: {
|
||||
type: Sequelize.STRING
|
||||
},
|
||||
folder_id: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: -1
|
||||
},
|
||||
task_uuid: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: ''
|
||||
},
|
||||
device: {
|
||||
type: Sequelize.JSONB,
|
||||
defaultValue: {}
|
||||
},
|
||||
description: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: ''
|
||||
},
|
||||
size: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: -1
|
||||
},
|
||||
time_duration: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '0'
|
||||
},
|
||||
start_time: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '-1'
|
||||
},
|
||||
end_time: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '-1'
|
||||
},
|
||||
deleted: {
|
||||
type: Sequelize.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
tag: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '-1'
|
||||
},
|
||||
parameter_set: {
|
||||
type: Sequelize.JSONB,
|
||||
defaultValue: {}
|
||||
},
|
||||
create_date: {
|
||||
type: Sequelize.DATE,
|
||||
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
|
||||
},
|
||||
},
|
||||
{
|
||||
timestamps: false
|
||||
}
|
||||
)
|
||||
|
||||
return RecordingMeta
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
module.exports = (sequelize, Sequelize) => {
|
||||
const TriigerDataRaw = sequelize.define('bps_trigger_raw', {
|
||||
channel: {
|
||||
type: Sequelize.INTEGER,
|
||||
defaultValue: -1
|
||||
},
|
||||
parent_uuid: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: ''
|
||||
},
|
||||
data: {
|
||||
type: Sequelize.TEXT,
|
||||
defaultValue: ''
|
||||
},
|
||||
start_time: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '-1'
|
||||
},
|
||||
end_time: {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: '-1'
|
||||
},
|
||||
},
|
||||
{
|
||||
freezeTableName: true
|
||||
}
|
||||
)
|
||||
|
||||
return TriigerDataRaw
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
const db = require('../../db/database')
|
||||
|
||||
const Op = db.Sequelize.Op
|
||||
|
||||
class RecordingMeta {
|
||||
async getMetaByUUID (uuid) {
|
||||
const ret = await db.recording_meta.findAll(
|
||||
{
|
||||
where: {
|
||||
uuid: uuid
|
||||
}
|
||||
}
|
||||
)
|
||||
return ret
|
||||
}
|
||||
|
||||
async getMetaAll () {
|
||||
const ret = await db.recording_meta.findAll({
|
||||
order: [
|
||||
['start_time', 'DESC']
|
||||
]
|
||||
})
|
||||
return ret
|
||||
}
|
||||
}
|
||||
|
||||
export default RecordingMeta
|
||||
@@ -0,0 +1,37 @@
|
||||
const db = require('../../db/database')
|
||||
const { Transform } = require("stream")
|
||||
|
||||
class TriggerRaw {
|
||||
async getDataByUUID (parent_uuid) {
|
||||
const ret = await db.trigger_raw.findAllWithStream(
|
||||
{
|
||||
where: {
|
||||
parent_uuid: parent_uuid
|
||||
},
|
||||
attributes: [
|
||||
'data'
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
const transformer = new Transform({
|
||||
transform(chunk, encoding, callback) {
|
||||
const chunkDataStr = chunk.toString('utf8')
|
||||
// replace: ref https://dmitripavlutin.com/replace-all-string-occurrences-javascript/#2-replace-with-a-global-regular-expression
|
||||
// slice: remove last ','
|
||||
const transformDataArr = JSON.parse(chunkDataStr)[0].data.replace(/[@#$]/g, '').slice(0, -1).split(',')
|
||||
const step = 3
|
||||
let transformData = ''
|
||||
for (let startPos = 0; startPos < transformDataArr.length; startPos += step) {
|
||||
// array chunking algo. comparison: https://www.better.dev/javascript-algorithms-array-chunking
|
||||
transformData += transformDataArr.slice(startPos, startPos + step).join() + '\n' // join: https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Array/join
|
||||
}
|
||||
callback(null, transformData)
|
||||
},
|
||||
})
|
||||
|
||||
return ret.pipe(transformer)
|
||||
}
|
||||
}
|
||||
|
||||
export default TriggerRaw
|
||||
@@ -3,6 +3,7 @@ import meta from './meta'
|
||||
import mini from './mini'
|
||||
import raw from './raw'
|
||||
import sdcard from './sdcard'
|
||||
import trigger from './trigger'
|
||||
|
||||
export default function (_prefix) {
|
||||
const prefix = _prefix + '/file'
|
||||
@@ -11,6 +12,7 @@ export default function (_prefix) {
|
||||
...meta(prefix),
|
||||
...mini(prefix),
|
||||
...raw(prefix),
|
||||
...sdcard(prefix)
|
||||
...sdcard(prefix),
|
||||
...trigger(prefix)
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import controllers from '../../../controllers'
|
||||
|
||||
// '/api/file/trigger'
|
||||
|
||||
export default function (_prefix) {
|
||||
const prefix = _prefix + '/trigger'
|
||||
return [
|
||||
['GET', prefix + '/get_meta_by_uuid/:uuid', controllers.trigger.getMetaByUUID],
|
||||
['GET', prefix + '/get/all', controllers.trigger.getMetaAll],
|
||||
['GET', prefix + '/get_raw_by_uuid/:parent_uuid', controllers.trigger.getTriggerRawByUUID],
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user