UNPKG

@defikitdotnet/x-ai-combat

Version:

XCombatAI - Social Media Engagement Template for the Agent Framework

139 lines 5.76 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.XAICombatPostController = void 0; const agent_framework_backend_1 = require("@defikitdotnet/agent-framework-backend"); const uuid_1 = require("uuid"); const Post_1 = require("../models/Post"); const XAIAdapter_1 = require("../db/XAIAdapter"); // Create a resource implementation for PostResource const createPostResource = (adapter) => ({ name: "posts", findAll: async (agentId) => { // Get all posts from database via adapter, filtered by agentId if provided const posts = await adapter.getAllPosts(agentId); // Convert to PostResource objects return posts.map(post => { const postResource = new Post_1.PostResource(); Object.assign(postResource, post); return postResource; }); }, findById: async (id, agentId) => { const post = await adapter.findPostById(id); if (!post) return null; // Filter by agentId if provided if (agentId && post.agentId !== agentId) { return null; } // Convert from Post to PostResource const postResource = new Post_1.PostResource(); Object.assign(postResource, post); return postResource; }, findByTweetId: async (tweetId, agentId) => { const post = await adapter.findPostByTweetId(tweetId); if (!post) return null; // Filter by agentId if provided if (agentId && post.agentId !== agentId) { return null; } // Convert from Post to PostResource const postResource = new Post_1.PostResource(); Object.assign(postResource, post); return postResource; }, create: async (data) => { const id = data.id || (0, uuid_1.v4)(); const newPost = new Post_1.PostResource(); Object.assign(newPost, data, { id, createdAt: data.createdAt || new Date(), }); await adapter.createPost(newPost); return newPost; }, update: async (id, data) => { const existingPost = await adapter.findPostById(id); if (!existingPost) return null; const updated = new Post_1.PostResource(); Object.assign(updated, existingPost, data, { updatedAt: new Date() }); await adapter.createPost(updated); return updated; }, delete: async (id) => { // Implementation will be added later if needed return false; }, }); /** * Post API controller */ let XAICombatPostController = class XAICombatPostController extends agent_framework_backend_1.ResourceController { constructor(adapter) { super(createPostResource(adapter)); this.adapter = adapter; } async getMyPosts(req, res) { try { // Get userId from token const userId = req.XaicombatUser?.userId; if (!userId) { res.status(401).json({ error: "Unauthorized: User not authenticated" }); return; } // Parse pagination parameters const page = req.query.page ? parseInt(req.query.page) : 1; const limit = req.query.limit ? parseInt(req.query.limit) : 10; // Get agentId from JWT token const agentId = req.XaicombatUser?.agentId; // Validate pagination parameters if (isNaN(page) || page < 1 || isNaN(limit) || limit < 1) { res.status(400).json({ error: "Invalid pagination parameters" }); return; } const { posts, total } = await this.adapter.getPostsByUserId(userId, page, limit, agentId); const resources = posts.map(post => { const resource = new Post_1.PostResource(); Object.assign(resource, post); return resource; }); res.status(200).json({ data: resources, pagination: { page, limit, total, totalPages: Math.ceil(total / limit) } }); } catch (error) { console.error("Error retrieving posts for current user:", error); res.status(500).json({ error: "Failed to retrieve posts" }); } } }; exports.XAICombatPostController = XAICombatPostController; __decorate([ (0, agent_framework_backend_1.Get)("/my-posts"), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", Promise) ], XAICombatPostController.prototype, "getMyPosts", null); exports.XAICombatPostController = XAICombatPostController = __decorate([ (0, agent_framework_backend_1.Controller)("/xaicombat/api/posts"), __metadata("design:paramtypes", [XAIAdapter_1.XAIAdapter]) ], XAICombatPostController); //# sourceMappingURL=PostController.js.map