syntax = "proto3";

option go_package ="./pb";

package pb;

// ------------------------------------
// Messages
// ------------------------------------

//--------------------------------notifications--------------------------------
message Notifications {
  int64 id = 1;
  int64 userId = 2;
  string type = 3;
  string title = 4;
  string content = 5;
  bool read = 6;
  string link = 7;
  int64 createdAt = 8;
  int64 updatedAt = 9;
}

message AddNotificationsReq {
  int64 userId = 1;
  string type = 2;
  string title = 3;
  string content = 4;
  optional string link = 5;
}

message AddNotificationsResp {
  int64 id = 1;
}

message UpdateNotificationsReq {
  int64 id = 1;
  optional bool read = 2;
  optional string type = 3;
  optional string title = 4;
  optional string content = 5;
  optional string link = 6;
  optional int64 updatedAt = 7;
}

message UpdateNotificationsResp {
}

message DelNotificationsReq {
  int64 id = 1;
}

message DelNotificationsResp {
}

message GetNotificationsByIdReq {
  int64 id = 1;
}

message GetNotificationsByIdResp {
  Notifications notifications = 1;
}

message SearchNotificationsReq {
  int64 offset = 1;
  int64 limit = 2;
  optional int64 id = 3;
  optional int64 userId = 4;
  optional string type = 5;
  optional bool read = 6;
}

message SearchNotificationsResp {
  repeated Notifications notifications = 1;
}

// ------------------------------------
// Rpc Func
// ------------------------------------

service notificationService {
  rpc AddNotifications(AddNotificationsReq) returns (AddNotificationsResp);
  rpc UpdateNotifications(UpdateNotificationsReq) returns (UpdateNotificationsResp);
  rpc DelNotifications(DelNotificationsReq) returns (DelNotificationsResp);
  rpc GetNotificationsById(GetNotificationsByIdReq) returns (GetNotificationsByIdResp);
  rpc SearchNotifications(SearchNotificationsReq) returns (SearchNotificationsResp);
}
