Wip backend (#4)
* feat: Add new API handlers for user, project, and task management; update package dependencies * feat: Update .gitignore, add Lambda layer configuration, and refactor DynamoDB handlers to use AWS SDK v3 * feat: Update serverless configuration and refactor API handlers to improve error handling and response structure * feat: Add Cognito user pool name parameter and update API handlers to include CORS headers * feat: Update task and project ID formats, add populateSeedData function, and enhance user ID handling * feat: Update image source paths to use S3 public URL for profile and task attachments
This commit was merged in pull request #4.
This commit is contained in:
179
tasker-server/serverless.yml
Normal file
179
tasker-server/serverless.yml
Normal file
@@ -0,0 +1,179 @@
|
||||
service: tasker-server
|
||||
|
||||
plugins:
|
||||
- serverless-prune-plugin
|
||||
|
||||
provider:
|
||||
stackName: ${self:service}
|
||||
name: aws
|
||||
region: "eu-north-1"
|
||||
runtime: nodejs20.x
|
||||
environment:
|
||||
SLS_REGION: ${self:provider.region}
|
||||
API_BASE_URL: ${ssm:/tasker/api/base-url}
|
||||
TASKER_TASK_TABLE_NAME: ${ssm:/tasker/dynamodb/task-table-name}
|
||||
TASKER_PROJECT_TABLE_NAME: ${ssm:/tasker/dynamodb/project-table-name}
|
||||
TASKER_USER_TABLE_NAME: ${ssm:/tasker/dynamodb/user-table-name}
|
||||
TASKER_TASK_EXTRA_TABLE_NAME: ${ssm:/tasker/dynamodb/task-extra-table-name}
|
||||
TASKER_TEAM_TABLE_NAME: ${ssm:/tasker/dynamodb/team-table-name}
|
||||
layers:
|
||||
- ${ssm:/tasker/layers/tasker-layer-arn}
|
||||
iam:
|
||||
role:
|
||||
statements:
|
||||
- Effect: Allow
|
||||
Action:
|
||||
- dynamodb:Query
|
||||
- dynamodb:Scan
|
||||
- dynamodb:GetItem
|
||||
- dynamodb:PutItem
|
||||
- dynamodb:UpdateItem
|
||||
Resource:
|
||||
[
|
||||
"arn:aws:dynamodb:${self:provider.region}:*:table/tasker-*",
|
||||
"arn:aws:dynamodb:${self:provider.region}:*:table/tasker-*/*",
|
||||
]
|
||||
- Effect: Allow
|
||||
Action:
|
||||
- execute-api:Invoke
|
||||
Resource:
|
||||
- "arn:aws:execute-api:${self:provider.region}:*:*/*/POST/users"
|
||||
|
||||
functions:
|
||||
populateSeedData:
|
||||
handler: seed/populateSeedData.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
|
||||
# POST /users or triggered by Cognito
|
||||
createUser:
|
||||
handler: src/handlers/createUser.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: users
|
||||
method: post
|
||||
cors: true
|
||||
authorizer: aws_iam
|
||||
- cognitoUserPool:
|
||||
existing: true
|
||||
pool: ${ssm:/tasker/cognito/user-pool-name}
|
||||
trigger: PostConfirmation
|
||||
# POST /projects
|
||||
createProject:
|
||||
handler: src/handlers/createProject.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: projects
|
||||
method: post
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# POST /tasks
|
||||
createTask:
|
||||
handler: src/handlers/createTask.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: tasks
|
||||
method: post
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /projects
|
||||
getProjects:
|
||||
handler: src/handlers/getProjects.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: projects
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /tasks?projectId=
|
||||
getTasks:
|
||||
handler: src/handlers/getTasks.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: tasks
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /teams
|
||||
getTeams:
|
||||
handler: src/handlers/getTeams.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: teams
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /users
|
||||
getUsers:
|
||||
handler: src/handlers/getUsers.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: users
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /users/{cognitoId}
|
||||
getUser:
|
||||
handler: src/handlers/getUser.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: users/{cognitoId}
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# GET /tasks/user/${userId}
|
||||
getUserTasks:
|
||||
handler: src/handlers/getUserTasks.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: tasks/user/{userId}
|
||||
method: get
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
# PATCH /tasks/{taskId}/status
|
||||
updateTaskStatus:
|
||||
handler: src/handlers/updateTaskStatus.handler
|
||||
memorySize: 1024
|
||||
timeout: 60
|
||||
events:
|
||||
- http:
|
||||
path: tasks/{taskId}/status
|
||||
method: patch
|
||||
cors: true
|
||||
authorizer:
|
||||
type: COGNITO_USER_POOLS
|
||||
arn: ${ssm:/tasker/cognito/user-pool-arn}
|
||||
Reference in New Issue
Block a user