-
Notifications
You must be signed in to change notification settings - Fork 18
wxa edited this page Jun 8, 2017
·
5 revisions
- 站点页面存储服务,需支持gitlab,github等多种类型存储服务
- 单个站点可单独配置存储服务
- 站点页面需维护版本信息,可以回滚之前任意版本
- 站点页面可以私有化,禁止没有权限用户读取和查看
- 单个站点页面可以多用户协同编辑
- 使用现有gitlab,github服务做为存储服务器实现方式,并以其提供的api接口编写客户端实现. 若其它存储类需求可编写相应的服务端和客户端实现,解决多类型存储服务器需求
- gitlab,github仓库和站点一一对应可实现站点单独配置需求
- gitlab, github文件拥有版本信息,支持内容回退
- gitlab, github支持私有化
- gitlab, github支持多用户协同
- 第三方gitlab, github服务提供api存在请求频率限制,具体参考官方相应文档
- gitlab, github等类型不同服务提供api的不同,客户端需分别对应实现
- gitlab, github等服务api的请求存在权限问题,需先认证. 存在用户名密码和token两种认证方式选择
数据源 => 存储服务器 站点数据源 => 单个站点配置的数据源
-- 用户数据源表
function data_source:ctor()
self:addfield("username", "string") -- 用户名
self:addfield("name", "string") -- 数据源名
self:addfield("type", "string") -- 类型 gitlab github
self:addfield("dataSourceUserId", "number") -- 数据源UserID
self:addfield("dataSourceUsername", "string") -- 数据源用户名
self:addfield("dataSourceToken", "string") -- 数据源Token 采用token认证
self:addfield("apiBaseUrl", "string") -- api url prefix
self:addfield("rawBaseUrl", "string") -- raw url prefix
end
-- 用户站点数据源表
function site_data_source:ctor()
self:addfield("username", "string") -- 用户名
self:addfield("sitename", "string") -- 站点名
self:addfield("dataSourceName", "number") -- 数据源名 关联 data_source表
self:addfield("visibility", "string") -- 是否为私有项目 private - 是 public - 否
self:addfield("projectName", "string") -- 项目名
self:addfield("projectId", "number") -- 项目id
self:addfield("rootPath", "string") -- 项目根路径
self:addfield("lastCommitId", "string") -- 最后一次提交id cdn加速
self:addfield("lastCommitIdUpdateTime", "number") -- 最后一次提交id更新时间 cdn加速
self:addfield("updateFlag", "string") -- 谁做了最后的更新
end
数据源表:鉴于用户可配置多个数据源(文件存储服务器),故建立数据源表与之对应
表字段type: 表明数据类型
表字段dataSourceToken表明采用Oauth2的认证方式,避免用户配置账号信息
表字段name为数据源名称用做用户可识别的key,有助于用户对数据源的增删改
其余api辅助字段
站点数据源表: 单站点的可配置性该表的诞生,此表基于数据源表之上做进一步配置. 简言之: 数据源表决定服务器的选择, 站点数据源表决定服务器上仓库对象选择.
表字段dataSourceName: 关联data_source表name字段, 决定选择哪个具体的服务器
表字段visibility: 站点私有化实现
表字段rootPath: 存储的根目录
表字段lastCommitId: 用commitId代替master获取文件内容, 便于cdn长期缓存
表字段lastCommitIdUpdateTime,updateFlag: 由于lastCommitId通过存储推送获得,存在伪造,延迟等问题,且api请求不易过于频繁, lastCommitIdUpdateTime控制更新间隔解决推送延迟导致lastCommitId, updateFlag解决位置伪造推送事件问题
其它字段辅助实现