数据迁移
This commit is contained in:
		@@ -13,7 +13,8 @@ export default defineEventHandler(async event => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (event.node.req.method === 'GET') {
 | 
					    if (event.node.req.method === 'GET') {
 | 
				
			||||||
        const query = getQuery(event)
 | 
					        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;
 | 
					            const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
 | 
				
			||||||
            return list.map(item => ({
 | 
					            return list.map(item => ({
 | 
				
			||||||
                ...item.dataValues,
 | 
					                ...item.dataValues,
 | 
				
			||||||
@@ -35,7 +36,7 @@ export default defineEventHandler(async event => {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
 | 
					        const regex = /<code\s+class="(.*)"\s*>([\s\S]*?)<\/code>/g;
 | 
				
			||||||
        return await event.context.db.Blog.create({
 | 
					        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,
 | 
					            content,
 | 
				
			||||||
            user_id: event.context.user.id
 | 
					            user_id: event.context.user.id
 | 
				
			||||||
        }).then(data => ({
 | 
					        }).then(data => ({
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										27
									
								
								server/api/blog/update.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								server/api/blog/update.js
									
									
									
									
									
										Normal 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()
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
import sequelize from 'sequelize'
 | 
					import sequelize from 'sequelize'
 | 
				
			||||||
 | 
					import { lexer, marked } from 'marked'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default defineNitroPlugin(nitro => {
 | 
					export default defineNitroPlugin(nitro => {
 | 
				
			||||||
    console.log('database plugin')
 | 
					    console.log('database plugin')
 | 
				
			||||||
@@ -53,14 +54,14 @@ export default defineNitroPlugin(nitro => {
 | 
				
			|||||||
        id: { type: INTEGER, primaryKey: true, autoIncrement: true },
 | 
					        id: { type: INTEGER, primaryKey: true, autoIncrement: true },
 | 
				
			||||||
        name: { type: STRING, allowNull: false },
 | 
					        name: { type: STRING, allowNull: false },
 | 
				
			||||||
        description: { type: STRING, defaultValue: '' },
 | 
					        description: { type: STRING, defaultValue: '' },
 | 
				
			||||||
        path:      { type: STRING },
 | 
					        path: { type: STRING },
 | 
				
			||||||
        width:     { type: INTEGER },
 | 
					        width: { type: INTEGER },
 | 
				
			||||||
        height:    { type: INTEGER },
 | 
					        height: { type: INTEGER },
 | 
				
			||||||
        format:    { type: STRING  },
 | 
					        format: { type: STRING },
 | 
				
			||||||
        mimetype:  { type: STRING  },
 | 
					        mimetype: { type: STRING },
 | 
				
			||||||
        size:      { type: INTEGER },
 | 
					        size: { type: INTEGER },
 | 
				
			||||||
        user_id:   { type: INTEGER },
 | 
					        user_id: { type: INTEGER },
 | 
				
			||||||
        nsfw:      { type: BOOLEAN, defaultValue: false },
 | 
					        nsfw: { type: BOOLEAN, defaultValue: false },
 | 
				
			||||||
        createdAt: { type: DATE, defaultValue: new Date() },
 | 
					        createdAt: { type: DATE, defaultValue: new Date() },
 | 
				
			||||||
        updatedAt: { 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 })
 | 
					    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 => {
 | 
					    nitro.hooks.hook('request', event => {
 | 
				
			||||||
        event.context.db = { User, Blog, Gallery, Avatar, Session }
 | 
					        event.context.db = { User, Blog, Gallery, Avatar, Session }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user