From 62369f2cb09183670dd6471e1680e804dd694c11 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Mon, 5 Dec 2022 13:17:55 -0900 Subject: [PATCH] remove repo for document tokens --- .../data/repo/repo_document_tokens.go | 68 -------- .../data/repo/repo_document_tokens_test.go | 150 ------------------ backend/internal/data/repo/repos_all.go | 2 - 3 files changed, 220 deletions(-) delete mode 100644 backend/internal/data/repo/repo_document_tokens.go delete mode 100644 backend/internal/data/repo/repo_document_tokens_test.go diff --git a/backend/internal/data/repo/repo_document_tokens.go b/backend/internal/data/repo/repo_document_tokens.go deleted file mode 100644 index 018ea61..0000000 --- a/backend/internal/data/repo/repo_document_tokens.go +++ /dev/null @@ -1,68 +0,0 @@ -package repo - -import ( - "context" - "time" - - "github.com/google/uuid" - "github.com/hay-kot/homebox/backend/internal/data/ent" - "github.com/hay-kot/homebox/backend/internal/data/ent/documenttoken" -) - -// DocumentTokensRepository is a repository for Document entity -type DocumentTokensRepository struct { - db *ent.Client -} - -type ( - DocumentToken struct { - ID uuid.UUID `json:"-"` - TokenHash []byte `json:"tokenHash"` - ExpiresAt time.Time `json:"expiresAt"` - DocumentID uuid.UUID `json:"documentId"` - } - - DocumentTokenCreate struct { - TokenHash []byte `json:"tokenHash"` - DocumentID uuid.UUID `json:"documentId"` - ExpiresAt time.Time `json:"expiresAt"` - } -) - -var ( - mapDocumentTokenErr = mapTErrFunc(mapDocumentToken) -) - -func mapDocumentToken(e *ent.DocumentToken) DocumentToken { - return DocumentToken{ - ID: e.ID, - TokenHash: e.Token, - ExpiresAt: e.ExpiresAt, - DocumentID: e.Edges.Document.ID, - } -} - -func (r *DocumentTokensRepository) Create(ctx context.Context, data DocumentTokenCreate) (DocumentToken, error) { - result, err := r.db.DocumentToken.Create(). - SetDocumentID(data.DocumentID). - SetToken(data.TokenHash). - SetExpiresAt(data.ExpiresAt). - Save(ctx) - - if err != nil { - return DocumentToken{}, err - } - - return mapDocumentTokenErr(r.db.DocumentToken.Query(). - Where(documenttoken.ID(result.ID)). - WithDocument(). - Only(ctx)) -} - -func (r *DocumentTokensRepository) PurgeExpiredTokens(ctx context.Context) (int, error) { - return r.db.DocumentToken.Delete().Where(documenttoken.ExpiresAtLT(time.Now())).Exec(ctx) -} - -func (r *DocumentTokensRepository) Delete(ctx context.Context, id uuid.UUID) error { - return r.db.DocumentToken.DeleteOneID(id).Exec(ctx) -} diff --git a/backend/internal/data/repo/repo_document_tokens_test.go b/backend/internal/data/repo/repo_document_tokens_test.go deleted file mode 100644 index 6646eca..0000000 --- a/backend/internal/data/repo/repo_document_tokens_test.go +++ /dev/null @@ -1,150 +0,0 @@ -package repo - -import ( - "context" - "testing" - "time" - - "github.com/google/uuid" - "github.com/hay-kot/homebox/backend/internal/data/ent" - "github.com/hay-kot/homebox/backend/internal/data/ent/documenttoken" - "github.com/stretchr/testify/assert" -) - -func TestDocumentTokensRepository_Create(t *testing.T) { - entities := useDocs(t, 1) - doc := entities[0] - expires := fk.Time() - - type args struct { - ctx context.Context - data DocumentTokenCreate - } - tests := []struct { - name string - args args - want *ent.DocumentToken - wantErr bool - }{ - { - name: "create document token", - args: args{ - ctx: context.Background(), - data: DocumentTokenCreate{ - DocumentID: doc.ID, - TokenHash: []byte("token"), - ExpiresAt: expires, - }, - }, - want: &ent.DocumentToken{ - Edges: ent.DocumentTokenEdges{ - Document: &ent.Document{ - ID: doc.ID, - }, - }, - Token: []byte("token"), - ExpiresAt: expires, - }, - wantErr: false, - }, - { - name: "create document token with empty token", - args: args{ - ctx: context.Background(), - data: DocumentTokenCreate{ - DocumentID: doc.ID, - TokenHash: []byte(""), - ExpiresAt: expires, - }, - }, - want: nil, - wantErr: true, - }, - { - name: "create document token with empty document id", - args: args{ - ctx: context.Background(), - data: DocumentTokenCreate{ - DocumentID: uuid.Nil, - TokenHash: []byte("token"), - ExpiresAt: expires, - }, - }, - want: nil, - wantErr: true, - }, - } - - ids := make([]uuid.UUID, 0, len(tests)) - - t.Cleanup(func() { - for _, id := range ids { - _ = tRepos.DocTokens.Delete(context.Background(), id) - } - }) - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - - got, err := tRepos.DocTokens.Create(tt.args.ctx, tt.args.data) - if (err != nil) != tt.wantErr { - t.Errorf("DocumentTokensRepository.Create() error = %v, wantErr %v", err, tt.wantErr) - return - } - if tt.wantErr { - return - } - - assert.Equal(t, tt.want.Token, got.TokenHash) - assert.WithinDuration(t, tt.want.ExpiresAt, got.ExpiresAt, time.Duration(1)*time.Second) - assert.Equal(t, tt.want.Edges.Document.ID, got.DocumentID) - }) - - } -} - -func useDocTokens(t *testing.T, num int) []DocumentToken { - entity := useDocs(t, 1)[0] - - results := make([]DocumentToken, 0, num) - - ids := make([]uuid.UUID, 0, num) - t.Cleanup(func() { - for _, id := range ids { - _ = tRepos.DocTokens.Delete(context.Background(), id) - } - }) - - for i := 0; i < num; i++ { - e, err := tRepos.DocTokens.Create(context.Background(), DocumentTokenCreate{ - DocumentID: entity.ID, - TokenHash: []byte(fk.Str(10)), - ExpiresAt: fk.Time(), - }) - - assert.NoError(t, err) - results = append(results, e) - ids = append(ids, e.ID) - } - - return results -} - -func TestDocumentTokensRepository_PurgeExpiredTokens(t *testing.T) { - entities := useDocTokens(t, 2) - - // set expired token - tRepos.DocTokens.db.DocumentToken.Update(). - Where(documenttoken.ID(entities[0].ID)). - SetExpiresAt(time.Now().Add(-time.Hour)). - ExecX(context.Background()) - - count, err := tRepos.DocTokens.PurgeExpiredTokens(context.Background()) - assert.NoError(t, err) - assert.Equal(t, 1, count) - - all, err := tRepos.DocTokens.db.DocumentToken.Query().All(context.Background()) - assert.NoError(t, err) - assert.Len(t, all, 1) - assert.Equal(t, entities[1].ID, all[0].ID) -} diff --git a/backend/internal/data/repo/repos_all.go b/backend/internal/data/repo/repos_all.go index e726e88..5ca4d3e 100644 --- a/backend/internal/data/repo/repos_all.go +++ b/backend/internal/data/repo/repos_all.go @@ -11,7 +11,6 @@ type AllRepos struct { Labels *LabelRepository Items *ItemsRepository Docs *DocumentRepository - DocTokens *DocumentTokensRepository Attachments *AttachmentRepo } @@ -24,7 +23,6 @@ func New(db *ent.Client, root string) *AllRepos { Labels: &LabelRepository{db}, Items: &ItemsRepository{db}, Docs: &DocumentRepository{db, root}, - DocTokens: &DocumentTokensRepository{db}, Attachments: &AttachmentRepo{db}, } }