From 80dd164fdeb730a0dc58ba0a25a228e7c659ec21 Mon Sep 17 00:00:00 2001 From: m Date: Thu, 3 Sep 2026 20:38:47 +0200 Subject: [PATCH] base creation --- backend/api/documents.go | 4 +++ backend/config/config.go | 55 +++++++++++++++++++++++++++++ backend/{ => entities}/documents.go | 11 ++++-- backend/entities/entities.go | 1 + backend/entities/users.go | 11 ++++++ backend/main.go | 11 ++++++ backend/main_test.go | 10 +++--- backend/services/move.go | 29 +++++++++++++++ backend/services/move_test.go | 24 +++++++++++++ backend/services/services.go | 33 +++++++++++++++++ backend/services/upload.go | 5 +++ backend/users.go | 11 ------ 12 files changed, 187 insertions(+), 18 deletions(-) create mode 100644 backend/api/documents.go create mode 100644 backend/config/config.go rename backend/{ => entities}/documents.go (75%) create mode 100644 backend/entities/entities.go create mode 100644 backend/entities/users.go create mode 100644 backend/main.go create mode 100644 backend/services/move.go create mode 100644 backend/services/move_test.go create mode 100644 backend/services/services.go create mode 100644 backend/services/upload.go delete mode 100644 backend/users.go diff --git a/backend/api/documents.go b/backend/api/documents.go new file mode 100644 index 0000000..57523e6 --- /dev/null +++ b/backend/api/documents.go @@ -0,0 +1,4 @@ +package api + +type API struct { +} diff --git a/backend/config/config.go b/backend/config/config.go new file mode 100644 index 0000000..02c96d2 --- /dev/null +++ b/backend/config/config.go @@ -0,0 +1,55 @@ +package config + +import ( + "fmt" + "log" + "os" + "strconv" + + "github.com/joho/godotenv" +) + +type ApplicationConfig struct { + Port int64 +} + +func LoadApplicationConfig() (error, *ApplicationConfig) { + + err := godotenv.Load() + + if err != nil { + log.Fatal("Error loading .env file") + } + + err, portString := getVar("PORT", "8080", true) + if err != nil { + return err, nil + } + + port, err := strconv.ParseInt(portString, 10, 64) + if err != nil { + return err, nil + } + + return nil, &ApplicationConfig{ + Port: port, + } + +} + +func getVar(varName string, defaultValue string, isRequired bool) (error, string) { + varValue := os.Getenv(varName) + + if varValue == "" { + + if isRequired { + return fmt.Errorf("%s is missing and required : ", varName), "" + } + + return nil, defaultValue + + } + + return nil, varValue + +} diff --git a/backend/documents.go b/backend/entities/documents.go similarity index 75% rename from backend/documents.go rename to backend/entities/documents.go index 9119aa2..8d2985c 100644 --- a/backend/documents.go +++ b/backend/entities/documents.go @@ -1,14 +1,19 @@ -package main +package entities -import "fmt" +import ( + "fmt" +) type Document struct { + DocumentUUID *string DocumentName string DocumentType int } const ( - ERROR_DOCUMENT_TYPE = "ERROR_DOCUMENT_TYPE" + ERROR_DOCUMENT_TYPE = "ERROR_DOCUMENT_TYPE" + ERROR_DOCUMENT_MOVE = "ERROR_DOCUMENT_MOVE" + ERROR_DOCUMENT_NOT_PERCISTED = "ERROR_DOCUMENT_NOT_PERCISTED" ) const ( diff --git a/backend/entities/entities.go b/backend/entities/entities.go new file mode 100644 index 0000000..1899b98 --- /dev/null +++ b/backend/entities/entities.go @@ -0,0 +1 @@ +package entities diff --git a/backend/entities/users.go b/backend/entities/users.go new file mode 100644 index 0000000..f48ec6b --- /dev/null +++ b/backend/entities/users.go @@ -0,0 +1,11 @@ +package entities + +type User struct { + Username string +} + +func NewUser(username string) (error, *User) { + return nil, &User{ + Username: username, + } +} diff --git a/backend/main.go b/backend/main.go new file mode 100644 index 0000000..30cbdd2 --- /dev/null +++ b/backend/main.go @@ -0,0 +1,11 @@ +package main + +func main() { + + // err, config := config.LoadApplicationConfig() + + // if err != nil { + // log.Fatalln(err) + // } + +} diff --git a/backend/main_test.go b/backend/main_test.go index 5d3a0b5..ad00cff 100644 --- a/backend/main_test.go +++ b/backend/main_test.go @@ -3,16 +3,18 @@ package main import ( "fmt" "testing" + + "github.com/vaultdrop/backend/entities" ) func TestUserCreation(t *testing.T) { - err, userAntoine := NewUser("antoine") + err, userAntoine := entities.NewUser("antoine") if err != nil { t.Errorf(`Error creating antoine user %v`, err) } - err, userBob := NewUser("bob") + err, userBob := entities.NewUser("bob") if err != nil { t.Errorf(`Error creating bob user %v`, err) } @@ -23,12 +25,12 @@ func TestUserCreation(t *testing.T) { func TestCreateDocument(t *testing.T) { - err, document := NewDocument("paper.pdf", FILE) + err, document := entities.NewDocument("paper.pdf", entities.FILE) if err != nil { t.Errorf(`Error creating document %v`, err) } - err, directory := NewDocument("bob", DIRECTORY) + err, directory := entities.NewDocument("bob", entities.DIRECTORY) if err != nil { t.Errorf(`Error creating bob directory %v`, err) } diff --git a/backend/services/move.go b/backend/services/move.go new file mode 100644 index 0000000..5b4807a --- /dev/null +++ b/backend/services/move.go @@ -0,0 +1,29 @@ +package services + +import ( + "fmt" + + "github.com/vaultdrop/backend/entities" +) + +func (s *Services) MoveDocumentIntoDocument(from *entities.Document, to *entities.Document) error { + + if from.DocumentUUID == nil { + return fmt.Errorf(entities.ERROR_DOCUMENT_NOT_PERCISTED) + } + + if canEdit, _ := UserCanEditDocument(s.ConnectedUser, from); canEdit == false { + return fmt.Errorf("You can not edit this folder") + } + + if canEdit, _ := UserCanEditDocument(s.ConnectedUser, to); canEdit == false { + return fmt.Errorf("You can not edit this folder") + } + + // Check if document exist and move the document into document if is directory + + fmt.Println("To implement move to ", to.DocumentUUID) + + return nil + +} diff --git a/backend/services/move_test.go b/backend/services/move_test.go new file mode 100644 index 0000000..c084d75 --- /dev/null +++ b/backend/services/move_test.go @@ -0,0 +1,24 @@ +package services + +import ( + "testing" + + "github.com/vaultdrop/backend/entities" +) + +func TestMoveDocument(t *testing.T) { + + err, userAntoine := entities.NewUser("antoine") + if err != nil { + t.Errorf(`Error creating antoine user %v`, err) + } + + err, document := entities.NewDocument("test.pdf", entities.FILE) + + err, folder := entities.NewDocument("orga", entities.DIRECTORY) + + service := New(userAntoine) + + err := service.MoveDocumentIntoDocument(document, folder) + +} diff --git a/backend/services/services.go b/backend/services/services.go new file mode 100644 index 0000000..b9db9b5 --- /dev/null +++ b/backend/services/services.go @@ -0,0 +1,33 @@ +package services + +import "github.com/vaultdrop/backend/entities" + +// import "github.com/vaultdrop/backend/entities" + +type Services struct { + ConnectedUser *entities.User +} + +func New(connectedUser *entities.User) *Services { + + return &Services{ + ConnectedUser: connectedUser, + } + +} + +func UserCanReadDocument(connectedUser *entities.User, document *entities.Document) (bool, string) { + return true, "" +} + +func UserCanEditDocument(connectedUser *entities.User, document *entities.Document) (bool, string) { + return true, "" +} + +func UserCanDeleteDocument(connectedUser *entities.User, document *entities.Document) (bool, string) { + return true, "" +} + +func UserCanCreateDocument(connectedUser *entities.User, document *entities.Document) (bool, string) { + return true, "" +} diff --git a/backend/services/upload.go b/backend/services/upload.go new file mode 100644 index 0000000..864a17f --- /dev/null +++ b/backend/services/upload.go @@ -0,0 +1,5 @@ +package services + +func (s *Services) UploadDocument() { + +} diff --git a/backend/users.go b/backend/users.go deleted file mode 100644 index ac9485d..0000000 --- a/backend/users.go +++ /dev/null @@ -1,11 +0,0 @@ -package main - -type User struct { - Username string -} - -func NewUser(username string) (error, User) { - return nil, User{ - Username: username, - } -}