@defikitdotnet/x-ai-combat
Version:
XCombatAI - Social Media Engagement Template for the Agent Framework
75 lines • 2.97 kB
JavaScript
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);
};
import { Controller, ResourceController } from "@defikitdotnet/agent-framework-backend";
import { v4 as uuidv4 } from "uuid";
import { UserResource } from "../models/User";
import { XAIAdapter } from "../db/XAIAdapter";
// Create a resource implementation for UserResource
const createUserResource = (adapter) => ({
name: "users",
findAll: async (agentId) => {
// Get users filtered by agentId if provided
return adapter.getAllUsers(agentId);
},
findById: async (id, agentId) => {
const user = await adapter.findUserById(id);
// Filter by agentId if provided
if (user && agentId && user.agentId !== agentId) {
return null;
}
return user;
},
findByTwitterId: async (twitterId, agentId) => {
const user = await adapter.findUserByTwitterId(twitterId);
// Filter by agentId if provided
if (user && agentId && user.agentId !== agentId) {
return null;
}
return user;
},
create: async (data) => {
const id = uuidv4();
const newUser = new UserResource();
Object.assign(newUser, data, {
id,
linkedAt: data.linkedAt || new Date(),
});
await adapter.createUser(newUser);
return newUser;
},
update: async (id, data) => {
const existingUser = await adapter.findUserById(id);
if (!existingUser)
return null;
const updated = { ...existingUser, ...data, updatedAt: new Date() };
await adapter.updateUser(updated);
return updated;
},
delete: async (id) => {
// Implementation will be added later if needed
return false;
},
});
/**
* User API controller
* Handles user CRUD operations
*/
let XAICombatUserController = class XAICombatUserController extends ResourceController {
constructor(adapter) {
super(createUserResource(adapter));
this.adapter = adapter;
}
};
XAICombatUserController = __decorate([
Controller("/xaicombat/api/users"),
__metadata("design:paramtypes", [XAIAdapter])
], XAICombatUserController);
export { XAICombatUserController };
//# sourceMappingURL=UserController.js.map