memos/proto/store/attachment.proto

57 lines
1.2 KiB
Protocol Buffer

syntax = "proto3";
package memos.store;
import "google/protobuf/timestamp.proto";
import "store/instance_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;
}
enum MotionMediaFamily {
MOTION_MEDIA_FAMILY_UNSPECIFIED = 0;
APPLE_LIVE_PHOTO = 1;
ANDROID_MOTION_PHOTO = 2;
}
enum MotionMediaRole {
MOTION_MEDIA_ROLE_UNSPECIFIED = 0;
STILL = 1;
VIDEO = 2;
CONTAINER = 3;
}
message MotionMedia {
MotionMediaFamily family = 1;
MotionMediaRole role = 2;
string group_id = 3;
int64 presentation_timestamp_us = 4;
bool has_embedded_video = 5;
}
message AttachmentPayload {
oneof payload {
S3Object s3_object = 1;
}
MotionMedia motion_media = 10;
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;
}
}