开发
开发第三方数据迁移插件

开发第三方数据迁移插件

Mog 提供了一个数据迁移导入的接口,你可以通过这个接口来开发一个迁移插件,将你的数据迁移到 Mog。

目前支持以下数据的迁移:

  • 文章 - posts
  • 页面 - pages
  • 评论 - comments
  • 分类 - categories
  • 用户信息 - user
  • 友链 - friends
⚠️

用户信息中没有导入密码的功能,在导入信息后,Mog 将为您重新生成一个临时密码,您可以在控制台仪表盘中更改它

数据

interface MigrateData {
  posts: MigratePost[];
  pages: MigratePage[];
  user: MigrateUser;
  friends: MigrateFriend[];
  comments: MigrateComment[];
  categories: MigrateCategory[];
}

文章 Post

import { PostModel } from "~/apps/page-service/src/model/post.model";
 
type MigratePost = Omit<
  PostModel,
  'id' | 'category' | 'images' | 'categoryId'
> & { category_id: string };

有几点是需要注意的:

  • slug 字段必须是唯一的
  • category 字段是填写已经存在的分类的 slug (需要在 categories 中存在),否则 Mog 会自动创建一个新的分类
  • createdmodified 字段必须是 ISO 8601 格式的时间字符串
  • hide 一旦设置为 true,则文章将不会在文章列表接口和 RSS 中显示

页面 Page

import { PageModel } from "~/apps/page-service/src/model/page.model";
type MigratePage = Omit<PageModel, "id" | "images">;

分类 Category

import { CategoryModel } from "~/apps/page-service/src/model/category.model";
type MigrateCategory = Omit<CategoryModel, "id" | "type" | "created">;

其中 slug 字段必须是唯一的,图标可以是一个 url(推荐),也可以是一个 base64 编码的图片

评论 Comment

import { CommentsModel } from "~/apps/comments-service/src/comments.model";
 
type MigrateComment = Omit<
  CommentsModel,
  "commentsIndex" | "key" | "reaction" | "parent" | "children"
> & { parent: string; children: string[] };
  • 里面的 pid 字段是必须的,它将会被用来匹配文章,你需要在里面填写对应文章的 slug,如果文章不存在,那么这条评论将会被忽略
  • id 字段必须是唯一的,它将会被用来匹配父级评论,如果父级评论不存在,那么这条评论将会被忽略

友链 Friend

type MigrateFriend = Omit<
  FriendsModel,
  "id" | "token" | "autoCheck" | "feedContents"
>;

用户 User

import { UserModel } from "~/apps/user-service/src/user.model";
 
type MigrateUser = Omit<
  UserModel,
  "password" | "lastLoginTime" | "lastLoginIp" | "apiToken" | "created" | "id"
>;

用户信息中没有导入密码的功能,在导入信息后,Mog 将为您重新生成一个临时密码,您可以在控制台仪表盘中更改它