feat: redesign doc pages (#153)

This commit is contained in:
vran
2022-05-07 22:35:27 +08:00
committed by GitHub
parent 6b328735af
commit f2c4de5bb1
120 changed files with 260 additions and 55 deletions

24
docs/guid/_sidebar.md Normal file
View File

@@ -0,0 +1,24 @@
* 项目说明
* [](/guid/index.md)
* 系统部署
* [Jar 包部署](/guid/deploy/jar-deploy.md)
* [Docker 部署](/guid/deploy/docker-deploy.md)
* 基本概念
* [角色与权限](/guid/concept-user-role/user-role.md)
* [分组与项目](/guid/concept-group-project/index.md)
* 基础操作
* [分组管理](/guid/management-group/index.md)
* [项目管理](/guid/management-project/index.md)
* [文档管理](/guid/management-document/index.md)
* [用户管理](/guid/management-user/index.md)
* [邮箱设置](/guid/management-email/index.md)
* 进阶操作
* [启用 Github 第三方认证登录](/guid/advance-github-oauth2/github-oauth2.md)
* [启用 Gitlab 第三方认证登录](/guid/advance-gitlab-oauth2/gitlab-oauth2.md)
* [扩展更多数据库类型](/guid/advance-database-extension/database-extension.md)
* [数据库模板列表](/guid/advance-database-type-list/index.md)
* [Mock Insert SQL 生成](/guid/advance-mock-sql/index.md)

View File

@@ -0,0 +1,80 @@
# 扩展更多数据库类型
## 说明
[Databasir](https://github.com/vran-dev/databasir) 理论上是支持所有**拥有 JDBC 驱动的数据库**,系统已为 Mysql、Postgresql 提供了内置的支持,这两种数据库可以开箱即用。
默认配置
| 数据库类型 | 驱动版本 | 驱动类名 |
| ---------- | -------- | ------------------------ |
| mysql | 8.0.27 | com.mysql.cj.jdbc.Driver |
| postgresql | 42.3.1 | org.postgresql.Driver |
对于其它数据库(有 JDBC 驱动),用户可以通过导入的方式实现扩展。
## 内置模板导入
在数据库的扩展中已将以下数据库模板实行了内置,用户可以按需添加
- mysql
- postgresql
- sqlserver
- oracle
- mariaDB
![img.png](img/inner-template.png)
当然这并不是说 Databasir 只支持这几款数据库,而是这些数据库经过了测试是可以使用的。
随着测试的扩展,内置模板的数量将会越来越多。
## 第三方模板 JSON 导入
有很多社区的模板没有被内置到 Databasir 中,用户可以通过分享 JSON 的形式进行导入
[点击查看](/guid/advance-database-type-list/index) JSON 模板示例
![img.png](img/json-import.png)
## 自定义配置
如果用户有一定的 Java 技术背景,则可以通过填写表单的形式进行扩展。
数据库类型是全平台可用的,所以限制了只有【系统管理员】权限才能新增数据库类型。
通过菜单我们进入【数据库类型】配置页面
![](img/1-menu.png)
在该页面我们可以看到既有的数据库类型信息,点击左上角的 + 号就可以进入新增页面
![](img/2-database-types.png)
这个表单中我们需要填入一些必要的信息,我们以扩展一个 mariadb 为例
![](img/3-add.png)
| 属性 | 说明 | 示例数据 |
| ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 数据库类型 | 这是你自己定义的名称,最好是能见名知意,改名字在整个系统内不能重复。创建项目时的数据库类型会展示该名称。 | mariadb |
| 图标地址 | 用于展示图标 | |
| 描述 | 对该数据库类型的一些说明 | maria database |
| JDBC 驱动下载地址 | 系统会从改地址去下载对应的驱动,如果填入的时 maven 仓库,建议选择国内的镜像仓库,如阿里云、公司私服等。 | https://maven.aliyun.com/repository/central/org/mariadb/jdbc/mariadb-java-client/3.0.3/mariadb-java-client-3.0.3.jar |
| 驱动类名 | 比如 mysql 老版本的类名就是 `com.mysql.jdbc.Driver` | org.mariadb.jdbc.Driver |
| 协议头 | 创建连接时的协议头,比如 mysql 就是 `jdbc:mysql` | jdbc:mariadb |
| URL 生成表达式 | 大部分数据库连接的格式是规范的,但也有少部分我们需要自定义连接 URL而该表达式就定义了连接的模板系统会基于该模板生成最终的连接。通常情况下我们不需要去修改默认表达式 | 默认 |
表达式内置变量
- {{jdbc.protocol}} 对应表单中填写的协议头
- {{db.name}} 对应创建项目时填写的数据库名称
- {{db.schema}} 对应创建项目时填写的 schema名称
- {{db.url}} 对应创建项目时填写的 url
## 验证
保存完成以后我们就可以在项目创建页面找到我们自定义的数据库示例了
![](img/4-result.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,125 @@
# 数据库模板
## MYSQL
<!-- tabs:start -->
#### **mysql-8**
```json
{
"author": {
},
"template": {
"databaseType": "mysql-8.0.28",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar",
"icon": "",
"description": "mysql-8.0.28",
"jdbcDriverClassName": "com.mysql.cj.jdbc.Driver",
"jdbcProtocol": "jdbc:mysql",
"urlPattern": "{{jdbc.protocol}}://{{db.url}}/{{db.name}}"
}
}
```
#### **mysql-5**
```json
{
"author": {
},
"template": {
"databaseType": "mysql-5.1.49",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar",
"icon": "",
"description": "mysql-5.1.49",
"jdbcDriverClassName": "com.mysql.jdbc.Driver",
"jdbcProtocol": "jdbc:mysql",
"urlPattern": "{{jdbc.protocol}}://{{db.url}}/{{db.name}}"
}
}
```
<!-- tabs:end -->
## PostgreSQL
```json
{
"author": {
},
"template": {
"databaseType": "postgresql-42.3.4",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/org/postgresql/postgresql/42.3.4/postgresql-42.3.4.jar",
"icon": "",
"description": "postgresql jdbc version 42.3.4",
"jdbcDriverClassName": "org.postgresql.Driver",
"jdbcProtocol": "jdbc:postgresql",
"urlPattern": "{{jdbc.protocol}}://{{db.url}}/{{db.name}}"
}
}
```
## MariaDB
```json
{
"author": {
},
"template": {
"databaseType": "mariadb-3.0.3",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/org/mariadb/jdbc/mariadb-java-client/3.0.3/mariadb-java-client-3.0.3.jar",
"icon": "",
"description": "mariadb-3.0.3",
"jdbcDriverClassName": "org.mariadb.jdbc.Driver",
"jdbcProtocol": "jdbc:mariadb",
"urlPattern": "{{jdbc.protocol}}://{{db.url}}/{{db.name}}"
}
}
```
## Oracle
<!-- tabs:start -->
#### **thin**
```json
{
"author": {
},
"template": {
"databaseType": "oracle-thin-12.2.0.1",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/com/oracle/database/jdbc/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.jar",
"icon": "",
"description": "oracle-thin-12.2.0.1",
"jdbcDriverClassName": "oracle.jdbc.OracleDriver",
"jdbcProtocol": "jdbc:oracle:thin",
"urlPattern": "{{jdbc.protocol}}:@{{db.url}}:{{db.name}}"
}
}
```
<!-- tabs:end -->
## SqlServer
```json
{
"author": {
},
"template": {
"databaseType": "sqlServer-10.2.0.jre8",
"jdbcDriverFileUrl": "https://maven.aliyun.com/repository/central/com/microsoft/sqlserver/mssql-jdbc/10.2.0.jre8/mssql-jdbc-10.2.0.jre8.jar",
"icon": "",
"description": "sqlServer-10.2.0.jre8",
"jdbcDriverClassName": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
"jdbcProtocol": "jdbc:sqlserver",
"urlPattern": "{{jdbc.protocol}}://{{db.url}};databaseName={{db.name}}"
}
}
```
## 达梦
```json
// TODO
```

View File

@@ -0,0 +1,57 @@
# 启用 Github 第三方认证登录
## 一、创建 Github OAuth 应用
前往 Github 的配置页面创建 Github OAuth Application
![github-app-create](img/1-github-oauth2-app-create.png)
点击 `New OAuth App` 就会进入应用创建页面
![github-oauth2](img/2-github-oauth2-create.png)
Homepage URL 填写你部署 databasir 后,可访问的公网域名。
Authorization callback URL 你可以先填写 {{ databasir 域名 }}/login/oauth2/{{ registrationId }}。
这里的 registrationId 你可以任意填写,只需要稍后在 Databasir 中配置时保持一致即可,我这里填写了 `vran_github`
填好信息以后点击 `Register application` 就能成功创建一个 OAuth Application 了并跳入下图所示页面
![oauth2-github](img/3-github-oauth2-create.png)
在点击 `Generate a new client secret`,生成秘钥以后记得复制暂存一下,以后是看不见原始秘钥的了
记得保存 Client Id 和刚刚生成的 Client Secret。
![oauth2-github](img/4-github-oauth2-create.png)
## 二、Databasir 登录设置
进入 Databasir 系统管理 -> 登录设置
![databasir](img/5-github-oauth-create.png)
进入到应用创建页面,填写表单信息。
![](img/6-github-oauth-create.png)
还记得前面提到的 `registrationId` 吗?那个就对应 databasir 中的 `应用 ID` ,只要两者保持一致就可以成功接受 github 的回调。
要是前面配错了也没关系,可以在当前页面复制自动生成的 URL 去 github 重新填写 Authorization callback URL 就可以了。
注意授权地址和资源地址
- 授权地址:获取 access_token 的请求地址
- 资源地址:获取用户信息的请求地址
这里填写不一样是因为 github 官方将授权和资源地址分开的,**如果你使用的时 github enterprise 版本,授权地址和资源地址其实是一样的**。
## 三、登录验证
配置完成以后,注销登录后再次进入登录页面就会发现多了一个 github 的小图标,点击就可以使用 github 进行登录
![](img/7-github-oauth-create.png)
点击就会进入授权页面,授权完成就会创建一个新的 databasir 用户,并直接登录成功
![](img/8-github-oauth-create.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -0,0 +1,41 @@
# 启用 Gitlab 第三方认证登录
## 一、申请 Gitlab 应用
前往 Gitlab 配置页面创建 Gitlab 应用,填写应用名称、回调地址等信息,注意下面授权一定记得勾选上 **read_user**
回调地址填写你访问 databasir 的公网地址 {{ databasir 地址 }}/login/oauth2/{{ 应用ID }}
这里我的应用 id 为 vran-gitlab后面在 databasir 配置的时候需要用上
![](img/1-gitlab-oauth2.png)
保存好应用以后,就可以看见 Application Id 和 Secret保存下来这两个值
![](img/2-gitlab-oauth2.png)
## 二、Databasir 登录设置
进入 Databasir 系统管理 -> 登录设置页面
![](img/3-gitlab-oauth2.png)
创建并保存应用信息
- client Id 就对应申请到的 Application Id
- client secret 就对应申请到的 Application secret
- 应用 id 记得和我们第一步填写 redirect uri 时的应用 id 保持一致
![image-20220303225811673](img/4-gitlab-oauth2.png)
## 三、登录验证
保存完成以后注销登录,进入登录页面就可以看见多了一个 gitlab 的登录图标,点击就可以使用 gitlab 来登录了
![](img/5-gitlab-oauth2.png)
注意:如果登录出现 The redirect URI included is not valid. 这样的错误,请检查回调地址是否与 databasir 的地址一致,以及协议是否一致(比如 http 和 https
点击登录以后就会进入授权页面,授权完成以后就会新建一个 databasir 用户并自动完成登录
![](img/6-gitlab-oauth2.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@@ -0,0 +1,50 @@
# Mock Insert SQL 生成
## 功能入口
每一张表的文档都包含了完整的列信息,基于这些信息 Databasir 可以生成 Insert SQL从而降低开发过程中**造数据**的复杂度。
该功能位于文档信息的表名称旁边,一个以 M 标识的按钮
![a](img/a.png)
点击按钮就会弹出对话框,该对话框有两部分
- Mock 数据:展示了生成的 sql 语句,可以直接复制
- 生成规则:该 Tab 页面可以配置每个字段的生成规则
![](img/b.png)
![](img/c.png)
## 生成规则
目前 Databasir 提供了 8 种生成规则
| 类型 | 说明 | 类型 |
| ------ | ------------------------------------------------------------ | ------ |
| 自动 | Databasir 会根据列类型生成数据,比如数字就默认是 1字符串就默认是 '' | - |
| 关联 | 该字段可以关联其他表的其他列Databasir 会根据依赖关系生成所有的关联 SQL并且会自动检测是否出现了循环依赖 | - |
| 脚本 | Databasir 支持使用 Spel 表达式来定义字段值,比如表达式 "true" 就代表为 true表达式 "'hello'" 就是 'hello',目前还处于 Beta 状态 | * |
| 手机号 | 手机号 | 字符串 |
| 头像 | 头像 URL | 字符串 |
| UUID | UUID | 字符串 |
| 邮箱 | 随机邮箱 | 字符串 |
| 姓名 | 全英文随机姓名 | 字符串 |
## SpEl 表达式Beta示例
Note目前脚本模式还处于 Beta 状态,后期有可能会有大的调整。
一、自定义常量值
如果想生成自定义的常量值,可以使用双引号包括起来,比如
- 布尔值 "true" -> true
- 字符串 "'hello world'" -> 'hello world'
- 数字 "1" -> 1
- 函数 "now()" -> now()

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -0,0 +1,41 @@
# 分组与项目
分组Group和项目Project是 Databasir 中最基础的概念,它们之间的关系如下图所示
![group-and-project](img/group.png)
## 分组Group)
![group-and-project](img/group-sample.png)
分组是由项目和成员共同组成,它们之间有着非常明确对应关系
- 一个分组下有多个成员(用户)
- 一个分组下有多个项目
每个成员(用户)在所属分组可以承担两种角色,分别是
- 组长:拥有该分组下的所有读写权限
- 组员:拥有该分组下的部分写权限,全部读权限
对于每个用户来说,他可以加入多个分组,在不同的分组承担不同的角色。
Databasir 并没有将分组和企业中的组织或开发中的环境做强行的绑定,你可以灵活的使用它,推荐的做法是
- 如果你的项目数不多,可以使用分组作为环境管理,比如创建 dev、qa、prod 三个分组
- 如果你所在团队很大,可以将分组对应到不同的业务线,比如公共设施组、电商平台组、物流平台组等
## 项目Project)
![img.png](img/project-sample.png)
`Database per Project` 是 Databasir 中的基本概念,见名知意,也就是一个项目其实对应一个数据库。
项目必须建立在某个指定的分组下面,不能独立存在,它是 Databasir 管理的最小单位,主要维护了以下信息
- 对应数据库的连接信息
- 文档同步规则,比如:字段过滤条件、定时同步时间等
- 数据库模型文档所有历史版本数据
- 数据库模型文档的讨论
项目支持手动和自动同步,每次同步时 Databasir 会与项目当前最新版本文档做对比,如果没有结构变更,则不会生成新的版本。

View File

@@ -0,0 +1,65 @@
# 用户角色与权限
## 角色说明
Databasir 将用户分为了 4 种角色,它们分别是
- 系统管理员
- 组长
- 组员
- 游客
每个角色的说明以及可配置数量见下面表格
| 角色 | 说明 | 数量 |
| ---------- | ------------------------------------------------ | ------------------ |
| 系统管理员 | 拥有平台所有权限 | 任意 |
| 组长 | 拥有对应分组下所有读写权限 | 一个分组最多 20 个 |
| 组员 | 拥有对应分组下部分写权限,所有读权限 | 任意 |
| 游客 | 登入用户的默认角色,能够看见所有分组以及项目文档 | 任意 |
## 默认权限
由于创建分组、数据库扩展等功能只有系统管理员才有,建议为平台设置多位系统管理员。
- 分组模块各角色权限详情
| 功能 | 组员 | 组长 | 游客 | 系统管理员 |
|----------| ---- | ---- | ---- | ---------- |
| **分组模块** | 部分 | 全部 | 只读 | 全部 |
| 查看分组 | √ | √ | √ | √ |
| 编辑分组 | x | √ | x | √ |
| 删除分组 | x | √ | x | √ |
| 查看组员 | √ | √ | √ | √ |
| 添加组员 | x | √ | x | √ |
| 删除组员 | x | √ | x | √ |
- 项目模块各角色权限详情
| 功能 | 组员 | 组长 | 游客 | 系统管理员 |
|----------| ---- | ---- | ---- | ---------- |
| **项目模块** | 部分 | 全部 | 只读 | 全部 |
| 查看项目 | √ | √ | √ | √ |
| 创建项目 | √ | √ | x | √ |
| 删除项目 | √ | √ | x | √ |
| 编辑项目 | √ | √ | x | √ |
| 查看讨论 | √ | √ | √ | √ |
| 新增讨论 | √ | √ | x | √ |
| 删除讨论 | x | √ | x | √ |
| 编辑描述 | √ | √ | x | √ |
- 其余模块只有系统管理员才有
| 功能 | 组员 | 组长 | 游客 | 系统管理员 |
|----------| ---- | ---- | ---- | ---------- |
| **用户模块** | x | x | x | √ |
| **数据库管理** | x | x | x | √ |
| **系统邮箱管理** | x | x | x | √ |
| **登录设置** | x | x | x | √ |
| **系统日志** | x | x | x | √ |

View File

@@ -0,0 +1,57 @@
# Docker 部署
[Databasir](https://github.com/vran-dev/databasir) 已经准备好了开箱即用的 Docker Image你只需要简单三步就可以完成一个 Databasir 应用的部署
## 环境要求
1. Docker
2. Mysql 5.7+
## 测活接口
```shell
GET /live
```
返回 200 即表示启动成功
## 部署流程
1. 拉取镜像(更多版本[点击这里](https://registry.hub.docker.com/r/vrantt/databasir)查看)
```shell
docker pull vrantt/databasir:latest
```
2. 在 Mysql 中创建数据库 databasir
```sql
create database databasir;
```
3. 启动镜像,需要指定可用的 Mysql 的连接信息
```shell
docker run -p 8888:8080 --name my-databasir -e DATABASIR_DB_URL=127.0.0.1:3306 -e DATABASIR_DB_USERNAME=root -e DATABASIR_DB_PASSWORD=123456 vrantt/databasir:latest
```
**docker 启动命令参数说明**
| 参数 | 说明 | 必填 |
| ---------------------------------- | ------------------------------------------------------------ | ---- |
| --name my-databasir | 启动的镜像名称 | |
| -e DATABASIR_DB_URL=127.0.0.1:3306 | 数据库连接地址 | 是 |
| -e DATABASIR_DB_USERNAME=root | 数据库连接用户名 | 是 |
| -e DATABASIR_DB_PASSWORD=123456 | 数据库连接密码 | 是 |
| -e DATABASIR_JWT_SECRET=databasir | 生成用户登录 Token 的秘钥,如果部署了多个实例,那多个实例之间的秘钥要保持一致。默认为 UUID | 否 |
| -p 8888:8080 | 将 databasir 的 8080 端口映射到宿主机的 8888 端口 | |
## 登录验证
启动后Databasir 会默认创建一个超级管理员账户
- 用户名:`databasir`
- 密码:`databasir`
这时候访问 http://localhost:8888 进入登录页,输入上面的账号和密码即可成功登入,到此就算部署完成

View File

@@ -0,0 +1,74 @@
# Jar 包部署
## 环境要求
1. Java 11+
2. Mysql 5.7+
## 部署流程
1. 在 [Github RELEASE](https://github.com/vran-dev/databasir/releases) 页面下载最新版应用 Databasir.jar (你也可以选择克隆项目后自行构建)
2. 将 Databasir.jar 上传到服务器
3. 执行启动命令
```java
java -jar databasir.jar --databasir.db.url=127.0.0.1:3306 --databasir.db.username=root --databasir.db.password=123456
```
目前支持以下参数
| 参数名 | 说明 | 是否必传 | 默认值 |
| ----------------------------- | --------------------- | -------- | ------------------------------ |
| databasir.db.url | 数据库地址 | 是 | |
| databasir.db.username | 数据库用户名 | 是 | |
| databasir.db.password | 数据库密码 | 是 | |
| databasir.jwt.secret | 生成登录 Token 的秘钥 | 否 | uuid |
| databasir.db.driver-directory | 自定义驱动的上传目录 | 否 | 项目所在位置的 `drivers/` 目录 |
**注意:**如果部署了多个 databasir 实例,一定要定义 `databasir.jwt.secret` 的值,从而使得多个实例之间的 `databasir.jwt.secret` 保持一致
## 登录验证
应用启动完成后会默认创建 Databasir 管理员用户
- 用户名databasir
- 密码databasir
通过该账号登录应用既可以进行管理
## 配置文件
除了在命令行指定参数启动外,还可以通过配置文件来保存
在 Databasir.jar 所在目录创建 config 目录,并在目录下创建 `application.properties` 配置,配置中配置 MYSQL 的用户名、密码和连接
```properties
# 端口号,默认 8080
server.port=8080
# 数据库用户名
databasir.db.username=root
# 数据库密码
databasir.db.password=123456
# 数据库地址
databasir.db.url=127.0.0.1:3306
# 登录 token 生成秘钥,可选
databasir.jwt.secret=${random.uuid}
```
通过 `java -jar Databasir.jar` 启动应用即可

64
docs/guid/index.md Normal file
View File

@@ -0,0 +1,64 @@
## 项目概览
![](../../databasir.png) 是面向团队的**关系型数据库模型文档管理平台**,旨在通过自动化的方式解决模型文档管理过程中维护成本高、内容更新不及时以及团队协作复杂等问题。
问题反馈https://github.com/vran-dev/databasir/issues
## 在线演示
在线演示:[http://demo.databasir.com](http://demo.databasir.com)
| 账号 | 密码 | 角色 |
| ---- | ------- | ---------- |
| demo | demo123 | 系统管理员 |
| dev | dev123 | 普通 |
<!-- tabs:start -->
#### **微信群**
扫码加入微信群,随时获取第一手更新内容
<img src="https://s2.loli.net/2022/05/04/c2b5O7yEgB6Yvpo.jpg" width="250px" />
#### **公众号**
![qrcode.jpg](https://s2.loli.net/2022/04/22/mZjlG5u4vrXW1SL.jpg)
#### **邮箱**
vran_dev@foxmail.com
<!-- tabs:end -->
## 多图展示
<!-- tabs:start -->
#### **文档同步**
![sync.gif](https://s2.loli.net/2022/04/22/aoiSR1V3MuN67m8.gif)
#### **版本对比**
![](index/diff.gif)
#### **文档导出**
- UML 图片导出
![](index/uml-export.gif)
- 导出 Markdown 格式展示
![](index/markdown-exported.gif)
<!-- tabs:end -->
## 捐赠
开源不易,扶我起来,再写两行!
<img src="img/sponsor.jpg" width="280">

BIN
docs/guid/index/diff.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
docs/guid/index/sync.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@@ -0,0 +1,77 @@
## 文档导出
Databasir 支持多种类型的文档格式导出该功能位于文档详情页面to通过项目列表中点击指定项目的**查看文档**进入
![](img/project-export1.png)
进入文档页面以后,鼠标指向**导出**按钮即可显示出目前支持的文档导出格式
![](img/project-export2.png)
## 版本差异对比
如果成功同步了多个版本的文档,你可以随意的选择版本进行差异对比。
在文档页面,点击**显示版本差异**按钮
![](img/doc-diff1.png)
启用以后会出现一个对比版本的下拉框,选择我们要对比的版本,默认情况下基础版本是最新的,也就是在对比新版本比老版本有什么变化
![](img/doc-diff2.png)
选中版本以后就自动出现了差异标记
- 绿色:标识新增
- 红色:标识删除
- 黄色:标识修改
- 灰色:标识无变化
![](img/doc-diff3.png)
比如下图
- 删除了 document_remark 表
- 修改了 table_column_document、table_document 表
- 新增了 table_foreign_key_document 表
![](img/doc-diff4.png)
切换到修改表的地方,可以查看具体的修改内容,比如下图就展示了
- type 字段的类型由 text 改为了 varchar
- comment 字段的类型由 text 改为了 varchar
![](img/doc-diff5.png)
## 自定义文档模板(即将废弃)
目前 Databasir 的文档主要是以表格形式进行内容展示,包括了以下内容
- 表信息
- 列信息
- 索引信息
- 外键信息
- 触发器信息
这其中除了表信息以外,其他的表格内容都支持自定义表头(默认表头为英文)。
该操作需要拥有系统管理员权限,操作之前需要注意表格头名称的更改是全局的,即所有的项目都会生效。
页面入口位于侧边菜单栏的**文档模板**
![](img/template-edit1.png)
点击就会跳转编辑页面,就能跳转入模板的编辑页。
注意我用红框框起来的表头,这些都是可以编辑的
![](img/template-edit2.png)
比如我们将 Columns 的 `名称` 改为 `列名称` ,只需要点击表头输入新的名称,按下回车即可保存
![](img/template-edit3.png)
回到项目文档页面就可以看见我们做的变更生效了(没生效的话记得重新登陆试一下)
![](img/template-edit4.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,28 @@
# 邮箱设置
Databasir 很多通知会通过邮件的形式进行发送,比如
- 项目版本变更
- 项目新增讨论
- 重置密码
这些通知只有在管理员为系统设置了默认邮箱时才能正常使用。
## 新增邮箱
邮箱的设置入口如下图所示
![img.png](img/email-menu.png)
点击就可以进入邮箱配置页面,目前支持使用 SMTP 协议进行配置。
![img.png](img/email-setting.png)
验证邮箱配置是否成功可以在用户管理列表页中点击**重置密码**,如果邮箱配置正常,那么对应用户的邮箱会收到重置后的新密码
## 重置邮箱
如果想关闭系统的推送,可以**重置邮箱**,这样系统的邮箱配置就会回到初始状态。
重置功能位于邮箱配置页面,点击**重置按钮**即可完成
![img.png](img/email-setting.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -0,0 +1,95 @@
# 分组管理
如果你还不清楚 Databasir 中分组的概念,可以先阅读[分组与项目](/README/group-and-project/index.md)一节
## 创建分组
Note**只有系统管理员才可以创建分组**
在成功登入 Databasir 后就会默认进入**分组列表页**,该页面将会以卡片的形式展示平台中已创建的所有分组。
![](img/group-add1.png)
点击左上角蓝色的 + 号就可以弹窗分组创建页,需要填写三个信息
- 名称:即列表页展示的组名
- 描述:简要描述分组信息
- 组长:该分组的负责人,支持通过名称、邮箱搜索
![](img/group-add2.png)
信息填写完成以后点击确定即可创建成功
![](img/group-add3.png)
## 删除分组
Note只有系统管理员和组长可以删除分组
在分组列表页,将鼠标移到想要删除的分组上面就会在名称左边显现出一个编辑图标
![](img/group-delete1.png)
点击该按钮进入分组编辑页
![](img/group-delete2.png)
点击**确认删除分组**后再次弹出一个警告框,最终确认以后就成功删除该分组了
![](img/group-delete3.png)
## 添加移除成员
Note只有系统管理员和组长可以添加移除成员
成员的管理有两种方式
**一、在分组编辑页管理**
在分组的编辑页面上可以添加或删除组长(仅可增删组长)
添加的过程和前面创建分组时一样,在搜索框搜索用户然后点击即可添加,完成以后记得保存方可生效。
删除分组的话只需要点击组长标签右侧的 x 按钮即可,同样,完成以后记得保存方可生效。
![](img/group-member1.png)
**二、在成员管理页管理**
通过点击分组列表页中的组名可以跳转到分组详情页中,该页面有两个 Tab
- 项目列表
- 分组成员
![](img/group-member2.png)
点击分组成员即可进入成员管理 Tab 页,在该页面我们可以通过点击**移除**按钮将用户移出该分组
![](img/group-member3.png)
通过点击左上角的**添加成员**按钮就可以进入成员选择页面进行添加,可以作为组员添加,也可以作为组长添加,按需选择。
在该页面我们可以通过点击**移除**按钮将用户移出该分组。
![](img/group-member4.png)
## 修改成员角色
Note只有系统管理员和组长可以修改成员角色
如果我们想修改一个用户在分组内的角色,只需要在分组成员 Tab 页进行切换就可以
- 如果该用户是组员,则会出现**升为组长**的按钮
- 如果该用户是组长,则会出现**设为组员**的按钮
![](img/group-role1.png)
组长拥有所属分组的所有读写权限,包括修改其他组长的角色,但是组长无法修改自己的角色

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,149 @@
# 项目管理
如果你还不清楚 Databasir 中分组的概念,可以先阅读[分组与项目](/README/group-and-project/index.md)一节
## 创建项目
项目必须创建在指定分组下面,所以在创建项目前需要先创建分组。
在所属分组中,组员和组长都拥有创建项目的权限,在分组详情页中我们可以点击**新建**按钮开始创建项目
![](img/project-create1.png)
点击以后我们就可以进入项目创建表单页,页面是一个 Tab 页,有**基础配置**和**高级配置**两个 Tab
- 基础配置 Tab项目的名称、数据库连接等配置
- 高级配置 Tab项目的定时同步规则、忽略表和列配置
我们先只关注**基础配置**,这个页面分为两个部分
- 基础信息
- 连接配置
![](img/project-create2.png)
表单大部分内容都不用多说,可能数据库名称和 Schema 名称会让人有点迷惑,我以 mysql、postgresql、sqlserver 为例来说明这两者的区别
| | 数据库名称 | Schema 名称 |
| ---------- | --------------------------------------------------- | --------------------------------------------------- |
| Mysql | 创建数据库时指定的名称 | 对于 Mysql 来说schema 名称和数据库名称是一样的 |
| Postgresql | 创建数据库时指定的名称 | 如果在 DDL 中没有指定Postgresql 默认使用 `public` |
| Sqlserver | 如果在 DDL 中没有指定sqlserver 默认使用 `Master` | 创建 Schema 时指定的名称 |
填完连接信息以后可以通过**测试连接**按钮验证是否能成功连接到数据库,当然,即使连接不成功你也可以先保存下来。
![](img/project-create3.png)
保存完成以后就可以在列表页看见该项目了
![](img/project-create4.png)
## 删除项目
在所属分组内,组长和组员都用有删除项目的权限。
删除项目很简单,只需要在项目列表页的**更多**菜单中点击**删除项目**即可
![](img/project-delete1.png)
删除需要二次确认,请谨慎操作
![](img/project-delete2.png)
## 关注项目
由于每次查看文档都需要先在分组列表页确定分组,然后在项目列表页确定项目,最后才能查看到文档。
对于每个用户来说80% 的时间可能都只是在查阅 20% 的项目文档,所以缩减浏览路径将会大大的提升用户体验。
**关注项目**这个功能就是在这样的背景之下产生,它位于首页 Tab平台会记住用户最近在项目分组和关注项目这两个 Tab 的选择。
比如这次点击了关注项目这个 Tab下次回到首页以后那么默认选中的就是关注项目 Tab 页
![](img/project-fav1.png)
那么如何关注项目呢?
只需要在项目列表页的**更多**菜单中点击对应项目的**关注项目**按钮即可
![](img/project-fav2.png)
关注完成以后,项目名称前面会多一个 ☆ 标记,回到首页的关注项目 Tab 页,此时也能看到我们的关注项目了。
![](img/project-fav3.png)
通过点击关注项目列表中的分组名称可以快速回到该项目所属的分组详情页中去。
如果要取消关注,只需要在更多中点击**取消关注**即可
![](img/project-fav4.png)
## 手动同步
项目创建完成以后,就可以进入文档页面同步并生成文档了,在更多中点击**查看文档**按钮,或者你也可以直接点击项目名称快捷跳转
![](img/project-sync1.png)
初次进入文档页面时,会显示空内容,这时我们需要手动点击一下
![](img/project-sync2.png)
同步完成以后,系统会自动刷新数据,如下图所示
![](img/project-sync3.png)
如果有新的内容产生,那么该项目所属分组下的组员都将收到邮件通知
![img.png](img/project-sync4.png)
在该页面仍可以点击同步按钮同步文档,**但 Databasir 会自动与当前最新版本的文档做对比,如果没有结构变更,不会创建新的版本内容。**
## 定时同步
每次手动同步文档需要依赖人做操作,这可能造成文档更新的不及时,定时同步则可以解决这个问题。
目前 Databasir 支持按项目配置定时同步规则,时间周期配置使用 cron 表达式。
配置页面位于项目编辑页,该页面有**基础配置**和**高级配置**两个 Tab 页,选择高级配置切换页面后就可以看到定时同步的切换按钮,该功能默认是关闭的
![image-20220321095725657](img/project-schedule1.png)
启用以后会要求再输入一个 cron 表达式,比如我这里配置一个每十分钟执行一次的表达式:`0 0/10 * * * ? `,配置完成后点击保存就生效了
![](img/project-schedule2.png)
同步记录可以在项目日志里面查看
![](img/project-schedule3.png)
## 忽略表、列同步
模型文档同步中经常需要过滤某些表或字段,在 Databasir 中我们可以通过正则表达式的方式来进行规则配置。
配置页面位于项目编辑页,该页面有**基础配置**和**高级配置**两个 Tab 页,选中高级配置即可看见忽略配置项
![](img/project-ignore1.png)
下面我配置了几个忽略规则
表忽略规则
- `flyway.*` 忽略以 flyway 开头命名的表
- `demo.*`:忽略以 demo 开头命名的表
- `.*[1-9]$`:忽略以数字 1~9 结尾的表名,这种情况常用于分库分表的场景
列忽略规则
- `create_at.*`:忽略以 create_at 开头命名的列
![](img/project-ignore2.png)
点击保存即可完成配置

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -0,0 +1,60 @@
# 用户管理
用户管理模块只有系统管理员有权限执行操作
![](img/user-management.png)
## 新增用户
在用户中心,点击左上角的 + 号即可创建一个新用户
![](img/user-create1.png)
进入表单页后,需要填写用户的基础信息,并为该用户设置一个密码,默认状态下是未启用状态,需要手动启用。
Databasir 目前不会校验邮箱的真实性,请确保邮箱填写正确
![](img/user-create2.png)
点击保存以后就可以在列表页看见刚刚新增的用户了
![](img/user-create3.png)
如果已经配置了系统邮箱,那么新建账户对应的信息将通过邮件通知给用户
![](img/user-create4.png)
## 用户详情
有时候会想查看某个用户加入了哪些分组以及他的一些详细信息,这时候可以通过用户详情查看,该功能位于用户列表页
![](img/user-detail1.png)
点击邮箱即可看到详情页,里面会展示用户的详细信息,包括加入的分组,在所属分组承担的角色等。
通过点击分组还可以快捷跳转到分组详情页面
![](img/user-detail2.png)
## 修改密码
Databasir 目前支持两种修改密码的方式
- 第一种:系统管理员为指定用户重置密码,新密码通过邮件下发
- 第二种:登录用户通过旧密码确认来修改
第一种方式位于用户中心页面,只有系统管理员才可以进入并有权限执行**重置密码**
![](img/user-pwd1.png)
第二种方式位于个人主页,可以通过右上角的头像进入,也可以通过侧边栏进入
![](img/user-pwd2.png)
进入个人主页以后,点击修改密码,就可以通过旧密码验证的方式修改为新密码了
![](img/user-pwd3.png)