数据迁移

This commit is contained in:
Last
2025-03-07 21:44:54 +08:00
parent 338c4e0c77
commit 0b6c7b11e2
3 changed files with 39 additions and 27 deletions

View File

@@ -13,7 +13,8 @@ export default defineEventHandler(async event => {
if (event.node.req.method === 'GET') {
const query = getQuery(event)
return await event.context.db.Blog.findAll({ where: query }).then(list => {
const order = [['id', 'DESC']]
return await event.context.db.Blog.findAll({ where: query, order }).then(list => {
const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
return list.map(item => ({
...item.dataValues,
@@ -35,7 +36,7 @@ export default defineEventHandler(async event => {
}
const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
return await event.context.db.Blog.create({
name: lexer(content).find(item => item.type === 'heading' && item.depth === 1) ?? '',
name: lexer(content).find(item => item.type === 'heading' && item.depth === 1)?.text ?? '',
content,
user_id: event.context.user.id
}).then(data => ({

27
server/api/blog/update.js Normal file
View File

@@ -0,0 +1,27 @@
export default defineEventHandler(async event => {
// 转移数据
async function mover_data() {
const { Blog } = event.context.db
const keys = await useStorage('blog').getKeys();
const all = await Promise.all(keys.map(async item => {
return await useStorage('blog').getItem(item);
}))
all.sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt))
for (let item of all) {
const { content, createdAt, updatedAt } = item
const blog = await Blog.findOne({ where: { content } })
if (!blog) {
const res = await Blog.create({
user_id: 1,
name: lexer(content).find(i => i.type === 'heading' && i.depth === 1)?.text ?? '',
content,
createdAt: new Date(createdAt),
updatedAt: new Date(updatedAt)
})
console.log(res.dataValues)
}
}
return { success: true, message: '数据转移完成' }
}
return await mover_data()
})

View File

@@ -1,4 +1,5 @@
import sequelize from 'sequelize'
import { lexer, marked } from 'marked'
export default defineNitroPlugin(nitro => {
console.log('database plugin')
@@ -53,14 +54,14 @@ export default defineNitroPlugin(nitro => {
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
name: { type: STRING, allowNull: false },
description: { type: STRING, defaultValue: '' },
path: { type: STRING },
width: { type: INTEGER },
height: { type: INTEGER },
format: { type: STRING },
mimetype: { type: STRING },
size: { type: INTEGER },
user_id: { type: INTEGER },
nsfw: { type: BOOLEAN, defaultValue: false },
path: { type: STRING },
width: { type: INTEGER },
height: { type: INTEGER },
format: { type: STRING },
mimetype: { type: STRING },
size: { type: INTEGER },
user_id: { type: INTEGER },
nsfw: { type: BOOLEAN, defaultValue: false },
createdAt: { type: DATE, defaultValue: new Date() },
updatedAt: { type: DATE, defaultValue: new Date() }
})
@@ -68,23 +69,6 @@ export default defineNitroPlugin(nitro => {
// 同步数据模型
db.sync({ alter: true, logging: false })
//// 转移数据
//useStorage('blog').getKeys().then(keys => keys.forEach(item => {
// useStorage('blog').getItem(item).then(async data => {
// if (!data.title) return
// const rest = await Blog.findOne({ where: { title: data.title } })
// if (rest) return console.log(rest)
// const resx = await Blog.create({
// title: data.title || '',
// user_id: 0,
// content: data.content,
// createdAt: data.createdAt,
// updatedAt: data.updatedAt
// })
// console.log(resx)
// })
//}))
// 挂载到上下文
nitro.hooks.hook('request', event => {
event.context.db = { User, Blog, Gallery, Avatar, Session }