Skip to content

Commit d7170b7

Browse files
authored
Merge pull request #49 from jiaozifs/feat/support_tree_property
feat: add tree node properties
2 parents af4872d + 0cef941 commit d7170b7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+4960
-768
lines changed

api/api_impl/server.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"net"
77
"net/http"
88

9+
"github.com/jiaozifs/jiaozifs/auth/crypt"
10+
911
"github.com/MadAppGang/httplog"
1012
"github.com/rs/cors"
1113

@@ -32,7 +34,7 @@ var log = logging.Logger("rpc")
3234

3335
const APIV1Prefix = "/api/v1"
3436

35-
func SetupAPI(lc fx.Lifecycle, apiConfig *config.APIConfig, sessionStore sessions.Store, repo models.IRepo, controller APIController) error {
37+
func SetupAPI(lc fx.Lifecycle, apiConfig *config.APIConfig, secretStore crypt.SecretStore, sessionStore sessions.Store, repo models.IRepo, controller APIController) error {
3638
swagger, err := api.GetSwagger()
3739
if err != nil {
3840
return err
@@ -64,7 +66,7 @@ func SetupAPI(lc fx.Lifecycle, apiConfig *config.APIConfig, sessionStore session
6466
},
6567
SilenceServersWarning: true,
6668
}),
67-
auth.Middleware(swagger, nil, nil, repo.UserRepo(), sessionStore),
69+
auth.Middleware(swagger, nil, secretStore, repo.UserRepo(), sessionStore),
6870
)
6971

7072
raw, err := api.RawSpec()

api/jiaozifs.gen.go

Lines changed: 64 additions & 65 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/swagger.yml

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,23 @@ components:
157157
required:
158158
- Hash
159159
- Type
160+
- CheckSum
161+
- Properties
160162
- Size
161163
- CreatedAt
162164
- UpdatedAt
163165
properties:
164166
Hash:
165167
type: string
168+
CheckSum:
169+
type: string
166170
Type:
167171
type: integer
168172
format: int8
173+
Properties:
174+
type: object
175+
additionalProperties:
176+
type: string
169177
Size:
170178
type: integer
171179
format: int64
@@ -208,9 +216,6 @@ components:
208216
properties:
209217
Hash:
210218
type: string
211-
Type:
212-
type: integer
213-
format: int8
214219
Author:
215220
$ref: "#/components/schemas/Signature"
216221
Committer:
@@ -238,17 +243,27 @@ components:
238243
type: string
239244
Hash:
240245
type: string
241-
Mode:
242-
type: integer
243-
format: uint32
246+
IsDir:
247+
type: boolean
244248
TreeNode:
245249
type: object
250+
required:
251+
- Hash
252+
- Type
253+
- Properties
254+
- SubObjects
255+
- CreatedAt
256+
- UpdatedAt
246257
properties:
247258
Hash:
248259
type: string
249260
Type:
250261
type: integer
251262
format: int8
263+
Properties:
264+
type: object
265+
additionalProperties:
266+
type: string
252267
SubObjects:
253268
type: array
254269
items:

auth/session_store.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ import (
66
"github.com/jiaozifs/jiaozifs/config"
77
)
88

9-
func NewSessionStore(authConfig *config.AuthConfig) sessions.Store {
10-
sstore := crypt.NewSecretStore(authConfig.SecretKey)
11-
return sessions.NewCookieStore(sstore.SharedSecret())
9+
func NewSessionStore(secretStrore crypt.SecretStore) sessions.Store {
10+
return sessions.NewCookieStore(secretStrore.SharedSecret())
11+
}
12+
13+
func NewSectetStore(authConfig *config.AuthConfig) crypt.SecretStore {
14+
return crypt.NewSecretStore(authConfig.SecretKey)
1215
}

cmd/daemon.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package cmd
33
import (
44
"context"
55

6+
"github.com/jiaozifs/jiaozifs/auth/crypt"
7+
68
"github.com/jiaozifs/jiaozifs/version"
79

810
"github.com/gorilla/sessions"
@@ -65,6 +67,7 @@ var daemonCmd = &cobra.Command{
6567

6668
fx_opt.Override(fx_opt.NextInvoke(), migrations.MigrateDatabase),
6769
//api
70+
fx_opt.Override(new(crypt.SecretStore), auth.NewSectetStore),
6871
fx_opt.Override(new(sessions.Store), auth.NewSessionStore),
6972
fx_opt.Override(fx_opt.NextInvoke(), apiImpl.SetupAPI),
7073
)

controller/commit_ctl.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ func (commitCtl CommitController) GetEntriesInCommit(ctx context.Context, w *api
3333
return
3434
}
3535

36-
commit, err := commitCtl.Repo.ObjectRepo().Get(ctx, models.NewGetObjParams().SetHash(ref.CommitHash))
36+
commit, err := commitCtl.Repo.CommitRepo().Commit(ctx, ref.CommitHash)
3737
if err != nil {
3838
w.Error(err)
3939
return
4040
}
4141

42-
workTree, err := versionmgr.NewWorkTree(ctx, commitCtl.Repo.ObjectRepo(), models.NewRootTreeEntry(commit.TreeHash))
42+
workTree, err := versionmgr.NewWorkTree(ctx, commitCtl.Repo.FileTreeRepo(), models.NewRootTreeEntry(commit.TreeHash))
4343
if err != nil {
4444
w.Error(err)
4545
return
@@ -75,7 +75,7 @@ func (commitCtl CommitController) GetCommitDiff(ctx context.Context, w *api.Jiao
7575
return
7676
}
7777

78-
bashCommit, err := commitCtl.Repo.ObjectRepo().Commit(ctx, bashCommitHash)
78+
bashCommit, err := commitCtl.Repo.CommitRepo().Commit(ctx, bashCommitHash)
7979
if err != nil {
8080
w.Error(err)
8181
return

controller/object_ctl.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ func (oct ObjectController) DeleteObject(ctx context.Context, w *api.JiaozifsRes
6161
w.Error(err)
6262
return
6363
}
64-
commit, err := oct.Repo.ObjectRepo().Commit(ctx, ref.CommitHash)
64+
commit, err := oct.Repo.CommitRepo().Commit(ctx, ref.CommitHash)
6565
if err != nil {
6666
w.Error(err)
6767
return
6868
}
6969

70-
workTree, err := versionmgr.NewWorkTree(ctx, oct.Repo.ObjectRepo(), models.NewRootTreeEntry(commit.TreeHash))
70+
workTree, err := versionmgr.NewWorkTree(ctx, oct.Repo.FileTreeRepo(), models.NewRootTreeEntry(commit.TreeHash))
7171
if err != nil {
7272
w.Error(err)
7373
return
@@ -111,13 +111,13 @@ func (oct ObjectController) GetObject(ctx context.Context, w *api.JiaozifsRespon
111111
w.Error(err)
112112
return
113113
}
114-
commit, err := oct.Repo.ObjectRepo().Commit(ctx, ref.CommitHash)
114+
commit, err := oct.Repo.CommitRepo().Commit(ctx, ref.CommitHash)
115115
if err != nil {
116116
w.Error(err)
117117
return
118118
}
119119

120-
workTree, err := versionmgr.NewWorkTree(ctx, oct.Repo.ObjectRepo(), models.NewRootTreeEntry(commit.TreeHash))
120+
workTree, err := versionmgr.NewWorkTree(ctx, oct.Repo.FileTreeRepo(), models.NewRootTreeEntry(commit.TreeHash))
121121
if err != nil {
122122
w.Error(err)
123123
return
@@ -195,14 +195,14 @@ func (oct ObjectController) HeadObject(ctx context.Context, w *api.JiaozifsRespo
195195
return
196196
}
197197

198-
commit, err := oct.Repo.ObjectRepo().Commit(ctx, ref.CommitHash)
198+
commit, err := oct.Repo.CommitRepo().Commit(ctx, ref.CommitHash)
199199
if err != nil {
200200
w.Error(err)
201201
return
202202
}
203203

204-
objRepo := oct.Repo.ObjectRepo()
205-
treeOp, err := versionmgr.NewWorkTree(ctx, oct.Repo.ObjectRepo(), models.NewRootTreeEntry(commit.TreeHash))
204+
fileRepo := oct.Repo.FileTreeRepo()
205+
treeOp, err := versionmgr.NewWorkTree(ctx, fileRepo, models.NewRootTreeEntry(commit.TreeHash))
206206
if err != nil {
207207
w.Error(err)
208208
return
@@ -220,7 +220,7 @@ func (oct ObjectController) HeadObject(ctx context.Context, w *api.JiaozifsRespo
220220

221221
objectWithName := existNodes[len(existNodes)-1]
222222

223-
blob, err := objRepo.Blob(ctx, objectWithName.Node().Hash)
223+
blob, err := fileRepo.Blob(ctx, objectWithName.Node().Hash)
224224
if err != nil {
225225
w.Error(err)
226226
return
@@ -307,12 +307,12 @@ func (oct ObjectController) UploadObject(ctx context.Context, w *api.JiaozifsRes
307307
return err
308308
}
309309

310-
workingTree, err := versionmgr.NewWorkTree(ctx, dRepo.ObjectRepo(), models.NewRootTreeEntry(stash.CurrentTree))
310+
workingTree, err := versionmgr.NewWorkTree(ctx, dRepo.FileTreeRepo(), models.NewRootTreeEntry(stash.CurrentTree))
311311
if err != nil {
312312
return err
313313
}
314314

315-
blob, err := workingTree.WriteBlob(ctx, oct.BlockAdapter, reader, r.ContentLength, block.PutOpts{})
315+
blob, err := workingTree.WriteBlob(ctx, oct.BlockAdapter, reader, r.ContentLength, models.DefaultLeafProperty())
316316
if err != nil {
317317
return err
318318
}

controller/repository_ctl.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,14 @@ func (repositoryCtl RepositoryController) GetCommitsInRepository(ctx context.Con
186186
return
187187
}
188188

189-
commit, err := repositoryCtl.Repo.ObjectRepo().Commit(ctx, ref.CommitHash)
189+
commit, err := repositoryCtl.Repo.CommitRepo().Commit(ctx, ref.CommitHash)
190190
if err != nil {
191191
w.Error(err)
192192
return
193193
}
194194

195195
var commits []api.Commit
196-
iter := versionmgr.NewCommitPreorderIter(versionmgr.NewCommitNode(ctx, commit, repositoryCtl.Repo.ObjectRepo()), nil, nil)
196+
iter := versionmgr.NewCommitPreorderIter(versionmgr.NewCommitNode(ctx, commit, repositoryCtl.Repo.CommitRepo()), nil, nil)
197197
for {
198198
commit, err := iter.Next()
199199
if err == nil {
@@ -215,7 +215,6 @@ func (repositoryCtl RepositoryController) GetCommitsInRepository(ctx context.Con
215215
Message: modelCommit.Message,
216216
ParentHashes: hash.HexArrayOfHashes(modelCommit.ParentHashes...),
217217
TreeHash: modelCommit.TreeHash.Hex(),
218-
Type: int8(modelCommit.Type),
219218
UpdatedAt: modelCommit.UpdatedAt,
220219
})
221220
continue

0 commit comments

Comments
 (0)