Skip to content

Commit 9a3e415

Browse files
committed
Fix remove the repo api.
1 parent 047b575 commit 9a3e415

File tree

7 files changed

+25
-11
lines changed

7 files changed

+25
-11
lines changed

api-doc/repos.http

+10
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ Content-Type: {{contentType}}
8686

8787
GET {{baseUrl}}/{{username}}/{{repo2}}/raw/{{ref}}/{{filepath}}
8888

89+
### Add Repo
90+
91+
POST {{baseUrl}}/api/user/repos
92+
Content-Type: {{contentType}}
93+
94+
{
95+
"name": "test",
96+
"description": ""
97+
}
98+
8999
### Remove Repo
90100

91101
@repoTest = test

conf/sequelize.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,4 @@ Models.namespaces.belongsTo(Models.users, { as: 'owner', foreignKey: 'owner_id'
4343
Models.projects.belongsTo(Models.namespaces, { as: 'namespace', foreignKey: 'namespace_id' });
4444
Models.projects.belongsTo(Models.users, { as: 'owner', foreignKey: 'creator_id' });
4545

46-
module.exports = Models;
46+
module.exports = Models;

src/controller/git/repos/index.js

+2-6
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ module.exports = {
149149
blob.free();
150150
tree.free();
151151
} catch (err) {
152-
console.log('err:', err);
153152
ctx.response.status = err.statusCode || err.status || 500;
154153
ctx.body = { message: err.message, ...err }
155154
}
@@ -160,18 +159,17 @@ module.exports = {
160159
const { reposPath } = ctx.state.conf;
161160
repo = repo.replace(/.git$/, '');
162161
let transaction;
163-
164162
try {
165163
// 托管事务
166164
transaction = await Models.sequelize.transaction();
167165
const namespaces = await Models.namespaces.findOne({ where: { name: owner }, transaction });
168166
if (!namespaces || !namespaces.id) ctx.throw(404, 'Owner does not exist!');
169167
const projects = await Models.projects.findOne({ where: { name: repo, namespace_id: namespaces.id }, transaction });
170168
if (!projects || !projects.id) ctx.throw(404, 'Repo does not exist!');
171-
// await Models.projects.destroy({ where: { id: 1 }});
172-
await Models.projects.destroy({ where: { namespace_id: namespaces.id, name: repo }, force: true, transaction });
173169
// 删除用户创建仓库的记录
174170
await Models.user_interacted_projects.destroy({ where: { project_id: projects.id, creator_id: namespaces.owner_id }, transaction });
171+
// 删除仓库信息
172+
await Models.projects.destroy({ where: { name: repo }, transaction });
175173
// remove repo
176174
await removeDir(PATH.join(reposPath, owner, `${repo}.git`));
177175
// transaction commit 事务提交
@@ -206,11 +204,9 @@ module.exports = {
206204
where: { id },
207205
include: [{ model: Models.users, as: 'owner', attributes: { exclude: ['password'] } }]
208206
});
209-
210207
const { reposPath } = ctx.state.conf;
211208
const currentRepoPath = PATH.join(reposPath, projects.namespace.name, `${projects.name}.git`);
212209
const gitRepo = await Git.Repository.open(currentRepoPath);
213-
214210
// 空仓库返回 README.md 说明内容
215211
let emptyRepoReadme = await readFile(PATH.join(__dirname, 'EmptyRepo.md'));
216212
if (gitRepo.isEmpty() === 1) {

src/model/namespaces.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ module.exports = function (sequelize, DataTypes) {
1818
type: DataTypes.STRING,
1919
allowNull: false,
2020
references: {
21-
model: 'users'
21+
model: 'users',
22+
key: 'id'
2223
},
2324
comment: '创建者id'
2425
},
@@ -60,6 +61,7 @@ module.exports = function (sequelize, DataTypes) {
6061
comment: '项目表',
6162
updatedAt: 'updated_at',
6263
createdAt: 'created_at',
64+
underscored: true,
6365
freezeTableName: true
6466
});
6567
};

src/model/projects.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@ module.exports = function (sequelize, DataTypes) {
2020
namespace_id: {
2121
type: DataTypes.INTEGER,
2222
references: {
23-
model: 'namespaces'
23+
model: 'namespaces',
24+
key: 'id'
2425
},
2526
allowNull: false,
2627
comment: '命名空间,每个项目创建一个单独的ID,组织或者用户'
2728
},
2829
creator_id: {
2930
type: DataTypes.INTEGER,
3031
references: {
31-
model: 'users'
32+
model: 'users',
33+
key: 'id'
3234
},
3335
allowNull: false,
3436
comment: '创建的用户ID'

src/model/user_interacted_projects.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ module.exports = function (sequelize, DataTypes) {
1717
comment: '用户ID'
1818
},
1919
}, {
20-
comment: '用户对应的项目隐射表'
20+
comment: '用户对应的项目隐射表',
21+
underscored: true,
2122
});
2223
// http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-removeAttribute
2324
// Sequelize does not create id primary key

src/model/users.js

+3
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ module.exports = function (sequelize, DataTypes) {
143143
comment: '用户表',
144144
updatedAt: 'updated_at',
145145
createdAt: 'created_at',
146+
// 不允许逻辑删除
147+
// paranoid: true,
148+
underscored: true,
146149
freezeTableName: true
147150
});
148151
};

0 commit comments

Comments
 (0)