Compare commits

..

2 Commits

Author SHA1 Message Date
peterlu14 f7f270a18a feat: add bytea_data field to recording_data_raw model
- Add a `bytea_data` field to the `recording_data_raw` model with default value as an empty buffer.

Signed-off-by: peterlu14 <peterlu810516@gmail.com>
2024-01-23 15:50:59 +08:00
peterlu14 917380a961 -add configuration table 2023-05-11 15:14:44 +08:00
8 changed files with 227 additions and 1 deletions
+39
View File
@@ -0,0 +1,39 @@
import ConfigurationModal from '../../models/configuration/configuration'
const configuration = new ConfigurationModal()
export const create = async (ctx, next) => {
const data = ctx.request.body
const result = await configuration.create(data)
ctx.body = result
next()
}
export const update = async (ctx, next) => {
const data = ctx.request.body
const id = ctx.params.id
const result = await configuration.update(data, id)
ctx.body = result
next()
}
export const get = async (ctx, next) => {
const configurationType = ctx.query.type
const id = ctx.query.id
const library = ctx.query.library
const query = { id: id, library: library }
const result = await configuration.get(configurationType, query)
ctx.body = result
next()
}
export const clearDeleted = async (ctx, next) => {
const controllerID = ctx.params.controller_id
const result = await configuration.clearDeleted(controllerID)
ctx.body = result
next()
}
+3 -1
View File
@@ -12,6 +12,7 @@ import * as analysis from './analysis'
import * as project from './project/project'
import * as projectReport from './project/project_report'
import * as projectMeta from './project/project_meta'
import * as chart from './configuration/chart'
export default {
upload,
@@ -27,5 +28,6 @@ export default {
analysis,
project,
projectReport,
projectMeta
projectMeta,
chart
}
+1
View File
@@ -31,6 +31,7 @@ db.projects = require('./schema/project.model')(sequelize, Sequelize)
db.project_reports = require('./schema/project_report.model')(sequelize, Sequelize)
db.project_metas = require('./schema/project_meta.model')(sequelize, Sequelize)
db.recording_data_metas = require('./schema/recording_data_meta.model')(sequelize, Sequelize)
db.charts = require('./schema/configuration/chart.model')(sequelize, Sequelize)
for (let i = 0; i < 32; i++) {
db[i + '_recording_data_raws'] = require('./schema/recording_data_raw.model')(sequelize, Sequelize, i)
}
+47
View File
@@ -0,0 +1,47 @@
module.exports = (sequelize, Sequelize) => {
const Configuration = sequelize.define('configuration', {
name: {
type: Sequelize.STRING
},
library: {
type: Sequelize.STRING
},
layout: {
type: Sequelize.JSONB
},
chart: {
type: Sequelize.JSONB
},
parameter: {
type: Sequelize.JSONB
},
user_auth: {
type: Sequelize.JSONB,
defaultValue: {
owner: [],
maintainer: [],
guest: []
}
},
locked: {
type: Sequelize.BOOLEAN
},
deleted: {
type: Sequelize.BOOLEAN,
defaultValue: false
},
created_at: {
type: Sequelize.DATE,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
},
updated_at: {
type: Sequelize.DATE,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
}
},
{
timestamps: false
})
return Configuration
}
@@ -0,0 +1,48 @@
module.exports = (sequelize, Sequelize) => {
const Chart = sequelize.define('chart', {
name: {
type: Sequelize.STRING
},
description: {
type: Sequelize.STRING
},
library: {
type: Sequelize.STRING
},
num: {
type: Sequelize.INTEGER
},
data: {
type: Sequelize.JSONB
},
user_auth: {
type: Sequelize.JSONB,
defaultValue: {
owner: [],
maintainer: [],
guest: []
}
},
locked: {
type: Sequelize.BOOLEAN,
defaultValue: false
},
deleted: {
type: Sequelize.BOOLEAN,
defaultValue: false
},
created_at: {
type: Sequelize.DATE,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
},
updated_at: {
type: Sequelize.DATE,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP')
}
},
{
timestamps: false
})
return Chart
}
@@ -43,6 +43,10 @@ module.exports = (sequelize, Sequelize, i) => {
type: Sequelize.TEXT,
defaultValue: ''
},
bytea_data: {
type: Sequelize.BLOB,
defaultValue: Buffer.alloc(0) // Empty Buffer
},
compressed: {
type: Sequelize.BOOLEAN,
defaultValue: false
+79
View File
@@ -0,0 +1,79 @@
const db = require('../../db/database')
const Op = db.Sequelize.Op
class ConfigurationModel {
async create (req) {
return db.charts.create(
req
)
}
async update (req, id) {
if (id != null) {
const ret = await db.charts.update(
req,
{
where: {
id: id
}
}
)
return ret
} else {
const ret = await db.charts.update(
req,
{
where: {}
}
)
return ret
}
}
async clearDeleted () {
const ret = await db.charts.destroy(
{
where: {
deleted: true
}
}
)
return ret
}
async get (type, query) {
let where = {}
if (type === 'chart') {
where = {
chart: {
[Op.ne]: null
}
}
}
Object.assign(query, where)
const ret = await db.charts.findAll(
{
where: where
}
)
return ret
}
async getByQueryWithAttrs (query, limit, offset, order, attrs, group) {
const attrList = attrs ? attrs.split('-') : undefined
const ret = await db.charts.findAll(
{
// where: db.Sequelize.where(db.Sequelize.fn('DATE', db.Sequelize.col('created_at')), '2022-12-02'),
where: query,
attributes: attrList,
order: order,
limit: limit,
offset: offset
}
)
return ret
}
}
export default ConfigurationModel
+6
View File
@@ -137,3 +137,9 @@ export default router
.post('/api/project/meta/create', controllers.projectMeta.create)
.post('/api/project/meta/update/:id', controllers.projectMeta.update)
.get('/api/project/meta/get', controllers.projectMeta.get)
// configuration
.post('/api/configuration/create', controllers.chart.create)
.post('/api/configuration/update/:id', controllers.chart.update)
.get('/api/configuration/get', controllers.chart.get)
.get('/api/configuration/clear_deleted/', controllers.chart.clearDeleted)