Skip to main content
Glama

mcp-google-sheets

todos-activity.service.ts4.28 kB
import { ActivepiecesError, ApId, apId, Cursor, ErrorCode, isNil, PlatformId, ProjectId, SeekPage, spreadIfDefined, TodoActivity, TodoActivityWithUser, UserId } from '@activepieces/shared' import { FastifyBaseLogger } from 'fastify' import { Server } from 'socket.io' import { repoFactory } from '../../core/db/repo-factory' import { buildPaginator } from '../../helper/pagination/build-paginator' import { paginationHelper } from '../../helper/pagination/pagination-utils' import { Order } from '../../helper/pagination/paginator' import { userService } from '../../user/user-service' import { todoSideEfffects } from '../todo-side-effects' import { TodoActivityEntity } from './todos-activity.entity' const repo = repoFactory(TodoActivityEntity) export const todoActivitiesService = (log: FastifyBaseLogger) => ({ async create(params: CreateParams): Promise<TodoActivity> { const activity = repo().create({ id: apId(), ...spreadIfDefined('userId', params.userId), todoId: params.todoId, content: params.content, created: new Date().toISOString(), updated: new Date().toISOString(), }) const savedActivity = await repo().save(activity) await todoSideEfffects(log).notifyActivityCreated({ socket: params.socket, todoId: params.todoId, projectId: params.projectId, }) return savedActivity }, async update(params: UpdateParams): Promise<TodoActivity> { const activity = await repo().findOneByOrFail({ id: params.id }) await repo().update(activity.id, { ...spreadIfDefined('content', params.content), }) await todoSideEfffects(log).notifyActivity({ socket: params.socket, projectId: params.projectId, activityId: params.id, todoId: activity.todoId, content: params.content, }) return this.getOneOrThrow({ id: params.id }) }, async getOne(params: GetParams): Promise<TodoActivity | null> { return repo().findOneBy({ id: params.id }) }, async getOneOrThrow(params: GetParams): Promise<TodoActivity> { const todoActivity = await this.getOne(params) if (!todoActivity) { throw new ActivepiecesError({ code: ErrorCode.ENTITY_NOT_FOUND, params: { entityType: 'todo_activity', entityId: params.id, message: 'Todo activity by id not found' }, }) } return todoActivity }, async list(params: ListParams): Promise<SeekPage<TodoActivityWithUser>> { const decodedCursor = paginationHelper.decodeCursor(params.cursor) const paginator = buildPaginator<TodoActivity>({ entity: TodoActivityEntity, query: { limit: params.limit, order: Order.ASC, orderBy: 'created', afterCursor: decodedCursor.nextCursor, beforeCursor: decodedCursor.previousCursor, }, }) const query = repo().createQueryBuilder('todo_activity').where({ todoId: params.todoId, }) const { data, cursor: newCursor } = await paginator.paginate(query) const enrichedData = await Promise.all( data.map(async (activity) => { return enrichTodoActivityWithUser(activity) }), ) return paginationHelper.createPage<TodoActivityWithUser>(enrichedData, newCursor) }, }) async function enrichTodoActivityWithUser( activity: TodoActivity, ): Promise<TodoActivityWithUser> { const user = isNil(activity.userId) ? null : await userService.getMetaInformation({ id: activity.userId, }) return { ...activity, user, } } type GetParams = { id: string } type ListParams = { platformId: PlatformId projectId: ProjectId todoId: ApId limit: number cursor: Cursor | null } type CreateParams = { content: string platformId: PlatformId projectId: ProjectId userId: UserId | null todoId: ApId socket: Server } type UpdateParams = { id: string content: string socket: Server projectId: ProjectId }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server