{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":740685183,"defaultBranch":"main","name":"clox","ownerLogin":"cicconee","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-08T21:15:03.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/121914013?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1704749066.0","currentOid":""},"activityList":{"items":[{"before":"c29401c6df2a74c0ba1136871ff86cc3c025f44f","after":"6941925892344f28d1ebc1bc6e0659184b64ccf9","ref":"refs/heads/main","pushedAt":"2024-01-31T16:29:47.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Remove quote directive from SafeMessage in write method.\n\nThis will cause a json parse error on the client. Use single quotes instead.","shortMessageHtmlLink":"Remove quote directive from SafeMessage in write method."}},{"before":"73156a7178262e5b6c19ad8f033b222c83a04b32","after":"c29401c6df2a74c0ba1136871ff86cc3c025f44f","ref":"refs/heads/main","pushedAt":"2024-01-30T22:21:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Remove quote directive from SafeMessage in FindDir.\n\nThis will cause a json parse error on the client. Use single quotes instead.","shortMessageHtmlLink":"Remove quote directive from SafeMessage in FindDir."}},{"before":"b484c2c90316a4e8921f06307287b140d9afca4d","after":"73156a7178262e5b6c19ad8f033b222c83a04b32","ref":"refs/heads/main","pushedAt":"2024-01-22T21:10:03.000Z","pushType":"push","commitsCount":25,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Created GET /api/download/file handler.\n\nDownloadPath gets the file info using the \"path\" URL query parameter, and serves the file. The path is the user-facing file path, not the UUID paths that are used by the server.","shortMessageHtmlLink":"Created GET /api/download/file handler."}},{"before":"3be3aa4d6f9c448ec8ac8bd2c859235ac3dcda11","after":"b484c2c90316a4e8921f06307287b140d9afca4d","ref":"refs/heads/main","pushedAt":"2024-01-20T01:05:04.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"ReadFileInfo uses PathMapper to get file system path for file.","shortMessageHtmlLink":"ReadFileInfo uses PathMapper to get file system path for file."}},{"before":"327c0dd36b1d49db5827beebd4e110f9cc3eb31f","after":"3be3aa4d6f9c448ec8ac8bd2c859235ac3dcda11","ref":"refs/heads/main","pushedAt":"2024-01-19T23:49:41.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"PathMapper stores the path to the root storage.","shortMessageHtmlLink":"PathMapper stores the path to the root storage."}},{"before":"9602ae14f08dfd866a9f77e791437b3e81c9aa8c","after":"327c0dd36b1d49db5827beebd4e110f9cc3eb31f","ref":"refs/heads/main","pushedAt":"2024-01-19T21:25:20.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"NewPath uses PathMapper to get parent ID.","shortMessageHtmlLink":"NewPath uses PathMapper to get parent ID."}},{"before":"32302fc31ac0d8af15d9819bda9f1f352e4cf4b0","after":"9602ae14f08dfd866a9f77e791437b3e81c9aa8c","ref":"refs/heads/main","pushedAt":"2024-01-19T17:30:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Implemented saving files under a specified path.\n\nPath refers to the user-facing path. It is the path the users reference, not the file system path which uses UUID's.","shortMessageHtmlLink":"Implemented saving files under a specified path."}},{"before":"98de17db18b4e3bc43c5fc5eea5975c49835d155","after":"32302fc31ac0d8af15d9819bda9f1f352e4cf4b0","ref":"refs/heads/main","pushedAt":"2024-01-19T16:53:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"(doc) Updated DirService comments.","shortMessageHtmlLink":"(doc) Updated DirService comments."}},{"before":"7f8368710583037144cf74295032e22f4b5eb9b8","after":"98de17db18b4e3bc43c5fc5eea5975c49835d155","ref":"refs/heads/main","pushedAt":"2024-01-19T16:43:16.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Type UserDirValidatorFunc renamed to UserValidatorFunc.\n\nValidating a user in the cloudstore domain, requires a directory structure to be set up for the user. No need to specify \"Dir\" in the name, as this is user validation.","shortMessageHtmlLink":"Type UserDirValidatorFunc renamed to UserValidatorFunc."}},{"before":"ba36e6214a2e1ca2d9f3f8bae451d2bb422a03b5","after":"7f8368710583037144cf74295032e22f4b5eb9b8","ref":"refs/heads/main","pushedAt":"2024-01-19T16:18:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Directory functionality abstracted to its own service.\n\nAll cloudstore business logic related to directories encapsulated in DirService.","shortMessageHtmlLink":"Directory functionality abstracted to its own service."}},{"before":"b3dee4aba77167946423033dc7fafa3cdceccdca","after":"ba36e6214a2e1ca2d9f3f8bae451d2bb422a03b5","ref":"refs/heads/main","pushedAt":"2024-01-19T15:59:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"File functionality abstracted to its own service.\n\nAll cloudstore business logic related to files encapsulated in FileService.","shortMessageHtmlLink":"File functionality abstracted to its own service."}},{"before":"bc818d5e8f31a1ddeff98f517d70f2f92a456b94","after":"b3dee4aba77167946423033dc7fafa3cdceccdca","ref":"refs/heads/main","pushedAt":"2024-01-18T16:15:05.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"GET /api/download/file/{id} downloads a file.\n\nThe {id} parameter is the file ID. Download calls the FileInfo method in cloudstore.Service to get the file information.\n\nThe file is served using http.ServeFile.","shortMessageHtmlLink":"GET /api/download/file/{id} downloads a file."}},{"before":"fd817c33c91d511feadbdb582eae5eb22a916e6f","after":"bc818d5e8f31a1ddeff98f517d70f2f92a456b94","ref":"refs/heads/main","pushedAt":"2024-01-17T00:06:37.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Remove file when transaction results in inconsistent state.\n\nAn inconsistent state occurs if the file information was not written to the database, but the file was created on the file system.","shortMessageHtmlLink":"Remove file when transaction results in inconsistent state."}},{"before":"eceeaba90d739c79280ec4f1fa7db21a92149051","after":"fd817c33c91d511feadbdb582eae5eb22a916e6f","ref":"refs/heads/main","pushedAt":"2024-01-16T22:36:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Create file and set permissions using os.OpenFile.","shortMessageHtmlLink":"Create file and set permissions using os.OpenFile."}},{"before":"8697f289778408a497bfcd60a6c4e7194eca8133","after":"eceeaba90d739c79280ec4f1fa7db21a92149051","ref":"refs/heads/main","pushedAt":"2024-01-16T22:17:07.000Z","pushType":"push","commitsCount":9,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Implemented the file upload functionality.\n\nPOST /api/upload/{id} accepts files to be uploaded and saved to the server.","shortMessageHtmlLink":"Implemented the file upload functionality."}},{"before":"27fb9d46f4f51b5c9fce7821a52d92b7d9dd1320","after":"8697f289778408a497bfcd60a6c4e7194eca8133","ref":"refs/heads/main","pushedAt":"2024-01-13T23:11:28.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"newDir validates parameters and creates new directories.\n\nInstead of validating name and root directory in both NewDir and NewDirPath, they call newDir while passing the function that determines the parent ID.","shortMessageHtmlLink":"newDir validates parameters and creates new directories."}},{"before":"92cddea257b5f0e1dfa756b7d4b30a98b3df81c3","after":"27fb9d46f4f51b5c9fce7821a52d92b7d9dd1320","ref":"refs/heads/main","pushedAt":"2024-01-13T21:32:59.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Logic for parsing and writing new directories extracted to the new method.\n\nnew gets the user ID, parses the request body, and writes the response.\n\nCallers only need to pass a function to be executed once the user ID and newDirRequest are formed.","shortMessageHtmlLink":"Logic for parsing and writing new directories extracted to the new me…"}},{"before":"f4e5a55b36bd75c427627d12e5b7237ebb3c4ee4","after":"92cddea257b5f0e1dfa756b7d4b30a98b3df81c3","ref":"refs/heads/main","pushedAt":"2024-01-12T20:33:43.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Implemented creating a directory given a path.\n\nPath refers to the path the user uses, not the file system path which uses the UUIDs.","shortMessageHtmlLink":"Implemented creating a directory given a path."}},{"before":"2223e42cbd23643fce5c798730a2824501947d22","after":"f4e5a55b36bd75c427627d12e5b7237ebb3c4ee4","ref":"refs/heads/main","pushedAt":"2024-01-12T18:07:18.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"ErrUniqueNameParentID is returned when inserting a directory if the name is already in use by a child of that parent.","shortMessageHtmlLink":"ErrUniqueNameParentID is returned when inserting a directory if the n…"}},{"before":"77452bfb23dfea627ca46570a21d0143e982834a","after":"2223e42cbd23643fce5c798730a2824501947d22","ref":"refs/heads/main","pushedAt":"2024-01-11T23:05:12.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"NewUserDir validates that a users root storage exists. It will be created if it does not.\n\nCreating a directory with an empty parent ID will default to the ID of the users root directory.","shortMessageHtmlLink":"NewUserDir validates that a users root storage exists. It will be cre…"}},{"before":"02714ba0882bf1a0de2a8cff69cfa001a969fb04","after":"77452bfb23dfea627ca46570a21d0143e982834a","ref":"refs/heads/main","pushedAt":"2024-01-10T21:17:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Upon registering, a root directory is created for the user.\n\nAll sub directories and files uploaded by the user will be written to their root directory.","shortMessageHtmlLink":"Upon registering, a root directory is created for the user."}},{"before":"d9a28f8a74c6729705369996aa3b6c573046f116","after":"02714ba0882bf1a0de2a8cff69cfa001a969fb04","ref":"refs/heads/main","pushedAt":"2024-01-10T21:00:02.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"Implemented directory creation functionality in cloudstorage.\n\nThe life cycle of directories are orchestrated by IO.\nSQL queries are defined in Query.\nOSFileSystem wraps the os packages file system functions.\nStore handles access to the database.","shortMessageHtmlLink":"Implemented directory creation functionality in cloudstorage."}},{"before":null,"after":"d9a28f8a74c6729705369996aa3b6c573046f116","ref":"refs/heads/main","pushedAt":"2024-01-08T21:24:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"cicconee","name":"Edward Ciccone","path":"/cicconee","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/121914013?s=80&v=4"},"commit":{"message":"User authentication and API implemented","shortMessageHtmlLink":"User authentication and API implemented"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAD7j-ASwA","startCursor":null,"endCursor":null}},"title":"Activity · cicconee/clox"}