agentlang
Version:
The easiest way to build the most reliable AI agents - enterprise-grade teams of AI agents that collaborate with each other and humans
115 lines (106 loc) • 3.65 kB
JavaScript
import { evaluate } from '../interpreter.js';
import { makeCoreModuleName } from '../util.js';
import { makeInstance, objectAsInstanceAttributes } from '../module.js';
import crypto from 'crypto';
export const CoreFilesModuleName = makeCoreModuleName('files');
export default `module ${CoreFilesModuleName}
entity File {
id String ,
filename String ,
originalName String ,
mimetype String ,
size Int ,
uploadedBy String ,
uploadedAt DateTime ,
path String ,
[(allow: [create, read, update, delete], where: auth.user = this.uploadedBy)]
}
workflow CreateFile {
{File {id CreateFile.id,
filename CreateFile.filename,
originalName CreateFile.originalName,
mimetype CreateFile.mimetype,
size CreateFile.size,
uploadedBy CreateFile.uploadedBy,
uploadedAt CreateFile.uploadedAt,
path CreateFile.path},
}
}
workflow FindFile {
{File {id? FindFile.id}} [file];
file
}
workflow FindFileByFilename {
{File {filename? FindFileByFilename.filename}} [file];
file
}
workflow ListFiles {
{File? {}}
}
workflow ListUserFiles {
{File {uploadedBy? ListUserFiles.userId}}
}
workflow DeleteFile {
delete {File {id? DeleteFile.id}}
}
workflow DeleteFileByFilename {
delete {File {filename? DeleteFileByFilename.filename}}
}
workflow UpdateFile {
{File {id? UpdateFile.id,
originalName UpdateFile.originalName,
mimetype UpdateFile.mimetype,
size UpdateFile.size}}
}
`;
export async function createFileRecord(fileInfo, sessionInfo, callback, env) {
let inst = makeInstance(CoreFilesModuleName, 'CreateFile', objectAsInstanceAttributes({
id: crypto.randomUUID(),
filename: fileInfo.filename,
originalName: fileInfo.originalName,
mimetype: fileInfo.mimetype,
size: fileInfo.size,
path: fileInfo.path,
uploadedBy: fileInfo.uploadedBy || '',
uploadedAt: new Date().toISOString(),
}));
if (sessionInfo) {
inst = inst.setAuthContext(sessionInfo);
}
return await evaluate(inst, callback, env);
}
export async function findFileByFilename(filename, sessionInfo, callback, env) {
let inst = makeInstance(CoreFilesModuleName, 'FindFileByFilename', objectAsInstanceAttributes({
filename: filename,
}));
if (sessionInfo) {
inst = inst.setAuthContext(sessionInfo);
}
return await evaluate(inst, callback, env);
}
export async function deleteFileRecord(filename, sessionInfo, callback, env) {
let inst = makeInstance(CoreFilesModuleName, 'DeleteFileByFilename', objectAsInstanceAttributes({
filename: filename,
}));
if (sessionInfo) {
inst = inst.setAuthContext(sessionInfo);
}
return await evaluate(inst, callback, env);
}
export async function listAllFiles(sessionInfo, callback, env) {
let inst = makeInstance(CoreFilesModuleName, 'ListFiles', objectAsInstanceAttributes({}));
if (sessionInfo) {
inst = inst.setAuthContext(sessionInfo);
}
return await evaluate(inst, callback, env);
}
export async function listUserFiles(userId, sessionInfo, callback, env) {
let inst = makeInstance(CoreFilesModuleName, 'ListUserFiles', objectAsInstanceAttributes({
userId: userId,
}));
if (sessionInfo) {
inst = inst.setAuthContext(sessionInfo);
}
return await evaluate(inst, callback, env);
}
//# sourceMappingURL=files.js.map