codemp/proto/workspace_service.proto
frelodev 6230371020 feat: fixed proto and tonic includes
Co-authored-by: zaaarf <me@zaaarf.foo>
Co-authored-by: alemi <me@alemi.dev>
2023-12-29 01:06:28 +01:00

138 lines
No EOL
2.4 KiB
Protocol Buffer

// Workspace effimero: sta in /tmp o proprio in memoria
// Workspace e` autenticato: come si decide mentre si rifa il server
// Workspace ha id univoco (stringa), usato per connettercisi
// Workspace implementera` access control:
// * accedere al workspace
// * i singoli buffer
// - i metadati maybe????
// Workspace offre le seguenti features:
// * listare i buffer DONE
// * listare gli user connessi DONE
// * creare buffers DONE REPLACE THE ONE ON buffer.proto
// * NO ATTACH: responsabilita` del buffer service
// * contiene metadata dei buffers:
// * path
// * data creazione
// Buffer id NON E` il path DONE
// BufferService NON ha metadata:
// Workspace tiene traccia di utenti attached (nel futuro) DONE
syntax = "proto2";
package workspace_service;
import "user.proto";
message Empty {}
message WorkspaceFileTree {
// list of strings may be more efficient but it's a lot more hassle
required string payload = 1; // spappolata di json
}
message WorkspaceUserList {
repeated user.UserIdentity user = 1;
}
message WorkspaceMessage {
required int32 id = 1;
}
message TreeRequest {} // empty
message UserRequest {}
message CursorResponse{}
message UserListRequest{}
service Workspace {
//
rpc Create (BufferPayload) returns (Empty);
rpc Attach (AttachRequest) returns (Token);
rpc ListBuffers (BufferListRequest) returns (BufferTree);
rpc ListUsers (UserListRequest) returns (UserList);
rpc ListBufferUsers (Empty) returns (Empty);
rpc Join (JoinRequest) returns (Token);
rpc Delete (BufferPayload) returns (Empty); //deletes buffer
}
message JoinRequest{
required string username=1;
required string password=2;
}
message AttachRequest{
required string bufferAttach = 1;
}
message Token{
required string token = 1;
}
enum FileEventType {
CREATE = 0;
DELETE = 1;
RENAME = 2;
}
message FileEvent {
required string buffer = 1;
required FileEventType type = 2;
}
enum UserEventType {
JOIN = 0;
LEAVE = 1;
}
message UserEvent {
required user.UserIdentity user = 1;
required UserEventType type = 2;
}
message BufferPayload {
// buffer path to operate onto
required string path = 1;
// user id that is requesting the operation
required user.UserIdentity user = 2;
}
message BufferListRequest{
}
message BufferNode{
required string path = 1;
}
message BufferTree{
repeated BufferNode buffers = 1;
}
message UserList{
repeated user.UserIdentity users = 1;
}