12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { Op } from 'sequelize';
- import TrackTask, { TrackTaskCreationAttributes } from '../models/trackTask';
- import TrackTeskDetail, {
- TrackTaskDetailCreationAttributes,
- } from '../models/trackTaskDetail';
- import sequelize from '../sequelizeInstance';
- export async function getUnfinishTrackTask() {
- const task = await TrackTask.findOne({
- where: { status: 0 },
- }).catch((err) => {
- console.dir(err);
- });
- return task ? task.dataValues : null;
- }
- export async function createTrackTask(
- data: TrackTaskCreationAttributes,
- details: TrackTaskDetailCreationAttributes[]
- ) {
- const t = await sequelize.transaction();
- try {
- await TrackTask.update(
- {
- status: 2,
- },
- {
- where: {
- status: { [Op.or]: [0, 1] },
- },
- transaction: t,
- }
- );
- // 保存任务
- const task = await TrackTask.create(data, { transaction: t });
- details.forEach((item) => {
- item.trackTaskId = task.id;
- });
- await TrackTeskDetail.bulkCreate(details, { transaction: t });
- await t.commit();
- return task.dataValues;
- } catch (error) {
- await t.rollback();
- return Promise.reject(error);
- }
- }
|