syntax = "proto3";

package memos.store;

import "google/protobuf/timestamp.proto";
import "store/workspace_setting.proto";

option go_package = "gen/store";

enum AttachmentStorageType {
  ATTACHMENT_STORAGE_TYPE_UNSPECIFIED = 0;
  // Attachment is stored locally. AKA, local file system.
  LOCAL = 1;
  // Attachment is stored in S3.
  S3 = 2;
  // Attachment is stored in an external storage. The reference is a URL.
  EXTERNAL = 3;
}

message AttachmentPayload {
  oneof payload {
    S3Object s3_object = 1;
  }

  message S3Object {
    StorageS3Config s3_config = 1;
    // key is the S3 object key.
    string key = 2;
    // last_presigned_time is the last time the object was presigned.
    // This is used to determine if the presigned URL is still valid.
    google.protobuf.Timestamp last_presigned_time = 3;
  }
}
