diff --git a/.gitignore b/.gitignore index 1215215..4ea24c4 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,6 @@ bin/ # Ignore config.yaml config.yaml -# Ignore protobuf generated files -gen/ +# Protobuf generated Go code — committed for reproducible builds +# Regenerate with: buf generate +# gen/ diff --git a/api/Get Artist Albums.bru b/api/Get Artist Albums.bru index 505470c..e3a305b 100644 --- a/api/Get Artist Albums.bru +++ b/api/Get Artist Albums.bru @@ -16,7 +16,7 @@ body:grpc { name: message 1 content: ''' { - "artist_id": "27e2997f-f7a1-4353-bcc4-57b9274fa9a4" + "artist_id": "3b497c6b-e676-4242-bcad-0a03125faaaa" } ''' } diff --git a/beetfs b/beetfs deleted file mode 160000 index f0a83df..0000000 --- a/beetfs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f0a83df190254e737c9859b52ad324e502579849 diff --git a/flake.nix b/flake.nix index da28464..8c3e521 100644 --- a/flake.nix +++ b/flake.nix @@ -36,10 +36,17 @@ gofmt.enable = true; }; }; + + music-agregator = pkgs.callPackage ./package.nix { }; in { formatter = pkgs.nixfmt-tree; + packages = { + default = music-agregator; + music-agregator = music-agregator; + }; + checks = { inherit pre-commit-check; }; @@ -60,6 +67,7 @@ protobuf protoc-gen-go protoc-gen-go-grpc + grpcurl go gopls diff --git a/gen/metadata/v1/metadata.pb.go b/gen/metadata/v1/metadata.pb.go new file mode 100644 index 0000000..362148a --- /dev/null +++ b/gen/metadata/v1/metadata.pb.go @@ -0,0 +1,2098 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: metadata/v1/metadata.proto + +package metadatav1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Provider int32 + +const ( + Provider_PROVIDER_UNSPECIFIED Provider = 0 + Provider_PROVIDER_MUSICBRAINZ Provider = 1 +) + +// Enum value maps for Provider. +var ( + Provider_name = map[int32]string{ + 0: "PROVIDER_UNSPECIFIED", + 1: "PROVIDER_MUSICBRAINZ", + } + Provider_value = map[string]int32{ + "PROVIDER_UNSPECIFIED": 0, + "PROVIDER_MUSICBRAINZ": 1, + } +) + +func (x Provider) Enum() *Provider { + p := new(Provider) + *p = x + return p +} + +func (x Provider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Provider) Descriptor() protoreflect.EnumDescriptor { + return file_metadata_v1_metadata_proto_enumTypes[0].Descriptor() +} + +func (Provider) Type() protoreflect.EnumType { + return &file_metadata_v1_metadata_proto_enumTypes[0] +} + +func (x Provider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Provider.Descriptor instead. +func (Provider) EnumDescriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{0} +} + +type GetArtistRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Identifier: + // + // *GetArtistRequest_Id + // *GetArtistRequest_External + Identifier isGetArtistRequest_Identifier `protobuf_oneof:"identifier"` + Provider Provider `protobuf:"varint,3,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistRequest) Reset() { + *x = GetArtistRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistRequest) ProtoMessage() {} + +func (x *GetArtistRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistRequest.ProtoReflect.Descriptor instead. +func (*GetArtistRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{0} +} + +func (x *GetArtistRequest) GetIdentifier() isGetArtistRequest_Identifier { + if x != nil { + return x.Identifier + } + return nil +} + +func (x *GetArtistRequest) GetId() string { + if x != nil { + if x, ok := x.Identifier.(*GetArtistRequest_Id); ok { + return x.Id + } + } + return "" +} + +func (x *GetArtistRequest) GetExternal() *ExternalID { + if x != nil { + if x, ok := x.Identifier.(*GetArtistRequest_External); ok { + return x.External + } + } + return nil +} + +func (x *GetArtistRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type isGetArtistRequest_Identifier interface { + isGetArtistRequest_Identifier() +} + +type GetArtistRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type GetArtistRequest_External struct { + External *ExternalID `protobuf:"bytes,2,opt,name=external,proto3,oneof"` +} + +func (*GetArtistRequest_Id) isGetArtistRequest_Identifier() {} + +func (*GetArtistRequest_External) isGetArtistRequest_Identifier() {} + +type SearchArtistsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Provider Provider `protobuf:"varint,4,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchArtistsRequest) Reset() { + *x = SearchArtistsRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchArtistsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchArtistsRequest) ProtoMessage() {} + +func (x *SearchArtistsRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchArtistsRequest.ProtoReflect.Descriptor instead. +func (*SearchArtistsRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{1} +} + +func (x *SearchArtistsRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *SearchArtistsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *SearchArtistsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *SearchArtistsRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type GetAlbumRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Identifier: + // + // *GetAlbumRequest_Id + // *GetAlbumRequest_External + Identifier isGetAlbumRequest_Identifier `protobuf_oneof:"identifier"` + Provider Provider `protobuf:"varint,3,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumRequest) Reset() { + *x = GetAlbumRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumRequest) ProtoMessage() {} + +func (x *GetAlbumRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumRequest.ProtoReflect.Descriptor instead. +func (*GetAlbumRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{2} +} + +func (x *GetAlbumRequest) GetIdentifier() isGetAlbumRequest_Identifier { + if x != nil { + return x.Identifier + } + return nil +} + +func (x *GetAlbumRequest) GetId() string { + if x != nil { + if x, ok := x.Identifier.(*GetAlbumRequest_Id); ok { + return x.Id + } + } + return "" +} + +func (x *GetAlbumRequest) GetExternal() *ExternalID { + if x != nil { + if x, ok := x.Identifier.(*GetAlbumRequest_External); ok { + return x.External + } + } + return nil +} + +func (x *GetAlbumRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type isGetAlbumRequest_Identifier interface { + isGetAlbumRequest_Identifier() +} + +type GetAlbumRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type GetAlbumRequest_External struct { + External *ExternalID `protobuf:"bytes,2,opt,name=external,proto3,oneof"` +} + +func (*GetAlbumRequest_Id) isGetAlbumRequest_Identifier() {} + +func (*GetAlbumRequest_External) isGetAlbumRequest_Identifier() {} + +type GetArtistAlbumsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ArtistId string `protobuf:"bytes,1,opt,name=artist_id,json=artistId,proto3" json:"artist_id,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + Provider Provider `protobuf:"varint,4,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + AlbumTypes []string `protobuf:"bytes,5,rep,name=album_types,json=albumTypes,proto3" json:"album_types,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistAlbumsRequest) Reset() { + *x = GetArtistAlbumsRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistAlbumsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistAlbumsRequest) ProtoMessage() {} + +func (x *GetArtistAlbumsRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistAlbumsRequest.ProtoReflect.Descriptor instead. +func (*GetArtistAlbumsRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{3} +} + +func (x *GetArtistAlbumsRequest) GetArtistId() string { + if x != nil { + return x.ArtistId + } + return "" +} + +func (x *GetArtistAlbumsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetArtistAlbumsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *GetArtistAlbumsRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +func (x *GetArtistAlbumsRequest) GetAlbumTypes() []string { + if x != nil { + return x.AlbumTypes + } + return nil +} + +type GetTrackRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Identifier: + // + // *GetTrackRequest_Id + // *GetTrackRequest_External + // *GetTrackRequest_Isrc + Identifier isGetTrackRequest_Identifier `protobuf_oneof:"identifier"` + Provider Provider `protobuf:"varint,4,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTrackRequest) Reset() { + *x = GetTrackRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTrackRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrackRequest) ProtoMessage() {} + +func (x *GetTrackRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTrackRequest.ProtoReflect.Descriptor instead. +func (*GetTrackRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{4} +} + +func (x *GetTrackRequest) GetIdentifier() isGetTrackRequest_Identifier { + if x != nil { + return x.Identifier + } + return nil +} + +func (x *GetTrackRequest) GetId() string { + if x != nil { + if x, ok := x.Identifier.(*GetTrackRequest_Id); ok { + return x.Id + } + } + return "" +} + +func (x *GetTrackRequest) GetExternal() *ExternalID { + if x != nil { + if x, ok := x.Identifier.(*GetTrackRequest_External); ok { + return x.External + } + } + return nil +} + +func (x *GetTrackRequest) GetIsrc() string { + if x != nil { + if x, ok := x.Identifier.(*GetTrackRequest_Isrc); ok { + return x.Isrc + } + } + return "" +} + +func (x *GetTrackRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type isGetTrackRequest_Identifier interface { + isGetTrackRequest_Identifier() +} + +type GetTrackRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type GetTrackRequest_External struct { + External *ExternalID `protobuf:"bytes,2,opt,name=external,proto3,oneof"` +} + +type GetTrackRequest_Isrc struct { + Isrc string `protobuf:"bytes,3,opt,name=isrc,proto3,oneof"` +} + +func (*GetTrackRequest_Id) isGetTrackRequest_Identifier() {} + +func (*GetTrackRequest_External) isGetTrackRequest_Identifier() {} + +func (*GetTrackRequest_Isrc) isGetTrackRequest_Identifier() {} + +type GetAlbumTracksRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlbumId string `protobuf:"bytes,1,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + Provider Provider `protobuf:"varint,2,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumTracksRequest) Reset() { + *x = GetAlbumTracksRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumTracksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumTracksRequest) ProtoMessage() {} + +func (x *GetAlbumTracksRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumTracksRequest.ProtoReflect.Descriptor instead. +func (*GetAlbumTracksRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{5} +} + +func (x *GetAlbumTracksRequest) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +func (x *GetAlbumTracksRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type SearchAlbumsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Artist string `protobuf:"bytes,2,opt,name=artist,proto3" json:"artist,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` + Provider Provider `protobuf:"varint,5,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + AlbumTypes []string `protobuf:"bytes,6,rep,name=album_types,json=albumTypes,proto3" json:"album_types,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchAlbumsRequest) Reset() { + *x = SearchAlbumsRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchAlbumsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchAlbumsRequest) ProtoMessage() {} + +func (x *SearchAlbumsRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchAlbumsRequest.ProtoReflect.Descriptor instead. +func (*SearchAlbumsRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{6} +} + +func (x *SearchAlbumsRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *SearchAlbumsRequest) GetArtist() string { + if x != nil { + return x.Artist + } + return "" +} + +func (x *SearchAlbumsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *SearchAlbumsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *SearchAlbumsRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +func (x *SearchAlbumsRequest) GetAlbumTypes() []string { + if x != nil { + return x.AlbumTypes + } + return nil +} + +type SyncArtistRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Target: + // + // *SyncArtistRequest_Name + // *SyncArtistRequest_External + Target isSyncArtistRequest_Target `protobuf_oneof:"target"` + Provider Provider `protobuf:"varint,3,opt,name=provider,proto3,enum=metadata.v1.Provider" json:"provider,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SyncArtistRequest) Reset() { + *x = SyncArtistRequest{} + mi := &file_metadata_v1_metadata_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SyncArtistRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncArtistRequest) ProtoMessage() {} + +func (x *SyncArtistRequest) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncArtistRequest.ProtoReflect.Descriptor instead. +func (*SyncArtistRequest) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{7} +} + +func (x *SyncArtistRequest) GetTarget() isSyncArtistRequest_Target { + if x != nil { + return x.Target + } + return nil +} + +func (x *SyncArtistRequest) GetName() string { + if x != nil { + if x, ok := x.Target.(*SyncArtistRequest_Name); ok { + return x.Name + } + } + return "" +} + +func (x *SyncArtistRequest) GetExternal() *ExternalID { + if x != nil { + if x, ok := x.Target.(*SyncArtistRequest_External); ok { + return x.External + } + } + return nil +} + +func (x *SyncArtistRequest) GetProvider() Provider { + if x != nil { + return x.Provider + } + return Provider_PROVIDER_UNSPECIFIED +} + +type isSyncArtistRequest_Target interface { + isSyncArtistRequest_Target() +} + +type SyncArtistRequest_Name struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3,oneof"` +} + +type SyncArtistRequest_External struct { + External *ExternalID `protobuf:"bytes,2,opt,name=external,proto3,oneof"` +} + +func (*SyncArtistRequest_Name) isSyncArtistRequest_Target() {} + +func (*SyncArtistRequest_External) isSyncArtistRequest_Target() {} + +type GetArtistResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artist *Artist `protobuf:"bytes,1,opt,name=artist,proto3" json:"artist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistResponse) Reset() { + *x = GetArtistResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistResponse) ProtoMessage() {} + +func (x *GetArtistResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistResponse.ProtoReflect.Descriptor instead. +func (*GetArtistResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{8} +} + +func (x *GetArtistResponse) GetArtist() *Artist { + if x != nil { + return x.Artist + } + return nil +} + +type SearchArtistsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artists []*Artist `protobuf:"bytes,1,rep,name=artists,proto3" json:"artists,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchArtistsResponse) Reset() { + *x = SearchArtistsResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchArtistsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchArtistsResponse) ProtoMessage() {} + +func (x *SearchArtistsResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchArtistsResponse.ProtoReflect.Descriptor instead. +func (*SearchArtistsResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{9} +} + +func (x *SearchArtistsResponse) GetArtists() []*Artist { + if x != nil { + return x.Artists + } + return nil +} + +func (x *SearchArtistsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +type GetAlbumResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Album *Album `protobuf:"bytes,1,opt,name=album,proto3" json:"album,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumResponse) Reset() { + *x = GetAlbumResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumResponse) ProtoMessage() {} + +func (x *GetAlbumResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumResponse.ProtoReflect.Descriptor instead. +func (*GetAlbumResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{10} +} + +func (x *GetAlbumResponse) GetAlbum() *Album { + if x != nil { + return x.Album + } + return nil +} + +type GetArtistAlbumsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Albums []*Album `protobuf:"bytes,1,rep,name=albums,proto3" json:"albums,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistAlbumsResponse) Reset() { + *x = GetArtistAlbumsResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistAlbumsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistAlbumsResponse) ProtoMessage() {} + +func (x *GetArtistAlbumsResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistAlbumsResponse.ProtoReflect.Descriptor instead. +func (*GetArtistAlbumsResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{11} +} + +func (x *GetArtistAlbumsResponse) GetAlbums() []*Album { + if x != nil { + return x.Albums + } + return nil +} + +func (x *GetArtistAlbumsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +type GetTrackResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Track *Track `protobuf:"bytes,1,opt,name=track,proto3" json:"track,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTrackResponse) Reset() { + *x = GetTrackResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTrackResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrackResponse) ProtoMessage() {} + +func (x *GetTrackResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTrackResponse.ProtoReflect.Descriptor instead. +func (*GetTrackResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{12} +} + +func (x *GetTrackResponse) GetTrack() *Track { + if x != nil { + return x.Track + } + return nil +} + +type GetAlbumTracksResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tracks []*Track `protobuf:"bytes,1,rep,name=tracks,proto3" json:"tracks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumTracksResponse) Reset() { + *x = GetAlbumTracksResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumTracksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumTracksResponse) ProtoMessage() {} + +func (x *GetAlbumTracksResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumTracksResponse.ProtoReflect.Descriptor instead. +func (*GetAlbumTracksResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{13} +} + +func (x *GetAlbumTracksResponse) GetTracks() []*Track { + if x != nil { + return x.Tracks + } + return nil +} + +type SearchAlbumsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Albums []*Album `protobuf:"bytes,1,rep,name=albums,proto3" json:"albums,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchAlbumsResponse) Reset() { + *x = SearchAlbumsResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchAlbumsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchAlbumsResponse) ProtoMessage() {} + +func (x *SearchAlbumsResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchAlbumsResponse.ProtoReflect.Descriptor instead. +func (*SearchAlbumsResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{14} +} + +func (x *SearchAlbumsResponse) GetAlbums() []*Album { + if x != nil { + return x.Albums + } + return nil +} + +func (x *SearchAlbumsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +type SyncArtistResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artist *Artist `protobuf:"bytes,1,opt,name=artist,proto3" json:"artist,omitempty"` + AlbumsSynced int32 `protobuf:"varint,2,opt,name=albums_synced,json=albumsSynced,proto3" json:"albums_synced,omitempty"` + TracksSynced int32 `protobuf:"varint,3,opt,name=tracks_synced,json=tracksSynced,proto3" json:"tracks_synced,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SyncArtistResponse) Reset() { + *x = SyncArtistResponse{} + mi := &file_metadata_v1_metadata_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SyncArtistResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncArtistResponse) ProtoMessage() {} + +func (x *SyncArtistResponse) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncArtistResponse.ProtoReflect.Descriptor instead. +func (*SyncArtistResponse) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{15} +} + +func (x *SyncArtistResponse) GetArtist() *Artist { + if x != nil { + return x.Artist + } + return nil +} + +func (x *SyncArtistResponse) GetAlbumsSynced() int32 { + if x != nil { + return x.AlbumsSynced + } + return 0 +} + +func (x *SyncArtistResponse) GetTracksSynced() int32 { + if x != nil { + return x.TracksSynced + } + return 0 +} + +type Artist struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + SortName string `protobuf:"bytes,3,opt,name=sort_name,json=sortName,proto3" json:"sort_name,omitempty"` + ArtistType string `protobuf:"bytes,4,opt,name=artist_type,json=artistType,proto3" json:"artist_type,omitempty"` + Country string `protobuf:"bytes,5,opt,name=country,proto3" json:"country,omitempty"` + FormedDate string `protobuf:"bytes,6,opt,name=formed_date,json=formedDate,proto3" json:"formed_date,omitempty"` + DisbandedDate string `protobuf:"bytes,7,opt,name=disbanded_date,json=disbandedDate,proto3" json:"disbanded_date,omitempty"` + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + ImageUrl string `protobuf:"bytes,9,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + Genres []*Genre `protobuf:"bytes,10,rep,name=genres,proto3" json:"genres,omitempty"` + ExternalIds []*ExternalID `protobuf:"bytes,11,rep,name=external_ids,json=externalIds,proto3" json:"external_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Artist) Reset() { + *x = Artist{} + mi := &file_metadata_v1_metadata_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Artist) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Artist) ProtoMessage() {} + +func (x *Artist) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Artist.ProtoReflect.Descriptor instead. +func (*Artist) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{16} +} + +func (x *Artist) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Artist) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Artist) GetSortName() string { + if x != nil { + return x.SortName + } + return "" +} + +func (x *Artist) GetArtistType() string { + if x != nil { + return x.ArtistType + } + return "" +} + +func (x *Artist) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +func (x *Artist) GetFormedDate() string { + if x != nil { + return x.FormedDate + } + return "" +} + +func (x *Artist) GetDisbandedDate() string { + if x != nil { + return x.DisbandedDate + } + return "" +} + +func (x *Artist) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Artist) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *Artist) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +func (x *Artist) GetExternalIds() []*ExternalID { + if x != nil { + return x.ExternalIds + } + return nil +} + +type Album struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + AlbumType string `protobuf:"bytes,3,opt,name=album_type,json=albumType,proto3" json:"album_type,omitempty"` + ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + Upc string `protobuf:"bytes,5,opt,name=upc,proto3" json:"upc,omitempty"` + TotalTracks int32 `protobuf:"varint,6,opt,name=total_tracks,json=totalTracks,proto3" json:"total_tracks,omitempty"` + TotalDiscs int32 `protobuf:"varint,7,opt,name=total_discs,json=totalDiscs,proto3" json:"total_discs,omitempty"` + CoverUrl string `protobuf:"bytes,8,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` + Artists []*ArtistCredit `protobuf:"bytes,9,rep,name=artists,proto3" json:"artists,omitempty"` + Label *Label `protobuf:"bytes,10,opt,name=label,proto3" json:"label,omitempty"` + Genres []*Genre `protobuf:"bytes,11,rep,name=genres,proto3" json:"genres,omitempty"` + ExternalIds []*ExternalID `protobuf:"bytes,12,rep,name=external_ids,json=externalIds,proto3" json:"external_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Album) Reset() { + *x = Album{} + mi := &file_metadata_v1_metadata_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Album) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Album) ProtoMessage() {} + +func (x *Album) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Album.ProtoReflect.Descriptor instead. +func (*Album) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{17} +} + +func (x *Album) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Album) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Album) GetAlbumType() string { + if x != nil { + return x.AlbumType + } + return "" +} + +func (x *Album) GetReleaseDate() string { + if x != nil { + return x.ReleaseDate + } + return "" +} + +func (x *Album) GetUpc() string { + if x != nil { + return x.Upc + } + return "" +} + +func (x *Album) GetTotalTracks() int32 { + if x != nil { + return x.TotalTracks + } + return 0 +} + +func (x *Album) GetTotalDiscs() int32 { + if x != nil { + return x.TotalDiscs + } + return 0 +} + +func (x *Album) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +func (x *Album) GetArtists() []*ArtistCredit { + if x != nil { + return x.Artists + } + return nil +} + +func (x *Album) GetLabel() *Label { + if x != nil { + return x.Label + } + return nil +} + +func (x *Album) GetGenres() []*Genre { + if x != nil { + return x.Genres + } + return nil +} + +func (x *Album) GetExternalIds() []*ExternalID { + if x != nil { + return x.ExternalIds + } + return nil +} + +type Track struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + DurationMs int32 `protobuf:"varint,3,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` + Isrc string `protobuf:"bytes,4,opt,name=isrc,proto3" json:"isrc,omitempty"` + Explicit bool `protobuf:"varint,5,opt,name=explicit,proto3" json:"explicit,omitempty"` + DiscNumber int32 `protobuf:"varint,6,opt,name=disc_number,json=discNumber,proto3" json:"disc_number,omitempty"` + TrackNumber int32 `protobuf:"varint,7,opt,name=track_number,json=trackNumber,proto3" json:"track_number,omitempty"` + Artists []*ArtistCredit `protobuf:"bytes,8,rep,name=artists,proto3" json:"artists,omitempty"` + Work *Work `protobuf:"bytes,9,opt,name=work,proto3" json:"work,omitempty"` + ExternalIds []*ExternalID `protobuf:"bytes,10,rep,name=external_ids,json=externalIds,proto3" json:"external_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Track) Reset() { + *x = Track{} + mi := &file_metadata_v1_metadata_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Track) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Track) ProtoMessage() {} + +func (x *Track) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Track.ProtoReflect.Descriptor instead. +func (*Track) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{18} +} + +func (x *Track) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Track) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Track) GetDurationMs() int32 { + if x != nil { + return x.DurationMs + } + return 0 +} + +func (x *Track) GetIsrc() string { + if x != nil { + return x.Isrc + } + return "" +} + +func (x *Track) GetExplicit() bool { + if x != nil { + return x.Explicit + } + return false +} + +func (x *Track) GetDiscNumber() int32 { + if x != nil { + return x.DiscNumber + } + return 0 +} + +func (x *Track) GetTrackNumber() int32 { + if x != nil { + return x.TrackNumber + } + return 0 +} + +func (x *Track) GetArtists() []*ArtistCredit { + if x != nil { + return x.Artists + } + return nil +} + +func (x *Track) GetWork() *Work { + if x != nil { + return x.Work + } + return nil +} + +func (x *Track) GetExternalIds() []*ExternalID { + if x != nil { + return x.ExternalIds + } + return nil +} + +type Work struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + WorkType string `protobuf:"bytes,3,opt,name=work_type,json=workType,proto3" json:"work_type,omitempty"` + Language string `protobuf:"bytes,4,opt,name=language,proto3" json:"language,omitempty"` + Composers []*ArtistCredit `protobuf:"bytes,5,rep,name=composers,proto3" json:"composers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Work) Reset() { + *x = Work{} + mi := &file_metadata_v1_metadata_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Work) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Work) ProtoMessage() {} + +func (x *Work) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Work.ProtoReflect.Descriptor instead. +func (*Work) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{19} +} + +func (x *Work) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Work) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *Work) GetWorkType() string { + if x != nil { + return x.WorkType + } + return "" +} + +func (x *Work) GetLanguage() string { + if x != nil { + return x.Language + } + return "" +} + +func (x *Work) GetComposers() []*ArtistCredit { + if x != nil { + return x.Composers + } + return nil +} + +type Label struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Country string `protobuf:"bytes,3,opt,name=country,proto3" json:"country,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Label) Reset() { + *x = Label{} + mi := &file_metadata_v1_metadata_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Label) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Label) ProtoMessage() {} + +func (x *Label) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Label.ProtoReflect.Descriptor instead. +func (*Label) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{20} +} + +func (x *Label) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Label) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Label) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +type Genre struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Genre) Reset() { + *x = Genre{} + mi := &file_metadata_v1_metadata_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Genre) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Genre) ProtoMessage() {} + +func (x *Genre) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Genre.ProtoReflect.Descriptor instead. +func (*Genre) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{21} +} + +func (x *Genre) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Genre) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type ArtistCredit struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artist *Artist `protobuf:"bytes,1,opt,name=artist,proto3" json:"artist,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` + JoinPhrase string `protobuf:"bytes,4,opt,name=join_phrase,json=joinPhrase,proto3" json:"join_phrase,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtistCredit) Reset() { + *x = ArtistCredit{} + mi := &file_metadata_v1_metadata_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtistCredit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistCredit) ProtoMessage() {} + +func (x *ArtistCredit) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistCredit.ProtoReflect.Descriptor instead. +func (*ArtistCredit) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{22} +} + +func (x *ArtistCredit) GetArtist() *Artist { + if x != nil { + return x.Artist + } + return nil +} + +func (x *ArtistCredit) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *ArtistCredit) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *ArtistCredit) GetJoinPhrase() string { + if x != nil { + return x.JoinPhrase + } + return "" +} + +type ExternalID struct { + state protoimpl.MessageState `protogen:"open.v1"` + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + SourceId string `protobuf:"bytes,2,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` + Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalID) Reset() { + *x = ExternalID{} + mi := &file_metadata_v1_metadata_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalID) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalID) ProtoMessage() {} + +func (x *ExternalID) ProtoReflect() protoreflect.Message { + mi := &file_metadata_v1_metadata_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalID.ProtoReflect.Descriptor instead. +func (*ExternalID) Descriptor() ([]byte, []int) { + return file_metadata_v1_metadata_proto_rawDescGZIP(), []int{23} +} + +func (x *ExternalID) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *ExternalID) GetSourceId() string { + if x != nil { + return x.SourceId + } + return "" +} + +func (x *ExternalID) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +var File_metadata_v1_metadata_proto protoreflect.FileDescriptor + +const file_metadata_v1_metadata_proto_rawDesc = "" + + "\n" + + "\x1ametadata/v1/metadata.proto\x12\vmetadata.v1\"\x9c\x01\n" + + "\x10GetArtistRequest\x12\x10\n" + + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x125\n" + + "\bexternal\x18\x02 \x01(\v2\x17.metadata.v1.ExternalIDH\x00R\bexternal\x121\n" + + "\bprovider\x18\x03 \x01(\x0e2\x15.metadata.v1.ProviderR\bproviderB\f\n" + + "\n" + + "identifier\"\x8d\x01\n" + + "\x14SearchArtistsRequest\x12\x14\n" + + "\x05query\x18\x01 \x01(\tR\x05query\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x121\n" + + "\bprovider\x18\x04 \x01(\x0e2\x15.metadata.v1.ProviderR\bprovider\"\x9b\x01\n" + + "\x0fGetAlbumRequest\x12\x10\n" + + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x125\n" + + "\bexternal\x18\x02 \x01(\v2\x17.metadata.v1.ExternalIDH\x00R\bexternal\x121\n" + + "\bprovider\x18\x03 \x01(\x0e2\x15.metadata.v1.ProviderR\bproviderB\f\n" + + "\n" + + "identifier\"\xb7\x01\n" + + "\x16GetArtistAlbumsRequest\x12\x1b\n" + + "\tartist_id\x18\x01 \x01(\tR\bartistId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\x121\n" + + "\bprovider\x18\x04 \x01(\x0e2\x15.metadata.v1.ProviderR\bprovider\x12\x1f\n" + + "\valbum_types\x18\x05 \x03(\tR\n" + + "albumTypes\"\xb1\x01\n" + + "\x0fGetTrackRequest\x12\x10\n" + + "\x02id\x18\x01 \x01(\tH\x00R\x02id\x125\n" + + "\bexternal\x18\x02 \x01(\v2\x17.metadata.v1.ExternalIDH\x00R\bexternal\x12\x14\n" + + "\x04isrc\x18\x03 \x01(\tH\x00R\x04isrc\x121\n" + + "\bprovider\x18\x04 \x01(\x0e2\x15.metadata.v1.ProviderR\bproviderB\f\n" + + "\n" + + "identifier\"e\n" + + "\x15GetAlbumTracksRequest\x12\x19\n" + + "\balbum_id\x18\x01 \x01(\tR\aalbumId\x121\n" + + "\bprovider\x18\x02 \x01(\x0e2\x15.metadata.v1.ProviderR\bprovider\"\xc5\x01\n" + + "\x13SearchAlbumsRequest\x12\x14\n" + + "\x05query\x18\x01 \x01(\tR\x05query\x12\x16\n" + + "\x06artist\x18\x02 \x01(\tR\x06artist\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\x121\n" + + "\bprovider\x18\x05 \x01(\x0e2\x15.metadata.v1.ProviderR\bprovider\x12\x1f\n" + + "\valbum_types\x18\x06 \x03(\tR\n" + + "albumTypes\"\x9d\x01\n" + + "\x11SyncArtistRequest\x12\x14\n" + + "\x04name\x18\x01 \x01(\tH\x00R\x04name\x125\n" + + "\bexternal\x18\x02 \x01(\v2\x17.metadata.v1.ExternalIDH\x00R\bexternal\x121\n" + + "\bprovider\x18\x03 \x01(\x0e2\x15.metadata.v1.ProviderR\bproviderB\b\n" + + "\x06target\"@\n" + + "\x11GetArtistResponse\x12+\n" + + "\x06artist\x18\x01 \x01(\v2\x13.metadata.v1.ArtistR\x06artist\"\\\n" + + "\x15SearchArtistsResponse\x12-\n" + + "\aartists\x18\x01 \x03(\v2\x13.metadata.v1.ArtistR\aartists\x12\x14\n" + + "\x05total\x18\x02 \x01(\x05R\x05total\"<\n" + + "\x10GetAlbumResponse\x12(\n" + + "\x05album\x18\x01 \x01(\v2\x12.metadata.v1.AlbumR\x05album\"[\n" + + "\x17GetArtistAlbumsResponse\x12*\n" + + "\x06albums\x18\x01 \x03(\v2\x12.metadata.v1.AlbumR\x06albums\x12\x14\n" + + "\x05total\x18\x02 \x01(\x05R\x05total\"<\n" + + "\x10GetTrackResponse\x12(\n" + + "\x05track\x18\x01 \x01(\v2\x12.metadata.v1.TrackR\x05track\"D\n" + + "\x16GetAlbumTracksResponse\x12*\n" + + "\x06tracks\x18\x01 \x03(\v2\x12.metadata.v1.TrackR\x06tracks\"X\n" + + "\x14SearchAlbumsResponse\x12*\n" + + "\x06albums\x18\x01 \x03(\v2\x12.metadata.v1.AlbumR\x06albums\x12\x14\n" + + "\x05total\x18\x02 \x01(\x05R\x05total\"\x8b\x01\n" + + "\x12SyncArtistResponse\x12+\n" + + "\x06artist\x18\x01 \x01(\v2\x13.metadata.v1.ArtistR\x06artist\x12#\n" + + "\ralbums_synced\x18\x02 \x01(\x05R\falbumsSynced\x12#\n" + + "\rtracks_synced\x18\x03 \x01(\x05R\ftracksSynced\"\xf3\x02\n" + + "\x06Artist\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" + + "\tsort_name\x18\x03 \x01(\tR\bsortName\x12\x1f\n" + + "\vartist_type\x18\x04 \x01(\tR\n" + + "artistType\x12\x18\n" + + "\acountry\x18\x05 \x01(\tR\acountry\x12\x1f\n" + + "\vformed_date\x18\x06 \x01(\tR\n" + + "formedDate\x12%\n" + + "\x0edisbanded_date\x18\a \x01(\tR\rdisbandedDate\x12 \n" + + "\vdescription\x18\b \x01(\tR\vdescription\x12\x1b\n" + + "\timage_url\x18\t \x01(\tR\bimageUrl\x12*\n" + + "\x06genres\x18\n" + + " \x03(\v2\x12.metadata.v1.GenreR\x06genres\x12:\n" + + "\fexternal_ids\x18\v \x03(\v2\x17.metadata.v1.ExternalIDR\vexternalIds\"\xa9\x03\n" + + "\x05Album\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x1d\n" + + "\n" + + "album_type\x18\x03 \x01(\tR\talbumType\x12!\n" + + "\frelease_date\x18\x04 \x01(\tR\vreleaseDate\x12\x10\n" + + "\x03upc\x18\x05 \x01(\tR\x03upc\x12!\n" + + "\ftotal_tracks\x18\x06 \x01(\x05R\vtotalTracks\x12\x1f\n" + + "\vtotal_discs\x18\a \x01(\x05R\n" + + "totalDiscs\x12\x1b\n" + + "\tcover_url\x18\b \x01(\tR\bcoverUrl\x123\n" + + "\aartists\x18\t \x03(\v2\x19.metadata.v1.ArtistCreditR\aartists\x12(\n" + + "\x05label\x18\n" + + " \x01(\v2\x12.metadata.v1.LabelR\x05label\x12*\n" + + "\x06genres\x18\v \x03(\v2\x12.metadata.v1.GenreR\x06genres\x12:\n" + + "\fexternal_ids\x18\f \x03(\v2\x17.metadata.v1.ExternalIDR\vexternalIds\"\xda\x02\n" + + "\x05Track\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x1f\n" + + "\vduration_ms\x18\x03 \x01(\x05R\n" + + "durationMs\x12\x12\n" + + "\x04isrc\x18\x04 \x01(\tR\x04isrc\x12\x1a\n" + + "\bexplicit\x18\x05 \x01(\bR\bexplicit\x12\x1f\n" + + "\vdisc_number\x18\x06 \x01(\x05R\n" + + "discNumber\x12!\n" + + "\ftrack_number\x18\a \x01(\x05R\vtrackNumber\x123\n" + + "\aartists\x18\b \x03(\v2\x19.metadata.v1.ArtistCreditR\aartists\x12%\n" + + "\x04work\x18\t \x01(\v2\x11.metadata.v1.WorkR\x04work\x12:\n" + + "\fexternal_ids\x18\n" + + " \x03(\v2\x17.metadata.v1.ExternalIDR\vexternalIds\"\x9e\x01\n" + + "\x04Work\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x1b\n" + + "\twork_type\x18\x03 \x01(\tR\bworkType\x12\x1a\n" + + "\blanguage\x18\x04 \x01(\tR\blanguage\x127\n" + + "\tcomposers\x18\x05 \x03(\v2\x19.metadata.v1.ArtistCreditR\tcomposers\"E\n" + + "\x05Label\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + + "\acountry\x18\x03 \x01(\tR\acountry\"+\n" + + "\x05Genre\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\x8c\x01\n" + + "\fArtistCredit\x12+\n" + + "\x06artist\x18\x01 \x01(\v2\x13.metadata.v1.ArtistR\x06artist\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role\x12\x1a\n" + + "\bposition\x18\x03 \x01(\x05R\bposition\x12\x1f\n" + + "\vjoin_phrase\x18\x04 \x01(\tR\n" + + "joinPhrase\"S\n" + + "\n" + + "ExternalID\x12\x16\n" + + "\x06source\x18\x01 \x01(\tR\x06source\x12\x1b\n" + + "\tsource_id\x18\x02 \x01(\tR\bsourceId\x12\x10\n" + + "\x03url\x18\x03 \x01(\tR\x03url*>\n" + + "\bProvider\x12\x18\n" + + "\x14PROVIDER_UNSPECIFIED\x10\x00\x12\x18\n" + + "\x14PROVIDER_MUSICBRAINZ\x10\x012\xa4\x05\n" + + "\x0fMetadataService\x12J\n" + + "\tGetArtist\x12\x1d.metadata.v1.GetArtistRequest\x1a\x1e.metadata.v1.GetArtistResponse\x12V\n" + + "\rSearchArtists\x12!.metadata.v1.SearchArtistsRequest\x1a\".metadata.v1.SearchArtistsResponse\x12G\n" + + "\bGetAlbum\x12\x1c.metadata.v1.GetAlbumRequest\x1a\x1d.metadata.v1.GetAlbumResponse\x12\\\n" + + "\x0fGetArtistAlbums\x12#.metadata.v1.GetArtistAlbumsRequest\x1a$.metadata.v1.GetArtistAlbumsResponse\x12G\n" + + "\bGetTrack\x12\x1c.metadata.v1.GetTrackRequest\x1a\x1d.metadata.v1.GetTrackResponse\x12Y\n" + + "\x0eGetAlbumTracks\x12\".metadata.v1.GetAlbumTracksRequest\x1a#.metadata.v1.GetAlbumTracksResponse\x12S\n" + + "\fSearchAlbums\x12 .metadata.v1.SearchAlbumsRequest\x1a!.metadata.v1.SearchAlbumsResponse\x12M\n" + + "\n" + + "SyncArtist\x12\x1e.metadata.v1.SyncArtistRequest\x1a\x1f.metadata.v1.SyncArtistResponseB>Z metadata.v1.ExternalID + 0, // 1: metadata.v1.GetArtistRequest.provider:type_name -> metadata.v1.Provider + 0, // 2: metadata.v1.SearchArtistsRequest.provider:type_name -> metadata.v1.Provider + 24, // 3: metadata.v1.GetAlbumRequest.external:type_name -> metadata.v1.ExternalID + 0, // 4: metadata.v1.GetAlbumRequest.provider:type_name -> metadata.v1.Provider + 0, // 5: metadata.v1.GetArtistAlbumsRequest.provider:type_name -> metadata.v1.Provider + 24, // 6: metadata.v1.GetTrackRequest.external:type_name -> metadata.v1.ExternalID + 0, // 7: metadata.v1.GetTrackRequest.provider:type_name -> metadata.v1.Provider + 0, // 8: metadata.v1.GetAlbumTracksRequest.provider:type_name -> metadata.v1.Provider + 0, // 9: metadata.v1.SearchAlbumsRequest.provider:type_name -> metadata.v1.Provider + 24, // 10: metadata.v1.SyncArtistRequest.external:type_name -> metadata.v1.ExternalID + 0, // 11: metadata.v1.SyncArtistRequest.provider:type_name -> metadata.v1.Provider + 17, // 12: metadata.v1.GetArtistResponse.artist:type_name -> metadata.v1.Artist + 17, // 13: metadata.v1.SearchArtistsResponse.artists:type_name -> metadata.v1.Artist + 18, // 14: metadata.v1.GetAlbumResponse.album:type_name -> metadata.v1.Album + 18, // 15: metadata.v1.GetArtistAlbumsResponse.albums:type_name -> metadata.v1.Album + 19, // 16: metadata.v1.GetTrackResponse.track:type_name -> metadata.v1.Track + 19, // 17: metadata.v1.GetAlbumTracksResponse.tracks:type_name -> metadata.v1.Track + 18, // 18: metadata.v1.SearchAlbumsResponse.albums:type_name -> metadata.v1.Album + 17, // 19: metadata.v1.SyncArtistResponse.artist:type_name -> metadata.v1.Artist + 22, // 20: metadata.v1.Artist.genres:type_name -> metadata.v1.Genre + 24, // 21: metadata.v1.Artist.external_ids:type_name -> metadata.v1.ExternalID + 23, // 22: metadata.v1.Album.artists:type_name -> metadata.v1.ArtistCredit + 21, // 23: metadata.v1.Album.label:type_name -> metadata.v1.Label + 22, // 24: metadata.v1.Album.genres:type_name -> metadata.v1.Genre + 24, // 25: metadata.v1.Album.external_ids:type_name -> metadata.v1.ExternalID + 23, // 26: metadata.v1.Track.artists:type_name -> metadata.v1.ArtistCredit + 20, // 27: metadata.v1.Track.work:type_name -> metadata.v1.Work + 24, // 28: metadata.v1.Track.external_ids:type_name -> metadata.v1.ExternalID + 23, // 29: metadata.v1.Work.composers:type_name -> metadata.v1.ArtistCredit + 17, // 30: metadata.v1.ArtistCredit.artist:type_name -> metadata.v1.Artist + 1, // 31: metadata.v1.MetadataService.GetArtist:input_type -> metadata.v1.GetArtistRequest + 2, // 32: metadata.v1.MetadataService.SearchArtists:input_type -> metadata.v1.SearchArtistsRequest + 3, // 33: metadata.v1.MetadataService.GetAlbum:input_type -> metadata.v1.GetAlbumRequest + 4, // 34: metadata.v1.MetadataService.GetArtistAlbums:input_type -> metadata.v1.GetArtistAlbumsRequest + 5, // 35: metadata.v1.MetadataService.GetTrack:input_type -> metadata.v1.GetTrackRequest + 6, // 36: metadata.v1.MetadataService.GetAlbumTracks:input_type -> metadata.v1.GetAlbumTracksRequest + 7, // 37: metadata.v1.MetadataService.SearchAlbums:input_type -> metadata.v1.SearchAlbumsRequest + 8, // 38: metadata.v1.MetadataService.SyncArtist:input_type -> metadata.v1.SyncArtistRequest + 9, // 39: metadata.v1.MetadataService.GetArtist:output_type -> metadata.v1.GetArtistResponse + 10, // 40: metadata.v1.MetadataService.SearchArtists:output_type -> metadata.v1.SearchArtistsResponse + 11, // 41: metadata.v1.MetadataService.GetAlbum:output_type -> metadata.v1.GetAlbumResponse + 12, // 42: metadata.v1.MetadataService.GetArtistAlbums:output_type -> metadata.v1.GetArtistAlbumsResponse + 13, // 43: metadata.v1.MetadataService.GetTrack:output_type -> metadata.v1.GetTrackResponse + 14, // 44: metadata.v1.MetadataService.GetAlbumTracks:output_type -> metadata.v1.GetAlbumTracksResponse + 15, // 45: metadata.v1.MetadataService.SearchAlbums:output_type -> metadata.v1.SearchAlbumsResponse + 16, // 46: metadata.v1.MetadataService.SyncArtist:output_type -> metadata.v1.SyncArtistResponse + 39, // [39:47] is the sub-list for method output_type + 31, // [31:39] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name +} + +func init() { file_metadata_v1_metadata_proto_init() } +func file_metadata_v1_metadata_proto_init() { + if File_metadata_v1_metadata_proto != nil { + return + } + file_metadata_v1_metadata_proto_msgTypes[0].OneofWrappers = []any{ + (*GetArtistRequest_Id)(nil), + (*GetArtistRequest_External)(nil), + } + file_metadata_v1_metadata_proto_msgTypes[2].OneofWrappers = []any{ + (*GetAlbumRequest_Id)(nil), + (*GetAlbumRequest_External)(nil), + } + file_metadata_v1_metadata_proto_msgTypes[4].OneofWrappers = []any{ + (*GetTrackRequest_Id)(nil), + (*GetTrackRequest_External)(nil), + (*GetTrackRequest_Isrc)(nil), + } + file_metadata_v1_metadata_proto_msgTypes[7].OneofWrappers = []any{ + (*SyncArtistRequest_Name)(nil), + (*SyncArtistRequest_External)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_metadata_v1_metadata_proto_rawDesc), len(file_metadata_v1_metadata_proto_rawDesc)), + NumEnums: 1, + NumMessages: 24, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_metadata_v1_metadata_proto_goTypes, + DependencyIndexes: file_metadata_v1_metadata_proto_depIdxs, + EnumInfos: file_metadata_v1_metadata_proto_enumTypes, + MessageInfos: file_metadata_v1_metadata_proto_msgTypes, + }.Build() + File_metadata_v1_metadata_proto = out.File + file_metadata_v1_metadata_proto_goTypes = nil + file_metadata_v1_metadata_proto_depIdxs = nil +} diff --git a/gen/metadata/v1/metadata_grpc.pb.go b/gen/metadata/v1/metadata_grpc.pb.go new file mode 100644 index 0000000..f382674 --- /dev/null +++ b/gen/metadata/v1/metadata_grpc.pb.go @@ -0,0 +1,387 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: metadata/v1/metadata.proto + +package metadatav1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MetadataService_GetArtist_FullMethodName = "/metadata.v1.MetadataService/GetArtist" + MetadataService_SearchArtists_FullMethodName = "/metadata.v1.MetadataService/SearchArtists" + MetadataService_GetAlbum_FullMethodName = "/metadata.v1.MetadataService/GetAlbum" + MetadataService_GetArtistAlbums_FullMethodName = "/metadata.v1.MetadataService/GetArtistAlbums" + MetadataService_GetTrack_FullMethodName = "/metadata.v1.MetadataService/GetTrack" + MetadataService_GetAlbumTracks_FullMethodName = "/metadata.v1.MetadataService/GetAlbumTracks" + MetadataService_SearchAlbums_FullMethodName = "/metadata.v1.MetadataService/SearchAlbums" + MetadataService_SyncArtist_FullMethodName = "/metadata.v1.MetadataService/SyncArtist" +) + +// MetadataServiceClient is the client API for MetadataService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MetadataServiceClient interface { + GetArtist(ctx context.Context, in *GetArtistRequest, opts ...grpc.CallOption) (*GetArtistResponse, error) + SearchArtists(ctx context.Context, in *SearchArtistsRequest, opts ...grpc.CallOption) (*SearchArtistsResponse, error) + GetAlbum(ctx context.Context, in *GetAlbumRequest, opts ...grpc.CallOption) (*GetAlbumResponse, error) + GetArtistAlbums(ctx context.Context, in *GetArtistAlbumsRequest, opts ...grpc.CallOption) (*GetArtistAlbumsResponse, error) + GetTrack(ctx context.Context, in *GetTrackRequest, opts ...grpc.CallOption) (*GetTrackResponse, error) + GetAlbumTracks(ctx context.Context, in *GetAlbumTracksRequest, opts ...grpc.CallOption) (*GetAlbumTracksResponse, error) + SearchAlbums(ctx context.Context, in *SearchAlbumsRequest, opts ...grpc.CallOption) (*SearchAlbumsResponse, error) + SyncArtist(ctx context.Context, in *SyncArtistRequest, opts ...grpc.CallOption) (*SyncArtistResponse, error) +} + +type metadataServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewMetadataServiceClient(cc grpc.ClientConnInterface) MetadataServiceClient { + return &metadataServiceClient{cc} +} + +func (c *metadataServiceClient) GetArtist(ctx context.Context, in *GetArtistRequest, opts ...grpc.CallOption) (*GetArtistResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetArtistResponse) + err := c.cc.Invoke(ctx, MetadataService_GetArtist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) SearchArtists(ctx context.Context, in *SearchArtistsRequest, opts ...grpc.CallOption) (*SearchArtistsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SearchArtistsResponse) + err := c.cc.Invoke(ctx, MetadataService_SearchArtists_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) GetAlbum(ctx context.Context, in *GetAlbumRequest, opts ...grpc.CallOption) (*GetAlbumResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetAlbumResponse) + err := c.cc.Invoke(ctx, MetadataService_GetAlbum_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) GetArtistAlbums(ctx context.Context, in *GetArtistAlbumsRequest, opts ...grpc.CallOption) (*GetArtistAlbumsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetArtistAlbumsResponse) + err := c.cc.Invoke(ctx, MetadataService_GetArtistAlbums_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) GetTrack(ctx context.Context, in *GetTrackRequest, opts ...grpc.CallOption) (*GetTrackResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetTrackResponse) + err := c.cc.Invoke(ctx, MetadataService_GetTrack_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) GetAlbumTracks(ctx context.Context, in *GetAlbumTracksRequest, opts ...grpc.CallOption) (*GetAlbumTracksResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetAlbumTracksResponse) + err := c.cc.Invoke(ctx, MetadataService_GetAlbumTracks_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) SearchAlbums(ctx context.Context, in *SearchAlbumsRequest, opts ...grpc.CallOption) (*SearchAlbumsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SearchAlbumsResponse) + err := c.cc.Invoke(ctx, MetadataService_SearchAlbums_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) SyncArtist(ctx context.Context, in *SyncArtistRequest, opts ...grpc.CallOption) (*SyncArtistResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SyncArtistResponse) + err := c.cc.Invoke(ctx, MetadataService_SyncArtist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MetadataServiceServer is the server API for MetadataService service. +// All implementations must embed UnimplementedMetadataServiceServer +// for forward compatibility. +type MetadataServiceServer interface { + GetArtist(context.Context, *GetArtistRequest) (*GetArtistResponse, error) + SearchArtists(context.Context, *SearchArtistsRequest) (*SearchArtistsResponse, error) + GetAlbum(context.Context, *GetAlbumRequest) (*GetAlbumResponse, error) + GetArtistAlbums(context.Context, *GetArtistAlbumsRequest) (*GetArtistAlbumsResponse, error) + GetTrack(context.Context, *GetTrackRequest) (*GetTrackResponse, error) + GetAlbumTracks(context.Context, *GetAlbumTracksRequest) (*GetAlbumTracksResponse, error) + SearchAlbums(context.Context, *SearchAlbumsRequest) (*SearchAlbumsResponse, error) + SyncArtist(context.Context, *SyncArtistRequest) (*SyncArtistResponse, error) + mustEmbedUnimplementedMetadataServiceServer() +} + +// UnimplementedMetadataServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMetadataServiceServer struct{} + +func (UnimplementedMetadataServiceServer) GetArtist(context.Context, *GetArtistRequest) (*GetArtistResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetArtist not implemented") +} +func (UnimplementedMetadataServiceServer) SearchArtists(context.Context, *SearchArtistsRequest) (*SearchArtistsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SearchArtists not implemented") +} +func (UnimplementedMetadataServiceServer) GetAlbum(context.Context, *GetAlbumRequest) (*GetAlbumResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetAlbum not implemented") +} +func (UnimplementedMetadataServiceServer) GetArtistAlbums(context.Context, *GetArtistAlbumsRequest) (*GetArtistAlbumsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetArtistAlbums not implemented") +} +func (UnimplementedMetadataServiceServer) GetTrack(context.Context, *GetTrackRequest) (*GetTrackResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetTrack not implemented") +} +func (UnimplementedMetadataServiceServer) GetAlbumTracks(context.Context, *GetAlbumTracksRequest) (*GetAlbumTracksResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetAlbumTracks not implemented") +} +func (UnimplementedMetadataServiceServer) SearchAlbums(context.Context, *SearchAlbumsRequest) (*SearchAlbumsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SearchAlbums not implemented") +} +func (UnimplementedMetadataServiceServer) SyncArtist(context.Context, *SyncArtistRequest) (*SyncArtistResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SyncArtist not implemented") +} +func (UnimplementedMetadataServiceServer) mustEmbedUnimplementedMetadataServiceServer() {} +func (UnimplementedMetadataServiceServer) testEmbeddedByValue() {} + +// UnsafeMetadataServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MetadataServiceServer will +// result in compilation errors. +type UnsafeMetadataServiceServer interface { + mustEmbedUnimplementedMetadataServiceServer() +} + +func RegisterMetadataServiceServer(s grpc.ServiceRegistrar, srv MetadataServiceServer) { + // If the following call panics, it indicates UnimplementedMetadataServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MetadataService_ServiceDesc, srv) +} + +func _MetadataService_GetArtist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtistRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetArtist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetArtist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetArtist(ctx, req.(*GetArtistRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_SearchArtists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchArtistsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).SearchArtists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_SearchArtists_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).SearchArtists(ctx, req.(*SearchArtistsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_GetAlbum_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlbumRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetAlbum(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetAlbum_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetAlbum(ctx, req.(*GetAlbumRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_GetArtistAlbums_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtistAlbumsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetArtistAlbums(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetArtistAlbums_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetArtistAlbums(ctx, req.(*GetArtistAlbumsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_GetTrack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTrackRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetTrack(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetTrack_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetTrack(ctx, req.(*GetTrackRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_GetAlbumTracks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlbumTracksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetAlbumTracks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetAlbumTracks_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetAlbumTracks(ctx, req.(*GetAlbumTracksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_SearchAlbums_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchAlbumsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).SearchAlbums(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_SearchAlbums_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).SearchAlbums(ctx, req.(*SearchAlbumsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_SyncArtist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SyncArtistRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).SyncArtist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_SyncArtist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).SyncArtist(ctx, req.(*SyncArtistRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MetadataService_ServiceDesc is the grpc.ServiceDesc for MetadataService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MetadataService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "metadata.v1.MetadataService", + HandlerType: (*MetadataServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetArtist", + Handler: _MetadataService_GetArtist_Handler, + }, + { + MethodName: "SearchArtists", + Handler: _MetadataService_SearchArtists_Handler, + }, + { + MethodName: "GetAlbum", + Handler: _MetadataService_GetAlbum_Handler, + }, + { + MethodName: "GetArtistAlbums", + Handler: _MetadataService_GetArtistAlbums_Handler, + }, + { + MethodName: "GetTrack", + Handler: _MetadataService_GetTrack_Handler, + }, + { + MethodName: "GetAlbumTracks", + Handler: _MetadataService_GetAlbumTracks_Handler, + }, + { + MethodName: "SearchAlbums", + Handler: _MetadataService_SearchAlbums_Handler, + }, + { + MethodName: "SyncArtist", + Handler: _MetadataService_SyncArtist_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "metadata/v1/metadata.proto", +} diff --git a/gen/music_agregator/hello/v1/service.pb.go b/gen/music_agregator/hello/v1/service.pb.go new file mode 100644 index 0000000..6d91364 --- /dev/null +++ b/gen/music_agregator/hello/v1/service.pb.go @@ -0,0 +1,252 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: music_agregator/hello/v1/service.proto + +package hello + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PingRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PingRequest) Reset() { + *x = PingRequest{} + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PingRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PingRequest) ProtoMessage() {} + +func (x *PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. +func (*PingRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_hello_v1_service_proto_rawDescGZIP(), []int{0} +} + +type PongResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PongResponse) Reset() { + *x = PongResponse{} + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PongResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PongResponse) ProtoMessage() {} + +func (x *PongResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PongResponse.ProtoReflect.Descriptor instead. +func (*PongResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_hello_v1_service_proto_rawDescGZIP(), []int{1} +} + +type EchoRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EchoRequest) Reset() { + *x = EchoRequest{} + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EchoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EchoRequest) ProtoMessage() {} + +func (x *EchoRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EchoRequest.ProtoReflect.Descriptor instead. +func (*EchoRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_hello_v1_service_proto_rawDescGZIP(), []int{2} +} + +func (x *EchoRequest) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type EchoResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EchoResponse) Reset() { + *x = EchoResponse{} + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EchoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EchoResponse) ProtoMessage() {} + +func (x *EchoResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_hello_v1_service_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EchoResponse.ProtoReflect.Descriptor instead. +func (*EchoResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_hello_v1_service_proto_rawDescGZIP(), []int{3} +} + +func (x *EchoResponse) GetResponse() string { + if x != nil { + return x.Response + } + return "" +} + +var File_music_agregator_hello_v1_service_proto protoreflect.FileDescriptor + +const file_music_agregator_hello_v1_service_proto_rawDesc = "" + + "\n" + + "&music_agregator/hello/v1/service.proto\x12\x18music_agregator.hello.v1\"\r\n" + + "\vPingRequest\"\x0e\n" + + "\fPongResponse\"\x1f\n" + + "\vEchoRequest\x12\x10\n" + + "\x03msg\x18\x01 \x01(\tR\x03msg\"*\n" + + "\fEchoResponse\x12\x1a\n" + + "\bresponse\x18\x01 \x01(\tR\bresponse2\xc0\x01\n" + + "\fHelloService\x12W\n" + + "\x04Ping\x12%.music_agregator.hello.v1.PingRequest\x1a&.music_agregator.hello.v1.PongResponse\"\x00\x12W\n" + + "\x04Echo\x12%.music_agregator.hello.v1.EchoRequest\x1a&.music_agregator.hello.v1.EchoResponse\"\x00B:Z8homelab.lan/music-agregator/gen/music_agregator/v1/hellob\x06proto3" + +var ( + file_music_agregator_hello_v1_service_proto_rawDescOnce sync.Once + file_music_agregator_hello_v1_service_proto_rawDescData []byte +) + +func file_music_agregator_hello_v1_service_proto_rawDescGZIP() []byte { + file_music_agregator_hello_v1_service_proto_rawDescOnce.Do(func() { + file_music_agregator_hello_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_music_agregator_hello_v1_service_proto_rawDesc), len(file_music_agregator_hello_v1_service_proto_rawDesc))) + }) + return file_music_agregator_hello_v1_service_proto_rawDescData +} + +var file_music_agregator_hello_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_music_agregator_hello_v1_service_proto_goTypes = []any{ + (*PingRequest)(nil), // 0: music_agregator.hello.v1.PingRequest + (*PongResponse)(nil), // 1: music_agregator.hello.v1.PongResponse + (*EchoRequest)(nil), // 2: music_agregator.hello.v1.EchoRequest + (*EchoResponse)(nil), // 3: music_agregator.hello.v1.EchoResponse +} +var file_music_agregator_hello_v1_service_proto_depIdxs = []int32{ + 0, // 0: music_agregator.hello.v1.HelloService.Ping:input_type -> music_agregator.hello.v1.PingRequest + 2, // 1: music_agregator.hello.v1.HelloService.Echo:input_type -> music_agregator.hello.v1.EchoRequest + 1, // 2: music_agregator.hello.v1.HelloService.Ping:output_type -> music_agregator.hello.v1.PongResponse + 3, // 3: music_agregator.hello.v1.HelloService.Echo:output_type -> music_agregator.hello.v1.EchoResponse + 2, // [2:4] is the sub-list for method output_type + 0, // [0:2] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_music_agregator_hello_v1_service_proto_init() } +func file_music_agregator_hello_v1_service_proto_init() { + if File_music_agregator_hello_v1_service_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_music_agregator_hello_v1_service_proto_rawDesc), len(file_music_agregator_hello_v1_service_proto_rawDesc)), + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_music_agregator_hello_v1_service_proto_goTypes, + DependencyIndexes: file_music_agregator_hello_v1_service_proto_depIdxs, + MessageInfos: file_music_agregator_hello_v1_service_proto_msgTypes, + }.Build() + File_music_agregator_hello_v1_service_proto = out.File + file_music_agregator_hello_v1_service_proto_goTypes = nil + file_music_agregator_hello_v1_service_proto_depIdxs = nil +} diff --git a/gen/music_agregator/hello/v1/service_grpc.pb.go b/gen/music_agregator/hello/v1/service_grpc.pb.go new file mode 100644 index 0000000..99f8568 --- /dev/null +++ b/gen/music_agregator/hello/v1/service_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: music_agregator/hello/v1/service.proto + +package hello + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + HelloService_Ping_FullMethodName = "/music_agregator.hello.v1.HelloService/Ping" + HelloService_Echo_FullMethodName = "/music_agregator.hello.v1.HelloService/Echo" +) + +// HelloServiceClient is the client API for HelloService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type HelloServiceClient interface { + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PongResponse, error) + Echo(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error) +} + +type helloServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewHelloServiceClient(cc grpc.ClientConnInterface) HelloServiceClient { + return &helloServiceClient{cc} +} + +func (c *helloServiceClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PongResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(PongResponse) + err := c.cc.Invoke(ctx, HelloService_Ping_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *helloServiceClient) Echo(ctx context.Context, in *EchoRequest, opts ...grpc.CallOption) (*EchoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(EchoResponse) + err := c.cc.Invoke(ctx, HelloService_Echo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// HelloServiceServer is the server API for HelloService service. +// All implementations must embed UnimplementedHelloServiceServer +// for forward compatibility. +type HelloServiceServer interface { + Ping(context.Context, *PingRequest) (*PongResponse, error) + Echo(context.Context, *EchoRequest) (*EchoResponse, error) + mustEmbedUnimplementedHelloServiceServer() +} + +// UnimplementedHelloServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedHelloServiceServer struct{} + +func (UnimplementedHelloServiceServer) Ping(context.Context, *PingRequest) (*PongResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Ping not implemented") +} +func (UnimplementedHelloServiceServer) Echo(context.Context, *EchoRequest) (*EchoResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Echo not implemented") +} +func (UnimplementedHelloServiceServer) mustEmbedUnimplementedHelloServiceServer() {} +func (UnimplementedHelloServiceServer) testEmbeddedByValue() {} + +// UnsafeHelloServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to HelloServiceServer will +// result in compilation errors. +type UnsafeHelloServiceServer interface { + mustEmbedUnimplementedHelloServiceServer() +} + +func RegisterHelloServiceServer(s grpc.ServiceRegistrar, srv HelloServiceServer) { + // If the following call panics, it indicates UnimplementedHelloServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&HelloService_ServiceDesc, srv) +} + +func _HelloService_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HelloServiceServer).Ping(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HelloService_Ping_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HelloServiceServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HelloService_Echo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EchoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HelloServiceServer).Echo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HelloService_Echo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HelloServiceServer).Echo(ctx, req.(*EchoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// HelloService_ServiceDesc is the grpc.ServiceDesc for HelloService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var HelloService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "music_agregator.hello.v1.HelloService", + HandlerType: (*HelloServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Ping", + Handler: _HelloService_Ping_Handler, + }, + { + MethodName: "Echo", + Handler: _HelloService_Echo_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "music_agregator/hello/v1/service.proto", +} diff --git a/gen/music_agregator/indexer/v1/indexer.pb.go b/gen/music_agregator/indexer/v1/indexer.pb.go new file mode 100644 index 0000000..aeba0e1 --- /dev/null +++ b/gen/music_agregator/indexer/v1/indexer.pb.go @@ -0,0 +1,1179 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: music_agregator/indexer/v1/indexer.proto + +package indexer + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type SearchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Tracker string `protobuf:"bytes,3,opt,name=tracker,proto3" json:"tracker,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchRequest) Reset() { + *x = SearchRequest{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchRequest) ProtoMessage() {} + +func (x *SearchRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead. +func (*SearchRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{0} +} + +func (x *SearchRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *SearchRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *SearchRequest) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +type SearchResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Result []*SearchItem `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchResponse) Reset() { + *x = SearchResponse{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResponse) ProtoMessage() {} + +func (x *SearchResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. +func (*SearchResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{1} +} + +func (x *SearchResponse) GetResult() []*SearchItem { + if x != nil { + return x.Result + } + return nil +} + +type SearchItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + DownloadLink string `protobuf:"bytes,2,opt,name=download_link,json=downloadLink,proto3" json:"download_link,omitempty"` + TorrentPageUrl string `protobuf:"bytes,3,opt,name=torrent_page_url,json=torrentPageUrl,proto3" json:"torrent_page_url,omitempty"` + PubDate string `protobuf:"bytes,4,opt,name=pub_date,json=pubDate,proto3" json:"pub_date,omitempty"` + Size int64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Categories []string `protobuf:"bytes,7,rep,name=categories,proto3" json:"categories,omitempty"` + Enclosure *Enclosure `protobuf:"bytes,8,opt,name=enclosure,proto3" json:"enclosure,omitempty"` + TorznabAttrs []*TorznabAttr `protobuf:"bytes,9,rep,name=torznab_attrs,json=torznabAttrs,proto3" json:"torznab_attrs,omitempty"` + Release *Release `protobuf:"bytes,10,opt,name=release,proto3" json:"release,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchItem) Reset() { + *x = SearchItem{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchItem) ProtoMessage() {} + +func (x *SearchItem) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchItem.ProtoReflect.Descriptor instead. +func (*SearchItem) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{2} +} + +func (x *SearchItem) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *SearchItem) GetDownloadLink() string { + if x != nil { + return x.DownloadLink + } + return "" +} + +func (x *SearchItem) GetTorrentPageUrl() string { + if x != nil { + return x.TorrentPageUrl + } + return "" +} + +func (x *SearchItem) GetPubDate() string { + if x != nil { + return x.PubDate + } + return "" +} + +func (x *SearchItem) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *SearchItem) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *SearchItem) GetCategories() []string { + if x != nil { + return x.Categories + } + return nil +} + +func (x *SearchItem) GetEnclosure() *Enclosure { + if x != nil { + return x.Enclosure + } + return nil +} + +func (x *SearchItem) GetTorznabAttrs() []*TorznabAttr { + if x != nil { + return x.TorznabAttrs + } + return nil +} + +func (x *SearchItem) GetRelease() *Release { + if x != nil { + return x.Release + } + return nil +} + +type Release struct { + state protoimpl.MessageState `protogen:"open.v1"` + RawTitle string `protobuf:"bytes,1,opt,name=raw_title,json=rawTitle,proto3" json:"raw_title,omitempty"` + Artist string `protobuf:"bytes,2,opt,name=artist,proto3" json:"artist,omitempty"` + Album string `protobuf:"bytes,3,opt,name=album,proto3" json:"album,omitempty"` + Year int32 `protobuf:"varint,4,opt,name=year,proto3" json:"year,omitempty"` + YearEnd int32 `protobuf:"varint,5,opt,name=year_end,json=yearEnd,proto3" json:"year_end,omitempty"` + Type string `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` + Genres []string `protobuf:"bytes,7,rep,name=genres,proto3" json:"genres,omitempty"` + Format string `protobuf:"bytes,8,opt,name=format,proto3" json:"format,omitempty"` + Source string `protobuf:"bytes,9,opt,name=source,proto3" json:"source,omitempty"` + Bitrate string `protobuf:"bytes,10,opt,name=bitrate,proto3" json:"bitrate,omitempty"` + BitDepth int32 `protobuf:"varint,11,opt,name=bit_depth,json=bitDepth,proto3" json:"bit_depth,omitempty"` + SampleRate int32 `protobuf:"varint,12,opt,name=sample_rate,json=sampleRate,proto3" json:"sample_rate,omitempty"` + RipType string `protobuf:"bytes,13,opt,name=rip_type,json=ripType,proto3" json:"rip_type,omitempty"` + ReleaseCount int32 `protobuf:"varint,14,opt,name=release_count,json=releaseCount,proto3" json:"release_count,omitempty"` + Tags []string `protobuf:"bytes,15,rep,name=tags,proto3" json:"tags,omitempty"` + Label string `protobuf:"bytes,16,opt,name=label,proto3" json:"label,omitempty"` + CatalogNum string `protobuf:"bytes,17,opt,name=catalog_num,json=catalogNum,proto3" json:"catalog_num,omitempty"` + ParsedSuccessfully bool `protobuf:"varint,18,opt,name=parsed_successfully,json=parsedSuccessfully,proto3" json:"parsed_successfully,omitempty"` + ParseErrors []string `protobuf:"bytes,19,rep,name=parse_errors,json=parseErrors,proto3" json:"parse_errors,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Release) Reset() { + *x = Release{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Release) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Release) ProtoMessage() {} + +func (x *Release) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Release.ProtoReflect.Descriptor instead. +func (*Release) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{3} +} + +func (x *Release) GetRawTitle() string { + if x != nil { + return x.RawTitle + } + return "" +} + +func (x *Release) GetArtist() string { + if x != nil { + return x.Artist + } + return "" +} + +func (x *Release) GetAlbum() string { + if x != nil { + return x.Album + } + return "" +} + +func (x *Release) GetYear() int32 { + if x != nil { + return x.Year + } + return 0 +} + +func (x *Release) GetYearEnd() int32 { + if x != nil { + return x.YearEnd + } + return 0 +} + +func (x *Release) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Release) GetGenres() []string { + if x != nil { + return x.Genres + } + return nil +} + +func (x *Release) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *Release) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *Release) GetBitrate() string { + if x != nil { + return x.Bitrate + } + return "" +} + +func (x *Release) GetBitDepth() int32 { + if x != nil { + return x.BitDepth + } + return 0 +} + +func (x *Release) GetSampleRate() int32 { + if x != nil { + return x.SampleRate + } + return 0 +} + +func (x *Release) GetRipType() string { + if x != nil { + return x.RipType + } + return "" +} + +func (x *Release) GetReleaseCount() int32 { + if x != nil { + return x.ReleaseCount + } + return 0 +} + +func (x *Release) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *Release) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *Release) GetCatalogNum() string { + if x != nil { + return x.CatalogNum + } + return "" +} + +func (x *Release) GetParsedSuccessfully() bool { + if x != nil { + return x.ParsedSuccessfully + } + return false +} + +func (x *Release) GetParseErrors() []string { + if x != nil { + return x.ParseErrors + } + return nil +} + +type Enclosure struct { + state protoimpl.MessageState `protogen:"open.v1"` + Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + Length int64 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Enclosure) Reset() { + *x = Enclosure{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Enclosure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Enclosure) ProtoMessage() {} + +func (x *Enclosure) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Enclosure.ProtoReflect.Descriptor instead. +func (*Enclosure) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{4} +} + +func (x *Enclosure) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *Enclosure) GetLength() int64 { + if x != nil { + return x.Length + } + return 0 +} + +func (x *Enclosure) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +type TorznabAttr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TorznabAttr) Reset() { + *x = TorznabAttr{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TorznabAttr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TorznabAttr) ProtoMessage() {} + +func (x *TorznabAttr) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TorznabAttr.ProtoReflect.Descriptor instead. +func (*TorznabAttr) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{5} +} + +func (x *TorznabAttr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TorznabAttr) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type CapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Indexer string `protobuf:"bytes,1,opt,name=indexer,proto3" json:"indexer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CapabilitiesRequest) Reset() { + *x = CapabilitiesRequest{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CapabilitiesRequest) ProtoMessage() {} + +func (x *CapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CapabilitiesRequest.ProtoReflect.Descriptor instead. +func (*CapabilitiesRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{6} +} + +func (x *CapabilitiesRequest) GetIndexer() string { + if x != nil { + return x.Indexer + } + return "" +} + +type CapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Server *Server `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` + Limits *Limits `protobuf:"bytes,2,opt,name=limits,proto3" json:"limits,omitempty"` + Searching *Searching `protobuf:"bytes,3,opt,name=searching,proto3" json:"searching,omitempty"` + Categories []*Category `protobuf:"bytes,4,rep,name=categories,proto3" json:"categories,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CapabilitiesResponse) Reset() { + *x = CapabilitiesResponse{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CapabilitiesResponse) ProtoMessage() {} + +func (x *CapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CapabilitiesResponse.ProtoReflect.Descriptor instead. +func (*CapabilitiesResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{7} +} + +func (x *CapabilitiesResponse) GetServer() *Server { + if x != nil { + return x.Server + } + return nil +} + +func (x *CapabilitiesResponse) GetLimits() *Limits { + if x != nil { + return x.Limits + } + return nil +} + +func (x *CapabilitiesResponse) GetSearching() *Searching { + if x != nil { + return x.Searching + } + return nil +} + +func (x *CapabilitiesResponse) GetCategories() []*Category { + if x != nil { + return x.Categories + } + return nil +} + +type Server struct { + state protoimpl.MessageState `protogen:"open.v1"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Server) Reset() { + *x = Server{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Server) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Server) ProtoMessage() {} + +func (x *Server) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Server.ProtoReflect.Descriptor instead. +func (*Server) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{8} +} + +func (x *Server) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +type Limits struct { + state protoimpl.MessageState `protogen:"open.v1"` + Default int32 `protobuf:"varint,1,opt,name=default,proto3" json:"default,omitempty"` + Max int32 `protobuf:"varint,2,opt,name=max,proto3" json:"max,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Limits) Reset() { + *x = Limits{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Limits) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Limits) ProtoMessage() {} + +func (x *Limits) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Limits.ProtoReflect.Descriptor instead. +func (*Limits) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{9} +} + +func (x *Limits) GetDefault() int32 { + if x != nil { + return x.Default + } + return 0 +} + +func (x *Limits) GetMax() int32 { + if x != nil { + return x.Max + } + return 0 +} + +type Searching struct { + state protoimpl.MessageState `protogen:"open.v1"` + Search *SearchCapability `protobuf:"bytes,1,opt,name=search,proto3" json:"search,omitempty"` + TvSearch *SearchCapability `protobuf:"bytes,2,opt,name=tv_search,json=tvSearch,proto3" json:"tv_search,omitempty"` + MovieSearch *SearchCapability `protobuf:"bytes,3,opt,name=movie_search,json=movieSearch,proto3" json:"movie_search,omitempty"` + MusicSearch *SearchCapability `protobuf:"bytes,4,opt,name=music_search,json=musicSearch,proto3" json:"music_search,omitempty"` + AudioSearch *SearchCapability `protobuf:"bytes,5,opt,name=audio_search,json=audioSearch,proto3" json:"audio_search,omitempty"` + BookSearch *SearchCapability `protobuf:"bytes,6,opt,name=book_search,json=bookSearch,proto3" json:"book_search,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Searching) Reset() { + *x = Searching{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Searching) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Searching) ProtoMessage() {} + +func (x *Searching) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Searching.ProtoReflect.Descriptor instead. +func (*Searching) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{10} +} + +func (x *Searching) GetSearch() *SearchCapability { + if x != nil { + return x.Search + } + return nil +} + +func (x *Searching) GetTvSearch() *SearchCapability { + if x != nil { + return x.TvSearch + } + return nil +} + +func (x *Searching) GetMovieSearch() *SearchCapability { + if x != nil { + return x.MovieSearch + } + return nil +} + +func (x *Searching) GetMusicSearch() *SearchCapability { + if x != nil { + return x.MusicSearch + } + return nil +} + +func (x *Searching) GetAudioSearch() *SearchCapability { + if x != nil { + return x.AudioSearch + } + return nil +} + +func (x *Searching) GetBookSearch() *SearchCapability { + if x != nil { + return x.BookSearch + } + return nil +} + +type SearchCapability struct { + state protoimpl.MessageState `protogen:"open.v1"` + Available bool `protobuf:"varint,1,opt,name=available,proto3" json:"available,omitempty"` + SupportedParams []string `protobuf:"bytes,2,rep,name=supported_params,json=supportedParams,proto3" json:"supported_params,omitempty"` + SearchEngine string `protobuf:"bytes,3,opt,name=search_engine,json=searchEngine,proto3" json:"search_engine,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchCapability) Reset() { + *x = SearchCapability{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchCapability) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchCapability) ProtoMessage() {} + +func (x *SearchCapability) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchCapability.ProtoReflect.Descriptor instead. +func (*SearchCapability) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{11} +} + +func (x *SearchCapability) GetAvailable() bool { + if x != nil { + return x.Available + } + return false +} + +func (x *SearchCapability) GetSupportedParams() []string { + if x != nil { + return x.SupportedParams + } + return nil +} + +func (x *SearchCapability) GetSearchEngine() string { + if x != nil { + return x.SearchEngine + } + return "" +} + +type Category struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Subcats []*Subcat `protobuf:"bytes,3,rep,name=subcats,proto3" json:"subcats,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Category) Reset() { + *x = Category{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Category) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Category) ProtoMessage() {} + +func (x *Category) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Category.ProtoReflect.Descriptor instead. +func (*Category) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{12} +} + +func (x *Category) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Category) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Category) GetSubcats() []*Subcat { + if x != nil { + return x.Subcats + } + return nil +} + +type Subcat struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Subcat) Reset() { + *x = Subcat{} + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Subcat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Subcat) ProtoMessage() {} + +func (x *Subcat) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_indexer_v1_indexer_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Subcat.ProtoReflect.Descriptor instead. +func (*Subcat) Descriptor() ([]byte, []int) { + return file_music_agregator_indexer_v1_indexer_proto_rawDescGZIP(), []int{13} +} + +func (x *Subcat) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Subcat) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +var File_music_agregator_indexer_v1_indexer_proto protoreflect.FileDescriptor + +const file_music_agregator_indexer_v1_indexer_proto_rawDesc = "" + + "\n" + + "(music_agregator/indexer/v1/indexer.proto\x12\x1amusic_agregator.indexer.v1\"U\n" + + "\rSearchRequest\x12\x14\n" + + "\x05query\x18\x01 \x01(\tR\x05query\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x18\n" + + "\atracker\x18\x03 \x01(\tR\atracker\"P\n" + + "\x0eSearchResponse\x12>\n" + + "\x06result\x18\x01 \x03(\v2&.music_agregator.indexer.v1.SearchItemR\x06result\"\xb4\x03\n" + + "\n" + + "SearchItem\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\x12#\n" + + "\rdownload_link\x18\x02 \x01(\tR\fdownloadLink\x12(\n" + + "\x10torrent_page_url\x18\x03 \x01(\tR\x0etorrentPageUrl\x12\x19\n" + + "\bpub_date\x18\x04 \x01(\tR\apubDate\x12\x12\n" + + "\x04size\x18\x05 \x01(\x03R\x04size\x12 \n" + + "\vdescription\x18\x06 \x01(\tR\vdescription\x12\x1e\n" + + "\n" + + "categories\x18\a \x03(\tR\n" + + "categories\x12C\n" + + "\tenclosure\x18\b \x01(\v2%.music_agregator.indexer.v1.EnclosureR\tenclosure\x12L\n" + + "\rtorznab_attrs\x18\t \x03(\v2'.music_agregator.indexer.v1.TorznabAttrR\ftorznabAttrs\x12=\n" + + "\arelease\x18\n" + + " \x01(\v2#.music_agregator.indexer.v1.ReleaseR\arelease\"\x96\x04\n" + + "\aRelease\x12\x1b\n" + + "\traw_title\x18\x01 \x01(\tR\brawTitle\x12\x16\n" + + "\x06artist\x18\x02 \x01(\tR\x06artist\x12\x14\n" + + "\x05album\x18\x03 \x01(\tR\x05album\x12\x12\n" + + "\x04year\x18\x04 \x01(\x05R\x04year\x12\x19\n" + + "\byear_end\x18\x05 \x01(\x05R\ayearEnd\x12\x12\n" + + "\x04type\x18\x06 \x01(\tR\x04type\x12\x16\n" + + "\x06genres\x18\a \x03(\tR\x06genres\x12\x16\n" + + "\x06format\x18\b \x01(\tR\x06format\x12\x16\n" + + "\x06source\x18\t \x01(\tR\x06source\x12\x18\n" + + "\abitrate\x18\n" + + " \x01(\tR\abitrate\x12\x1b\n" + + "\tbit_depth\x18\v \x01(\x05R\bbitDepth\x12\x1f\n" + + "\vsample_rate\x18\f \x01(\x05R\n" + + "sampleRate\x12\x19\n" + + "\brip_type\x18\r \x01(\tR\aripType\x12#\n" + + "\rrelease_count\x18\x0e \x01(\x05R\freleaseCount\x12\x12\n" + + "\x04tags\x18\x0f \x03(\tR\x04tags\x12\x14\n" + + "\x05label\x18\x10 \x01(\tR\x05label\x12\x1f\n" + + "\vcatalog_num\x18\x11 \x01(\tR\n" + + "catalogNum\x12/\n" + + "\x13parsed_successfully\x18\x12 \x01(\bR\x12parsedSuccessfully\x12!\n" + + "\fparse_errors\x18\x13 \x03(\tR\vparseErrors\"I\n" + + "\tEnclosure\x12\x10\n" + + "\x03url\x18\x01 \x01(\tR\x03url\x12\x16\n" + + "\x06length\x18\x02 \x01(\x03R\x06length\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\"7\n" + + "\vTorznabAttr\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"/\n" + + "\x13CapabilitiesRequest\x12\x18\n" + + "\aindexer\x18\x01 \x01(\tR\aindexer\"\x99\x02\n" + + "\x14CapabilitiesResponse\x12:\n" + + "\x06server\x18\x01 \x01(\v2\".music_agregator.indexer.v1.ServerR\x06server\x12:\n" + + "\x06limits\x18\x02 \x01(\v2\".music_agregator.indexer.v1.LimitsR\x06limits\x12C\n" + + "\tsearching\x18\x03 \x01(\v2%.music_agregator.indexer.v1.SearchingR\tsearching\x12D\n" + + "\n" + + "categories\x18\x04 \x03(\v2$.music_agregator.indexer.v1.CategoryR\n" + + "categories\"\x1e\n" + + "\x06Server\x12\x14\n" + + "\x05title\x18\x01 \x01(\tR\x05title\"4\n" + + "\x06Limits\x12\x18\n" + + "\adefault\x18\x01 \x01(\x05R\adefault\x12\x10\n" + + "\x03max\x18\x02 \x01(\x05R\x03max\"\xde\x03\n" + + "\tSearching\x12D\n" + + "\x06search\x18\x01 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\x06search\x12I\n" + + "\ttv_search\x18\x02 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\btvSearch\x12O\n" + + "\fmovie_search\x18\x03 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\vmovieSearch\x12O\n" + + "\fmusic_search\x18\x04 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\vmusicSearch\x12O\n" + + "\faudio_search\x18\x05 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\vaudioSearch\x12M\n" + + "\vbook_search\x18\x06 \x01(\v2,.music_agregator.indexer.v1.SearchCapabilityR\n" + + "bookSearch\"\x80\x01\n" + + "\x10SearchCapability\x12\x1c\n" + + "\tavailable\x18\x01 \x01(\bR\tavailable\x12)\n" + + "\x10supported_params\x18\x02 \x03(\tR\x0fsupportedParams\x12#\n" + + "\rsearch_engine\x18\x03 \x01(\tR\fsearchEngine\"l\n" + + "\bCategory\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12<\n" + + "\asubcats\x18\x03 \x03(\v2\".music_agregator.indexer.v1.SubcatR\asubcats\",\n" + + "\x06Subcat\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name2\xe8\x01\n" + + "\x0eIndexerService\x12a\n" + + "\x06Search\x12).music_agregator.indexer.v1.SearchRequest\x1a*.music_agregator.indexer.v1.SearchResponse\"\x00\x12s\n" + + "\fCapabilities\x12/.music_agregator.indexer.v1.CapabilitiesRequest\x1a0.music_agregator.indexer.v1.CapabilitiesResponse\"\x00B music_agregator.indexer.v1.SearchItem + 4, // 1: music_agregator.indexer.v1.SearchItem.enclosure:type_name -> music_agregator.indexer.v1.Enclosure + 5, // 2: music_agregator.indexer.v1.SearchItem.torznab_attrs:type_name -> music_agregator.indexer.v1.TorznabAttr + 3, // 3: music_agregator.indexer.v1.SearchItem.release:type_name -> music_agregator.indexer.v1.Release + 8, // 4: music_agregator.indexer.v1.CapabilitiesResponse.server:type_name -> music_agregator.indexer.v1.Server + 9, // 5: music_agregator.indexer.v1.CapabilitiesResponse.limits:type_name -> music_agregator.indexer.v1.Limits + 10, // 6: music_agregator.indexer.v1.CapabilitiesResponse.searching:type_name -> music_agregator.indexer.v1.Searching + 12, // 7: music_agregator.indexer.v1.CapabilitiesResponse.categories:type_name -> music_agregator.indexer.v1.Category + 11, // 8: music_agregator.indexer.v1.Searching.search:type_name -> music_agregator.indexer.v1.SearchCapability + 11, // 9: music_agregator.indexer.v1.Searching.tv_search:type_name -> music_agregator.indexer.v1.SearchCapability + 11, // 10: music_agregator.indexer.v1.Searching.movie_search:type_name -> music_agregator.indexer.v1.SearchCapability + 11, // 11: music_agregator.indexer.v1.Searching.music_search:type_name -> music_agregator.indexer.v1.SearchCapability + 11, // 12: music_agregator.indexer.v1.Searching.audio_search:type_name -> music_agregator.indexer.v1.SearchCapability + 11, // 13: music_agregator.indexer.v1.Searching.book_search:type_name -> music_agregator.indexer.v1.SearchCapability + 13, // 14: music_agregator.indexer.v1.Category.subcats:type_name -> music_agregator.indexer.v1.Subcat + 0, // 15: music_agregator.indexer.v1.IndexerService.Search:input_type -> music_agregator.indexer.v1.SearchRequest + 6, // 16: music_agregator.indexer.v1.IndexerService.Capabilities:input_type -> music_agregator.indexer.v1.CapabilitiesRequest + 1, // 17: music_agregator.indexer.v1.IndexerService.Search:output_type -> music_agregator.indexer.v1.SearchResponse + 7, // 18: music_agregator.indexer.v1.IndexerService.Capabilities:output_type -> music_agregator.indexer.v1.CapabilitiesResponse + 17, // [17:19] is the sub-list for method output_type + 15, // [15:17] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name +} + +func init() { file_music_agregator_indexer_v1_indexer_proto_init() } +func file_music_agregator_indexer_v1_indexer_proto_init() { + if File_music_agregator_indexer_v1_indexer_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_music_agregator_indexer_v1_indexer_proto_rawDesc), len(file_music_agregator_indexer_v1_indexer_proto_rawDesc)), + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_music_agregator_indexer_v1_indexer_proto_goTypes, + DependencyIndexes: file_music_agregator_indexer_v1_indexer_proto_depIdxs, + MessageInfos: file_music_agregator_indexer_v1_indexer_proto_msgTypes, + }.Build() + File_music_agregator_indexer_v1_indexer_proto = out.File + file_music_agregator_indexer_v1_indexer_proto_goTypes = nil + file_music_agregator_indexer_v1_indexer_proto_depIdxs = nil +} diff --git a/gen/music_agregator/indexer/v1/indexer_grpc.pb.go b/gen/music_agregator/indexer/v1/indexer_grpc.pb.go new file mode 100644 index 0000000..79df169 --- /dev/null +++ b/gen/music_agregator/indexer/v1/indexer_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: music_agregator/indexer/v1/indexer.proto + +package indexer + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + IndexerService_Search_FullMethodName = "/music_agregator.indexer.v1.IndexerService/Search" + IndexerService_Capabilities_FullMethodName = "/music_agregator.indexer.v1.IndexerService/Capabilities" +) + +// IndexerServiceClient is the client API for IndexerService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type IndexerServiceClient interface { + Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) + Capabilities(ctx context.Context, in *CapabilitiesRequest, opts ...grpc.CallOption) (*CapabilitiesResponse, error) +} + +type indexerServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewIndexerServiceClient(cc grpc.ClientConnInterface) IndexerServiceClient { + return &indexerServiceClient{cc} +} + +func (c *indexerServiceClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SearchResponse) + err := c.cc.Invoke(ctx, IndexerService_Search_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *indexerServiceClient) Capabilities(ctx context.Context, in *CapabilitiesRequest, opts ...grpc.CallOption) (*CapabilitiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CapabilitiesResponse) + err := c.cc.Invoke(ctx, IndexerService_Capabilities_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// IndexerServiceServer is the server API for IndexerService service. +// All implementations must embed UnimplementedIndexerServiceServer +// for forward compatibility. +type IndexerServiceServer interface { + Search(context.Context, *SearchRequest) (*SearchResponse, error) + Capabilities(context.Context, *CapabilitiesRequest) (*CapabilitiesResponse, error) + mustEmbedUnimplementedIndexerServiceServer() +} + +// UnimplementedIndexerServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedIndexerServiceServer struct{} + +func (UnimplementedIndexerServiceServer) Search(context.Context, *SearchRequest) (*SearchResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Search not implemented") +} +func (UnimplementedIndexerServiceServer) Capabilities(context.Context, *CapabilitiesRequest) (*CapabilitiesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Capabilities not implemented") +} +func (UnimplementedIndexerServiceServer) mustEmbedUnimplementedIndexerServiceServer() {} +func (UnimplementedIndexerServiceServer) testEmbeddedByValue() {} + +// UnsafeIndexerServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to IndexerServiceServer will +// result in compilation errors. +type UnsafeIndexerServiceServer interface { + mustEmbedUnimplementedIndexerServiceServer() +} + +func RegisterIndexerServiceServer(s grpc.ServiceRegistrar, srv IndexerServiceServer) { + // If the following call panics, it indicates UnimplementedIndexerServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&IndexerService_ServiceDesc, srv) +} + +func _IndexerService_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServiceServer).Search(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IndexerService_Search_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServiceServer).Search(ctx, req.(*SearchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IndexerService_Capabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CapabilitiesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IndexerServiceServer).Capabilities(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IndexerService_Capabilities_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IndexerServiceServer).Capabilities(ctx, req.(*CapabilitiesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// IndexerService_ServiceDesc is the grpc.ServiceDesc for IndexerService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var IndexerService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "music_agregator.indexer.v1.IndexerService", + HandlerType: (*IndexerServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Search", + Handler: _IndexerService_Search_Handler, + }, + { + MethodName: "Capabilities", + Handler: _IndexerService_Capabilities_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "music_agregator/indexer/v1/indexer.proto", +} diff --git a/gen/music_agregator/metadata/v1/metadata.pb.go b/gen/music_agregator/metadata/v1/metadata.pb.go new file mode 100644 index 0000000..d0c7691 --- /dev/null +++ b/gen/music_agregator/metadata/v1/metadata.pb.go @@ -0,0 +1,60 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: music_agregator/metadata/v1/metadata.proto + +package metadata + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_music_agregator_metadata_v1_metadata_proto protoreflect.FileDescriptor + +const file_music_agregator_metadata_v1_metadata_proto_rawDesc = "" + + "\n" + + "*music_agregator/metadata/v1/metadata.proto\x12\x1bmusic_agregator.metadata.v12\x11\n" + + "\x0fMetadataServiceB=Z;homelab.lan/music-agregator/gen/music_agregator/v1/metadatab\x06proto3" + +var file_music_agregator_metadata_v1_metadata_proto_goTypes = []any{} +var file_music_agregator_metadata_v1_metadata_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_music_agregator_metadata_v1_metadata_proto_init() } +func file_music_agregator_metadata_v1_metadata_proto_init() { + if File_music_agregator_metadata_v1_metadata_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_music_agregator_metadata_v1_metadata_proto_rawDesc), len(file_music_agregator_metadata_v1_metadata_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_music_agregator_metadata_v1_metadata_proto_goTypes, + DependencyIndexes: file_music_agregator_metadata_v1_metadata_proto_depIdxs, + }.Build() + File_music_agregator_metadata_v1_metadata_proto = out.File + file_music_agregator_metadata_v1_metadata_proto_goTypes = nil + file_music_agregator_metadata_v1_metadata_proto_depIdxs = nil +} diff --git a/gen/music_agregator/metadata/v1/metadata_grpc.pb.go b/gen/music_agregator/metadata/v1/metadata_grpc.pb.go new file mode 100644 index 0000000..ebbbb0c --- /dev/null +++ b/gen/music_agregator/metadata/v1/metadata_grpc.pb.go @@ -0,0 +1,76 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: music_agregator/metadata/v1/metadata.proto + +package metadata + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +// MetadataServiceClient is the client API for MetadataService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MetadataServiceClient interface { +} + +type metadataServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewMetadataServiceClient(cc grpc.ClientConnInterface) MetadataServiceClient { + return &metadataServiceClient{cc} +} + +// MetadataServiceServer is the server API for MetadataService service. +// All implementations must embed UnimplementedMetadataServiceServer +// for forward compatibility. +type MetadataServiceServer interface { + mustEmbedUnimplementedMetadataServiceServer() +} + +// UnimplementedMetadataServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMetadataServiceServer struct{} + +func (UnimplementedMetadataServiceServer) mustEmbedUnimplementedMetadataServiceServer() {} +func (UnimplementedMetadataServiceServer) testEmbeddedByValue() {} + +// UnsafeMetadataServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MetadataServiceServer will +// result in compilation errors. +type UnsafeMetadataServiceServer interface { + mustEmbedUnimplementedMetadataServiceServer() +} + +func RegisterMetadataServiceServer(s grpc.ServiceRegistrar, srv MetadataServiceServer) { + // If the following call panics, it indicates UnimplementedMetadataServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MetadataService_ServiceDesc, srv) +} + +// MetadataService_ServiceDesc is the grpc.ServiceDesc for MetadataService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MetadataService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "music_agregator.metadata.v1.MetadataService", + HandlerType: (*MetadataServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "music_agregator/metadata/v1/metadata.proto", +} diff --git a/gen/music_agregator/torrent/v1/torrent.pb.go b/gen/music_agregator/torrent/v1/torrent.pb.go new file mode 100644 index 0000000..314d69e --- /dev/null +++ b/gen/music_agregator/torrent/v1/torrent.pb.go @@ -0,0 +1,713 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: music_agregator/torrent/v1/torrent.proto + +package torrent + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClientName string `protobuf:"bytes,1,opt,name=client_name,json=clientName,proto3" json:"client_name,omitempty"` + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` + Tag string `protobuf:"bytes,4,opt,name=tag,proto3" json:"tag,omitempty"` + Sort string `protobuf:"bytes,5,opt,name=sort,proto3" json:"sort,omitempty"` + Reverse bool `protobuf:"varint,6,opt,name=reverse,proto3" json:"reverse,omitempty"` + Limit int32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,8,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListRequest) Reset() { + *x = ListRequest{} + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListRequest) ProtoMessage() {} + +func (x *ListRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListRequest.ProtoReflect.Descriptor instead. +func (*ListRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_torrent_v1_torrent_proto_rawDescGZIP(), []int{0} +} + +func (x *ListRequest) GetClientName() string { + if x != nil { + return x.ClientName + } + return "" +} + +func (x *ListRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListRequest) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *ListRequest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *ListRequest) GetSort() string { + if x != nil { + return x.Sort + } + return "" +} + +func (x *ListRequest) GetReverse() bool { + if x != nil { + return x.Reverse + } + return false +} + +func (x *ListRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +type ListResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*ListItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListResponse) Reset() { + *x = ListResponse{} + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListResponse) ProtoMessage() {} + +func (x *ListResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListResponse.ProtoReflect.Descriptor instead. +func (*ListResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_torrent_v1_torrent_proto_rawDescGZIP(), []int{1} +} + +func (x *ListResponse) GetItems() []*ListItem { + if x != nil { + return x.Items + } + return nil +} + +type ListItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + Progress float64 `protobuf:"fixed64,4,opt,name=progress,proto3" json:"progress,omitempty"` + Dlspeed int64 `protobuf:"varint,5,opt,name=dlspeed,proto3" json:"dlspeed,omitempty"` + Upspeed int64 `protobuf:"varint,6,opt,name=upspeed,proto3" json:"upspeed,omitempty"` + NumSeeds int32 `protobuf:"varint,7,opt,name=num_seeds,json=numSeeds,proto3" json:"num_seeds,omitempty"` + NumLeechs int32 `protobuf:"varint,8,opt,name=num_leechs,json=numLeechs,proto3" json:"num_leechs,omitempty"` + State string `protobuf:"bytes,9,opt,name=state,proto3" json:"state,omitempty"` + Eta int64 `protobuf:"varint,10,opt,name=eta,proto3" json:"eta,omitempty"` + Ratio float64 `protobuf:"fixed64,11,opt,name=ratio,proto3" json:"ratio,omitempty"` + Category string `protobuf:"bytes,12,opt,name=category,proto3" json:"category,omitempty"` + Tags string `protobuf:"bytes,13,opt,name=tags,proto3" json:"tags,omitempty"` + AddedOn int64 `protobuf:"varint,14,opt,name=added_on,json=addedOn,proto3" json:"added_on,omitempty"` + CompletionOn int64 `protobuf:"varint,15,opt,name=completion_on,json=completionOn,proto3" json:"completion_on,omitempty"` + SavePath string `protobuf:"bytes,16,opt,name=save_path,json=savePath,proto3" json:"save_path,omitempty"` + ContentPath string `protobuf:"bytes,17,opt,name=content_path,json=contentPath,proto3" json:"content_path,omitempty"` + Downloaded int64 `protobuf:"varint,18,opt,name=downloaded,proto3" json:"downloaded,omitempty"` + Uploaded int64 `protobuf:"varint,19,opt,name=uploaded,proto3" json:"uploaded,omitempty"` + Tracker string `protobuf:"bytes,20,opt,name=tracker,proto3" json:"tracker,omitempty"` + SeedingTime int64 `protobuf:"varint,21,opt,name=seeding_time,json=seedingTime,proto3" json:"seeding_time,omitempty"` + AmountLeft int64 `protobuf:"varint,22,opt,name=amount_left,json=amountLeft,proto3" json:"amount_left,omitempty"` + Availability float64 `protobuf:"fixed64,23,opt,name=availability,proto3" json:"availability,omitempty"` + SizeFormatted string `protobuf:"bytes,100,opt,name=size_formatted,json=sizeFormatted,proto3" json:"size_formatted,omitempty"` + ProgressFormatted string `protobuf:"bytes,101,opt,name=progress_formatted,json=progressFormatted,proto3" json:"progress_formatted,omitempty"` + DlspeedFormatted string `protobuf:"bytes,102,opt,name=dlspeed_formatted,json=dlspeedFormatted,proto3" json:"dlspeed_formatted,omitempty"` + UpspeedFormatted string `protobuf:"bytes,103,opt,name=upspeed_formatted,json=upspeedFormatted,proto3" json:"upspeed_formatted,omitempty"` + AddedOnFormatted string `protobuf:"bytes,104,opt,name=added_on_formatted,json=addedOnFormatted,proto3" json:"added_on_formatted,omitempty"` + CompletionOnFormatted string `protobuf:"bytes,105,opt,name=completion_on_formatted,json=completionOnFormatted,proto3" json:"completion_on_formatted,omitempty"` + DownloadedFormatted string `protobuf:"bytes,106,opt,name=downloaded_formatted,json=downloadedFormatted,proto3" json:"downloaded_formatted,omitempty"` + UploadedFormatted string `protobuf:"bytes,107,opt,name=uploaded_formatted,json=uploadedFormatted,proto3" json:"uploaded_formatted,omitempty"` + AmountLeftFormatted string `protobuf:"bytes,108,opt,name=amount_left_formatted,json=amountLeftFormatted,proto3" json:"amount_left_formatted,omitempty"` + AvailabilityFormatted string `protobuf:"bytes,109,opt,name=availability_formatted,json=availabilityFormatted,proto3" json:"availability_formatted,omitempty"` + EtaFormatted string `protobuf:"bytes,110,opt,name=eta_formatted,json=etaFormatted,proto3" json:"eta_formatted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListItem) Reset() { + *x = ListItem{} + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListItem) ProtoMessage() {} + +func (x *ListItem) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListItem.ProtoReflect.Descriptor instead. +func (*ListItem) Descriptor() ([]byte, []int) { + return file_music_agregator_torrent_v1_torrent_proto_rawDescGZIP(), []int{2} +} + +func (x *ListItem) GetHash() string { + if x != nil { + return x.Hash + } + return "" +} + +func (x *ListItem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListItem) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *ListItem) GetProgress() float64 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *ListItem) GetDlspeed() int64 { + if x != nil { + return x.Dlspeed + } + return 0 +} + +func (x *ListItem) GetUpspeed() int64 { + if x != nil { + return x.Upspeed + } + return 0 +} + +func (x *ListItem) GetNumSeeds() int32 { + if x != nil { + return x.NumSeeds + } + return 0 +} + +func (x *ListItem) GetNumLeechs() int32 { + if x != nil { + return x.NumLeechs + } + return 0 +} + +func (x *ListItem) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *ListItem) GetEta() int64 { + if x != nil { + return x.Eta + } + return 0 +} + +func (x *ListItem) GetRatio() float64 { + if x != nil { + return x.Ratio + } + return 0 +} + +func (x *ListItem) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *ListItem) GetTags() string { + if x != nil { + return x.Tags + } + return "" +} + +func (x *ListItem) GetAddedOn() int64 { + if x != nil { + return x.AddedOn + } + return 0 +} + +func (x *ListItem) GetCompletionOn() int64 { + if x != nil { + return x.CompletionOn + } + return 0 +} + +func (x *ListItem) GetSavePath() string { + if x != nil { + return x.SavePath + } + return "" +} + +func (x *ListItem) GetContentPath() string { + if x != nil { + return x.ContentPath + } + return "" +} + +func (x *ListItem) GetDownloaded() int64 { + if x != nil { + return x.Downloaded + } + return 0 +} + +func (x *ListItem) GetUploaded() int64 { + if x != nil { + return x.Uploaded + } + return 0 +} + +func (x *ListItem) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +func (x *ListItem) GetSeedingTime() int64 { + if x != nil { + return x.SeedingTime + } + return 0 +} + +func (x *ListItem) GetAmountLeft() int64 { + if x != nil { + return x.AmountLeft + } + return 0 +} + +func (x *ListItem) GetAvailability() float64 { + if x != nil { + return x.Availability + } + return 0 +} + +func (x *ListItem) GetSizeFormatted() string { + if x != nil { + return x.SizeFormatted + } + return "" +} + +func (x *ListItem) GetProgressFormatted() string { + if x != nil { + return x.ProgressFormatted + } + return "" +} + +func (x *ListItem) GetDlspeedFormatted() string { + if x != nil { + return x.DlspeedFormatted + } + return "" +} + +func (x *ListItem) GetUpspeedFormatted() string { + if x != nil { + return x.UpspeedFormatted + } + return "" +} + +func (x *ListItem) GetAddedOnFormatted() string { + if x != nil { + return x.AddedOnFormatted + } + return "" +} + +func (x *ListItem) GetCompletionOnFormatted() string { + if x != nil { + return x.CompletionOnFormatted + } + return "" +} + +func (x *ListItem) GetDownloadedFormatted() string { + if x != nil { + return x.DownloadedFormatted + } + return "" +} + +func (x *ListItem) GetUploadedFormatted() string { + if x != nil { + return x.UploadedFormatted + } + return "" +} + +func (x *ListItem) GetAmountLeftFormatted() string { + if x != nil { + return x.AmountLeftFormatted + } + return "" +} + +func (x *ListItem) GetAvailabilityFormatted() string { + if x != nil { + return x.AvailabilityFormatted + } + return "" +} + +func (x *ListItem) GetEtaFormatted() string { + if x != nil { + return x.EtaFormatted + } + return "" +} + +type AddRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + DownloadUrl string `protobuf:"bytes,1,opt,name=download_url,json=downloadUrl,proto3" json:"download_url,omitempty"` + Filename string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"` + TorrentData []byte `protobuf:"bytes,3,opt,name=torrent_data,json=torrentData,proto3" json:"torrent_data,omitempty"` + SavePath string `protobuf:"bytes,4,opt,name=save_path,json=savePath,proto3" json:"save_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddRequest) Reset() { + *x = AddRequest{} + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddRequest) ProtoMessage() {} + +func (x *AddRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddRequest.ProtoReflect.Descriptor instead. +func (*AddRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_torrent_v1_torrent_proto_rawDescGZIP(), []int{3} +} + +func (x *AddRequest) GetDownloadUrl() string { + if x != nil { + return x.DownloadUrl + } + return "" +} + +func (x *AddRequest) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *AddRequest) GetTorrentData() []byte { + if x != nil { + return x.TorrentData + } + return nil +} + +func (x *AddRequest) GetSavePath() string { + if x != nil { + return x.SavePath + } + return "" +} + +type AddResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Item *ListItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddResponse) Reset() { + *x = AddResponse{} + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddResponse) ProtoMessage() {} + +func (x *AddResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_torrent_v1_torrent_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddResponse.ProtoReflect.Descriptor instead. +func (*AddResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_torrent_v1_torrent_proto_rawDescGZIP(), []int{4} +} + +func (x *AddResponse) GetItem() *ListItem { + if x != nil { + return x.Item + } + return nil +} + +var File_music_agregator_torrent_v1_torrent_proto protoreflect.FileDescriptor + +const file_music_agregator_torrent_v1_torrent_proto_rawDesc = "" + + "\n" + + "(music_agregator/torrent/v1/torrent.proto\x12\x1amusic_agregator.torrent.v1\"\xd0\x01\n" + + "\vListRequest\x12\x1f\n" + + "\vclient_name\x18\x01 \x01(\tR\n" + + "clientName\x12\x16\n" + + "\x06filter\x18\x02 \x01(\tR\x06filter\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\x12\x10\n" + + "\x03tag\x18\x04 \x01(\tR\x03tag\x12\x12\n" + + "\x04sort\x18\x05 \x01(\tR\x04sort\x12\x18\n" + + "\areverse\x18\x06 \x01(\bR\areverse\x12\x14\n" + + "\x05limit\x18\a \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\b \x01(\x05R\x06offset\"J\n" + + "\fListResponse\x12:\n" + + "\x05items\x18\x01 \x03(\v2$.music_agregator.torrent.v1.ListItemR\x05items\"\x86\t\n" + + "\bListItem\x12\x12\n" + + "\x04hash\x18\x01 \x01(\tR\x04hash\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04size\x18\x03 \x01(\x03R\x04size\x12\x1a\n" + + "\bprogress\x18\x04 \x01(\x01R\bprogress\x12\x18\n" + + "\adlspeed\x18\x05 \x01(\x03R\adlspeed\x12\x18\n" + + "\aupspeed\x18\x06 \x01(\x03R\aupspeed\x12\x1b\n" + + "\tnum_seeds\x18\a \x01(\x05R\bnumSeeds\x12\x1d\n" + + "\n" + + "num_leechs\x18\b \x01(\x05R\tnumLeechs\x12\x14\n" + + "\x05state\x18\t \x01(\tR\x05state\x12\x10\n" + + "\x03eta\x18\n" + + " \x01(\x03R\x03eta\x12\x14\n" + + "\x05ratio\x18\v \x01(\x01R\x05ratio\x12\x1a\n" + + "\bcategory\x18\f \x01(\tR\bcategory\x12\x12\n" + + "\x04tags\x18\r \x01(\tR\x04tags\x12\x19\n" + + "\badded_on\x18\x0e \x01(\x03R\aaddedOn\x12#\n" + + "\rcompletion_on\x18\x0f \x01(\x03R\fcompletionOn\x12\x1b\n" + + "\tsave_path\x18\x10 \x01(\tR\bsavePath\x12!\n" + + "\fcontent_path\x18\x11 \x01(\tR\vcontentPath\x12\x1e\n" + + "\n" + + "downloaded\x18\x12 \x01(\x03R\n" + + "downloaded\x12\x1a\n" + + "\buploaded\x18\x13 \x01(\x03R\buploaded\x12\x18\n" + + "\atracker\x18\x14 \x01(\tR\atracker\x12!\n" + + "\fseeding_time\x18\x15 \x01(\x03R\vseedingTime\x12\x1f\n" + + "\vamount_left\x18\x16 \x01(\x03R\n" + + "amountLeft\x12\"\n" + + "\favailability\x18\x17 \x01(\x01R\favailability\x12%\n" + + "\x0esize_formatted\x18d \x01(\tR\rsizeFormatted\x12-\n" + + "\x12progress_formatted\x18e \x01(\tR\x11progressFormatted\x12+\n" + + "\x11dlspeed_formatted\x18f \x01(\tR\x10dlspeedFormatted\x12+\n" + + "\x11upspeed_formatted\x18g \x01(\tR\x10upspeedFormatted\x12,\n" + + "\x12added_on_formatted\x18h \x01(\tR\x10addedOnFormatted\x126\n" + + "\x17completion_on_formatted\x18i \x01(\tR\x15completionOnFormatted\x121\n" + + "\x14downloaded_formatted\x18j \x01(\tR\x13downloadedFormatted\x12-\n" + + "\x12uploaded_formatted\x18k \x01(\tR\x11uploadedFormatted\x122\n" + + "\x15amount_left_formatted\x18l \x01(\tR\x13amountLeftFormatted\x125\n" + + "\x16availability_formatted\x18m \x01(\tR\x15availabilityFormatted\x12#\n" + + "\reta_formatted\x18n \x01(\tR\fetaFormatted\"\x8b\x01\n" + + "\n" + + "AddRequest\x12!\n" + + "\fdownload_url\x18\x01 \x01(\tR\vdownloadUrl\x12\x1a\n" + + "\bfilename\x18\x02 \x01(\tR\bfilename\x12!\n" + + "\ftorrent_data\x18\x03 \x01(\fR\vtorrentData\x12\x1b\n" + + "\tsave_path\x18\x04 \x01(\tR\bsavePath\"G\n" + + "\vAddResponse\x128\n" + + "\x04item\x18\x01 \x01(\v2$.music_agregator.torrent.v1.ListItemR\x04item2\xc7\x01\n" + + "\x0eTorrentService\x12[\n" + + "\x04List\x12'.music_agregator.torrent.v1.ListRequest\x1a(.music_agregator.torrent.v1.ListResponse\"\x00\x12X\n" + + "\x03Add\x12&.music_agregator.torrent.v1.AddRequest\x1a'.music_agregator.torrent.v1.AddResponse\"\x00B music_agregator.torrent.v1.ListItem + 2, // 1: music_agregator.torrent.v1.AddResponse.item:type_name -> music_agregator.torrent.v1.ListItem + 0, // 2: music_agregator.torrent.v1.TorrentService.List:input_type -> music_agregator.torrent.v1.ListRequest + 3, // 3: music_agregator.torrent.v1.TorrentService.Add:input_type -> music_agregator.torrent.v1.AddRequest + 1, // 4: music_agregator.torrent.v1.TorrentService.List:output_type -> music_agregator.torrent.v1.ListResponse + 4, // 5: music_agregator.torrent.v1.TorrentService.Add:output_type -> music_agregator.torrent.v1.AddResponse + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_music_agregator_torrent_v1_torrent_proto_init() } +func file_music_agregator_torrent_v1_torrent_proto_init() { + if File_music_agregator_torrent_v1_torrent_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_music_agregator_torrent_v1_torrent_proto_rawDesc), len(file_music_agregator_torrent_v1_torrent_proto_rawDesc)), + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_music_agregator_torrent_v1_torrent_proto_goTypes, + DependencyIndexes: file_music_agregator_torrent_v1_torrent_proto_depIdxs, + MessageInfos: file_music_agregator_torrent_v1_torrent_proto_msgTypes, + }.Build() + File_music_agregator_torrent_v1_torrent_proto = out.File + file_music_agregator_torrent_v1_torrent_proto_goTypes = nil + file_music_agregator_torrent_v1_torrent_proto_depIdxs = nil +} diff --git a/gen/music_agregator/torrent/v1/torrent_grpc.pb.go b/gen/music_agregator/torrent/v1/torrent_grpc.pb.go new file mode 100644 index 0000000..d312344 --- /dev/null +++ b/gen/music_agregator/torrent/v1/torrent_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: music_agregator/torrent/v1/torrent.proto + +package torrent + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + TorrentService_List_FullMethodName = "/music_agregator.torrent.v1.TorrentService/List" + TorrentService_Add_FullMethodName = "/music_agregator.torrent.v1.TorrentService/Add" +) + +// TorrentServiceClient is the client API for TorrentService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type TorrentServiceClient interface { + List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) + Add(ctx context.Context, in *AddRequest, opts ...grpc.CallOption) (*AddResponse, error) +} + +type torrentServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewTorrentServiceClient(cc grpc.ClientConnInterface) TorrentServiceClient { + return &torrentServiceClient{cc} +} + +func (c *torrentServiceClient) List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListResponse) + err := c.cc.Invoke(ctx, TorrentService_List_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *torrentServiceClient) Add(ctx context.Context, in *AddRequest, opts ...grpc.CallOption) (*AddResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(AddResponse) + err := c.cc.Invoke(ctx, TorrentService_Add_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// TorrentServiceServer is the server API for TorrentService service. +// All implementations must embed UnimplementedTorrentServiceServer +// for forward compatibility. +type TorrentServiceServer interface { + List(context.Context, *ListRequest) (*ListResponse, error) + Add(context.Context, *AddRequest) (*AddResponse, error) + mustEmbedUnimplementedTorrentServiceServer() +} + +// UnimplementedTorrentServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedTorrentServiceServer struct{} + +func (UnimplementedTorrentServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) { + return nil, status.Error(codes.Unimplemented, "method List not implemented") +} +func (UnimplementedTorrentServiceServer) Add(context.Context, *AddRequest) (*AddResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Add not implemented") +} +func (UnimplementedTorrentServiceServer) mustEmbedUnimplementedTorrentServiceServer() {} +func (UnimplementedTorrentServiceServer) testEmbeddedByValue() {} + +// UnsafeTorrentServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to TorrentServiceServer will +// result in compilation errors. +type UnsafeTorrentServiceServer interface { + mustEmbedUnimplementedTorrentServiceServer() +} + +func RegisterTorrentServiceServer(s grpc.ServiceRegistrar, srv TorrentServiceServer) { + // If the following call panics, it indicates UnimplementedTorrentServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&TorrentService_ServiceDesc, srv) +} + +func _TorrentService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TorrentServiceServer).List(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TorrentService_List_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TorrentServiceServer).List(ctx, req.(*ListRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TorrentService_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TorrentServiceServer).Add(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TorrentService_Add_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TorrentServiceServer).Add(ctx, req.(*AddRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// TorrentService_ServiceDesc is the grpc.ServiceDesc for TorrentService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var TorrentService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "music_agregator.torrent.v1.TorrentService", + HandlerType: (*TorrentServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "List", + Handler: _TorrentService_List_Handler, + }, + { + MethodName: "Add", + Handler: _TorrentService_Add_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "music_agregator/torrent/v1/torrent.proto", +} diff --git a/gen/music_agregator/v1/music_agregator.pb.go b/gen/music_agregator/v1/music_agregator.pb.go new file mode 100644 index 0000000..7d07539 --- /dev/null +++ b/gen/music_agregator/v1/music_agregator.pb.go @@ -0,0 +1,4249 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: music_agregator/v1/music_agregator.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type QualityType int32 + +const ( + QualityType_QUALITY_UNSPECIFIED QualityType = 0 + QualityType_QUALITY_LOSSLESS QualityType = 1 + QualityType_QUALITY_LOSSY QualityType = 2 +) + +// Enum value maps for QualityType. +var ( + QualityType_name = map[int32]string{ + 0: "QUALITY_UNSPECIFIED", + 1: "QUALITY_LOSSLESS", + 2: "QUALITY_LOSSY", + } + QualityType_value = map[string]int32{ + "QUALITY_UNSPECIFIED": 0, + "QUALITY_LOSSLESS": 1, + "QUALITY_LOSSY": 2, + } +) + +func (x QualityType) Enum() *QualityType { + p := new(QualityType) + *p = x + return p +} + +func (x QualityType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QualityType) Descriptor() protoreflect.EnumDescriptor { + return file_music_agregator_v1_music_agregator_proto_enumTypes[0].Descriptor() +} + +func (QualityType) Type() protoreflect.EnumType { + return &file_music_agregator_v1_music_agregator_proto_enumTypes[0] +} + +func (x QualityType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QualityType.Descriptor instead. +func (QualityType) EnumDescriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{0} +} + +type MonitorState int32 + +const ( + MonitorState_MONITOR_STATE_UNSPECIFIED MonitorState = 0 + MonitorState_MONITOR_STATE_MONITORED MonitorState = 1 + MonitorState_MONITOR_STATE_UNMONITORED MonitorState = 2 + MonitorState_MONITOR_STATE_EXCLUDED MonitorState = 3 +) + +// Enum value maps for MonitorState. +var ( + MonitorState_name = map[int32]string{ + 0: "MONITOR_STATE_UNSPECIFIED", + 1: "MONITOR_STATE_MONITORED", + 2: "MONITOR_STATE_UNMONITORED", + 3: "MONITOR_STATE_EXCLUDED", + } + MonitorState_value = map[string]int32{ + "MONITOR_STATE_UNSPECIFIED": 0, + "MONITOR_STATE_MONITORED": 1, + "MONITOR_STATE_UNMONITORED": 2, + "MONITOR_STATE_EXCLUDED": 3, + } +) + +func (x MonitorState) Enum() *MonitorState { + p := new(MonitorState) + *p = x + return p +} + +func (x MonitorState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MonitorState) Descriptor() protoreflect.EnumDescriptor { + return file_music_agregator_v1_music_agregator_proto_enumTypes[1].Descriptor() +} + +func (MonitorState) Type() protoreflect.EnumType { + return &file_music_agregator_v1_music_agregator_proto_enumTypes[1] +} + +func (x MonitorState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MonitorState.Descriptor instead. +func (MonitorState) EnumDescriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{1} +} + +type InteractionMode int32 + +const ( + InteractionMode_INTERACTION_MODE_AUTOMATIC InteractionMode = 0 + InteractionMode_INTERACTION_MODE_MANUAL InteractionMode = 1 +) + +// Enum value maps for InteractionMode. +var ( + InteractionMode_name = map[int32]string{ + 0: "INTERACTION_MODE_AUTOMATIC", + 1: "INTERACTION_MODE_MANUAL", + } + InteractionMode_value = map[string]int32{ + "INTERACTION_MODE_AUTOMATIC": 0, + "INTERACTION_MODE_MANUAL": 1, + } +) + +func (x InteractionMode) Enum() *InteractionMode { + p := new(InteractionMode) + *p = x + return p +} + +func (x InteractionMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (InteractionMode) Descriptor() protoreflect.EnumDescriptor { + return file_music_agregator_v1_music_agregator_proto_enumTypes[2].Descriptor() +} + +func (InteractionMode) Type() protoreflect.EnumType { + return &file_music_agregator_v1_music_agregator_proto_enumTypes[2] +} + +func (x InteractionMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use InteractionMode.Descriptor instead. +func (InteractionMode) EnumDescriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{2} +} + +type MonitorStep int32 + +const ( + MonitorStep_MONITOR_STEP_UNSPECIFIED MonitorStep = 0 + MonitorStep_MONITOR_STEP_FETCHING_METADATA MonitorStep = 1 + MonitorStep_MONITOR_STEP_CHECKING_OWNED MonitorStep = 2 + MonitorStep_MONITOR_STEP_SEARCHING_INDEXER MonitorStep = 3 + MonitorStep_MONITOR_STEP_PARSING_RESULTS MonitorStep = 4 + MonitorStep_MONITOR_STEP_FILTERING_QUALITY MonitorStep = 5 + MonitorStep_MONITOR_STEP_SELECTING_RELEASE MonitorStep = 6 + MonitorStep_MONITOR_STEP_ADDING_TORRENT MonitorStep = 7 + MonitorStep_MONITOR_STEP_SAVING MonitorStep = 8 + MonitorStep_MONITOR_STEP_COMPLETE MonitorStep = 9 +) + +// Enum value maps for MonitorStep. +var ( + MonitorStep_name = map[int32]string{ + 0: "MONITOR_STEP_UNSPECIFIED", + 1: "MONITOR_STEP_FETCHING_METADATA", + 2: "MONITOR_STEP_CHECKING_OWNED", + 3: "MONITOR_STEP_SEARCHING_INDEXER", + 4: "MONITOR_STEP_PARSING_RESULTS", + 5: "MONITOR_STEP_FILTERING_QUALITY", + 6: "MONITOR_STEP_SELECTING_RELEASE", + 7: "MONITOR_STEP_ADDING_TORRENT", + 8: "MONITOR_STEP_SAVING", + 9: "MONITOR_STEP_COMPLETE", + } + MonitorStep_value = map[string]int32{ + "MONITOR_STEP_UNSPECIFIED": 0, + "MONITOR_STEP_FETCHING_METADATA": 1, + "MONITOR_STEP_CHECKING_OWNED": 2, + "MONITOR_STEP_SEARCHING_INDEXER": 3, + "MONITOR_STEP_PARSING_RESULTS": 4, + "MONITOR_STEP_FILTERING_QUALITY": 5, + "MONITOR_STEP_SELECTING_RELEASE": 6, + "MONITOR_STEP_ADDING_TORRENT": 7, + "MONITOR_STEP_SAVING": 8, + "MONITOR_STEP_COMPLETE": 9, + } +) + +func (x MonitorStep) Enum() *MonitorStep { + p := new(MonitorStep) + *p = x + return p +} + +func (x MonitorStep) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MonitorStep) Descriptor() protoreflect.EnumDescriptor { + return file_music_agregator_v1_music_agregator_proto_enumTypes[3].Descriptor() +} + +func (MonitorStep) Type() protoreflect.EnumType { + return &file_music_agregator_v1_music_agregator_proto_enumTypes[3] +} + +func (x MonitorStep) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MonitorStep.Descriptor instead. +func (MonitorStep) EnumDescriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{3} +} + +type PromptType int32 + +const ( + PromptType_PROMPT_TYPE_UNSPECIFIED PromptType = 0 + PromptType_PROMPT_TYPE_CONFIRM PromptType = 1 + PromptType_PROMPT_TYPE_SELECT_ONE PromptType = 2 + PromptType_PROMPT_TYPE_SELECT_MANY PromptType = 3 +) + +// Enum value maps for PromptType. +var ( + PromptType_name = map[int32]string{ + 0: "PROMPT_TYPE_UNSPECIFIED", + 1: "PROMPT_TYPE_CONFIRM", + 2: "PROMPT_TYPE_SELECT_ONE", + 3: "PROMPT_TYPE_SELECT_MANY", + } + PromptType_value = map[string]int32{ + "PROMPT_TYPE_UNSPECIFIED": 0, + "PROMPT_TYPE_CONFIRM": 1, + "PROMPT_TYPE_SELECT_ONE": 2, + "PROMPT_TYPE_SELECT_MANY": 3, + } +) + +func (x PromptType) Enum() *PromptType { + p := new(PromptType) + *p = x + return p +} + +func (x PromptType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PromptType) Descriptor() protoreflect.EnumDescriptor { + return file_music_agregator_v1_music_agregator_proto_enumTypes[4].Descriptor() +} + +func (PromptType) Type() protoreflect.EnumType { + return &file_music_agregator_v1_music_agregator_proto_enumTypes[4] +} + +func (x PromptType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PromptType.Descriptor instead. +func (PromptType) EnumDescriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{4} +} + +type MonitorAlbumRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlbumId string `protobuf:"bytes,1,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + IndexerOptions *IndexerOptions `protobuf:"bytes,2,opt,name=indexer_options,json=indexerOptions,proto3" json:"indexer_options,omitempty"` + Quality QualityType `protobuf:"varint,3,opt,name=quality,proto3,enum=music_agregator.v1.QualityType" json:"quality,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MonitorAlbumRequest) Reset() { + *x = MonitorAlbumRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MonitorAlbumRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitorAlbumRequest) ProtoMessage() {} + +func (x *MonitorAlbumRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitorAlbumRequest.ProtoReflect.Descriptor instead. +func (*MonitorAlbumRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{0} +} + +func (x *MonitorAlbumRequest) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +func (x *MonitorAlbumRequest) GetIndexerOptions() *IndexerOptions { + if x != nil { + return x.IndexerOptions + } + return nil +} + +func (x *MonitorAlbumRequest) GetQuality() QualityType { + if x != nil { + return x.Quality + } + return QualityType_QUALITY_UNSPECIFIED +} + +type IndexerOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tracker string `protobuf:"bytes,1,opt,name=tracker,proto3" json:"tracker,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IndexerOptions) Reset() { + *x = IndexerOptions{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IndexerOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexerOptions) ProtoMessage() {} + +func (x *IndexerOptions) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexerOptions.ProtoReflect.Descriptor instead. +func (*IndexerOptions) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{1} +} + +func (x *IndexerOptions) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +type MonitorAlbumResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Album *AlbumDetail `protobuf:"bytes,1,opt,name=album,proto3" json:"album,omitempty"` + Artist *ArtistSummary `protobuf:"bytes,2,opt,name=artist,proto3" json:"artist,omitempty"` + Release *MonitoredRelease `protobuf:"bytes,3,opt,name=release,proto3" json:"release,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MonitorAlbumResponse) Reset() { + *x = MonitorAlbumResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MonitorAlbumResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitorAlbumResponse) ProtoMessage() {} + +func (x *MonitorAlbumResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitorAlbumResponse.ProtoReflect.Descriptor instead. +func (*MonitorAlbumResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{2} +} + +func (x *MonitorAlbumResponse) GetAlbum() *AlbumDetail { + if x != nil { + return x.Album + } + return nil +} + +func (x *MonitorAlbumResponse) GetArtist() *ArtistSummary { + if x != nil { + return x.Artist + } + return nil +} + +func (x *MonitorAlbumResponse) GetRelease() *MonitoredRelease { + if x != nil { + return x.Release + } + return nil +} + +type GetArtistsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistsRequest) Reset() { + *x = GetArtistsRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistsRequest) ProtoMessage() {} + +func (x *GetArtistsRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistsRequest.ProtoReflect.Descriptor instead. +func (*GetArtistsRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{3} +} + +type GetArtistsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artists []*ArtistSummary `protobuf:"bytes,1,rep,name=artists,proto3" json:"artists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistsResponse) Reset() { + *x = GetArtistsResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistsResponse) ProtoMessage() {} + +func (x *GetArtistsResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistsResponse.ProtoReflect.Descriptor instead. +func (*GetArtistsResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{4} +} + +func (x *GetArtistsResponse) GetArtists() []*ArtistSummary { + if x != nil { + return x.Artists + } + return nil +} + +type ArtistSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + ArtistType string `protobuf:"bytes,4,opt,name=artist_type,json=artistType,proto3" json:"artist_type,omitempty"` + Country string `protobuf:"bytes,5,opt,name=country,proto3" json:"country,omitempty"` + Genres []string `protobuf:"bytes,6,rep,name=genres,proto3" json:"genres,omitempty"` + ImageUrl string `protobuf:"bytes,7,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + MonitorState MonitorState `protobuf:"varint,8,opt,name=monitor_state,json=monitorState,proto3,enum=music_agregator.v1.MonitorState" json:"monitor_state,omitempty"` + Albums []*AlbumDetail `protobuf:"bytes,9,rep,name=albums,proto3" json:"albums,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtistSummary) Reset() { + *x = ArtistSummary{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtistSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistSummary) ProtoMessage() {} + +func (x *ArtistSummary) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistSummary.ProtoReflect.Descriptor instead. +func (*ArtistSummary) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{5} +} + +func (x *ArtistSummary) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ArtistSummary) GetExternalId() string { + if x != nil { + return x.ExternalId + } + return "" +} + +func (x *ArtistSummary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ArtistSummary) GetArtistType() string { + if x != nil { + return x.ArtistType + } + return "" +} + +func (x *ArtistSummary) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +func (x *ArtistSummary) GetGenres() []string { + if x != nil { + return x.Genres + } + return nil +} + +func (x *ArtistSummary) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *ArtistSummary) GetMonitorState() MonitorState { + if x != nil { + return x.MonitorState + } + return MonitorState_MONITOR_STATE_UNSPECIFIED +} + +func (x *ArtistSummary) GetAlbums() []*AlbumDetail { + if x != nil { + return x.Albums + } + return nil +} + +type AlbumDetail struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + AlbumType string `protobuf:"bytes,4,opt,name=album_type,json=albumType,proto3" json:"album_type,omitempty"` + ReleaseDate string `protobuf:"bytes,5,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + TotalTracks int32 `protobuf:"varint,6,opt,name=total_tracks,json=totalTracks,proto3" json:"total_tracks,omitempty"` + TotalDiscs int32 `protobuf:"varint,7,opt,name=total_discs,json=totalDiscs,proto3" json:"total_discs,omitempty"` + CoverUrl string `protobuf:"bytes,8,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` + Genres []string `protobuf:"bytes,9,rep,name=genres,proto3" json:"genres,omitempty"` + Label string `protobuf:"bytes,10,opt,name=label,proto3" json:"label,omitempty"` + MonitorState MonitorState `protobuf:"varint,11,opt,name=monitor_state,json=monitorState,proto3,enum=music_agregator.v1.MonitorState" json:"monitor_state,omitempty"` + Downloads []*DownloadInfo `protobuf:"bytes,12,rep,name=downloads,proto3" json:"downloads,omitempty"` + Release *AlbumReleaseDetail `protobuf:"bytes,13,opt,name=release,proto3" json:"release,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumDetail) Reset() { + *x = AlbumDetail{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumDetail) ProtoMessage() {} + +func (x *AlbumDetail) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumDetail.ProtoReflect.Descriptor instead. +func (*AlbumDetail) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{6} +} + +func (x *AlbumDetail) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AlbumDetail) GetExternalId() string { + if x != nil { + return x.ExternalId + } + return "" +} + +func (x *AlbumDetail) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *AlbumDetail) GetAlbumType() string { + if x != nil { + return x.AlbumType + } + return "" +} + +func (x *AlbumDetail) GetReleaseDate() string { + if x != nil { + return x.ReleaseDate + } + return "" +} + +func (x *AlbumDetail) GetTotalTracks() int32 { + if x != nil { + return x.TotalTracks + } + return 0 +} + +func (x *AlbumDetail) GetTotalDiscs() int32 { + if x != nil { + return x.TotalDiscs + } + return 0 +} + +func (x *AlbumDetail) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +func (x *AlbumDetail) GetGenres() []string { + if x != nil { + return x.Genres + } + return nil +} + +func (x *AlbumDetail) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *AlbumDetail) GetMonitorState() MonitorState { + if x != nil { + return x.MonitorState + } + return MonitorState_MONITOR_STATE_UNSPECIFIED +} + +func (x *AlbumDetail) GetDownloads() []*DownloadInfo { + if x != nil { + return x.Downloads + } + return nil +} + +func (x *AlbumDetail) GetRelease() *AlbumReleaseDetail { + if x != nil { + return x.Release + } + return nil +} + +type DownloadInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + Quality string `protobuf:"bytes,3,opt,name=quality,proto3" json:"quality,omitempty"` + SavePath string `protobuf:"bytes,4,opt,name=save_path,json=savePath,proto3" json:"save_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DownloadInfo) Reset() { + *x = DownloadInfo{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DownloadInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DownloadInfo) ProtoMessage() {} + +func (x *DownloadInfo) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DownloadInfo.ProtoReflect.Descriptor instead. +func (*DownloadInfo) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{7} +} + +func (x *DownloadInfo) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *DownloadInfo) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *DownloadInfo) GetQuality() string { + if x != nil { + return x.Quality + } + return "" +} + +func (x *DownloadInfo) GetSavePath() string { + if x != nil { + return x.SavePath + } + return "" +} + +type GetAlbumRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlbumId string `protobuf:"bytes,1,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumRequest) Reset() { + *x = GetAlbumRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumRequest) ProtoMessage() {} + +func (x *GetAlbumRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumRequest.ProtoReflect.Descriptor instead. +func (*GetAlbumRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{8} +} + +func (x *GetAlbumRequest) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +type AlbumInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Album *AlbumDetail `protobuf:"bytes,1,opt,name=album,proto3" json:"album,omitempty"` + Tracks []*TrackDetail `protobuf:"bytes,2,rep,name=tracks,proto3" json:"tracks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumInfo) Reset() { + *x = AlbumInfo{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumInfo) ProtoMessage() {} + +func (x *AlbumInfo) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumInfo.ProtoReflect.Descriptor instead. +func (*AlbumInfo) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{9} +} + +func (x *AlbumInfo) GetAlbum() *AlbumDetail { + if x != nil { + return x.Album + } + return nil +} + +func (x *AlbumInfo) GetTracks() []*TrackDetail { + if x != nil { + return x.Tracks + } + return nil +} + +type GetAlbumResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Info *AlbumInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAlbumResponse) Reset() { + *x = GetAlbumResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetAlbumResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAlbumResponse) ProtoMessage() {} + +func (x *GetAlbumResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAlbumResponse.ProtoReflect.Descriptor instead. +func (*GetAlbumResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{10} +} + +func (x *GetAlbumResponse) GetInfo() *AlbumInfo { + if x != nil { + return x.Info + } + return nil +} + +type AnalyzeAlbumReleaseRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlbumId string `protobuf:"bytes,1,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AnalyzeAlbumReleaseRequest) Reset() { + *x = AnalyzeAlbumReleaseRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AnalyzeAlbumReleaseRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzeAlbumReleaseRequest) ProtoMessage() {} + +func (x *AnalyzeAlbumReleaseRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnalyzeAlbumReleaseRequest.ProtoReflect.Descriptor instead. +func (*AnalyzeAlbumReleaseRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{11} +} + +func (x *AnalyzeAlbumReleaseRequest) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +type AnalyzeAlbumReleaseResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Info *AlbumInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AnalyzeAlbumReleaseResponse) Reset() { + *x = AnalyzeAlbumReleaseResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AnalyzeAlbumReleaseResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzeAlbumReleaseResponse) ProtoMessage() {} + +func (x *AnalyzeAlbumReleaseResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnalyzeAlbumReleaseResponse.ProtoReflect.Descriptor instead. +func (*AnalyzeAlbumReleaseResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{12} +} + +func (x *AnalyzeAlbumReleaseResponse) GetInfo() *AlbumInfo { + if x != nil { + return x.Info + } + return nil +} + +type TrackDetail struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ExternalId string `protobuf:"bytes,2,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` + Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` + DurationMs int32 `protobuf:"varint,4,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"` + DiscNumber int32 `protobuf:"varint,5,opt,name=disc_number,json=discNumber,proto3" json:"disc_number,omitempty"` + TrackNumber int32 `protobuf:"varint,6,opt,name=track_number,json=trackNumber,proto3" json:"track_number,omitempty"` + Isrc string `protobuf:"bytes,7,opt,name=isrc,proto3" json:"isrc,omitempty"` + Explicit bool `protobuf:"varint,8,opt,name=explicit,proto3" json:"explicit,omitempty"` + Artists []*ArtistCredit `protobuf:"bytes,9,rep,name=artists,proto3" json:"artists,omitempty"` + FilePath string `protobuf:"bytes,10,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` + FileSize int64 `protobuf:"varint,11,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"` + Format string `protobuf:"bytes,12,opt,name=format,proto3" json:"format,omitempty"` + BitDepth int32 `protobuf:"varint,13,opt,name=bit_depth,json=bitDepth,proto3" json:"bit_depth,omitempty"` + SampleRate int32 `protobuf:"varint,14,opt,name=sample_rate,json=sampleRate,proto3" json:"sample_rate,omitempty"` + Channels int32 `protobuf:"varint,15,opt,name=channels,proto3" json:"channels,omitempty"` + BitrateKbps int32 `protobuf:"varint,16,opt,name=bitrate_kbps,json=bitrateKbps,proto3" json:"bitrate_kbps,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TrackDetail) Reset() { + *x = TrackDetail{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TrackDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrackDetail) ProtoMessage() {} + +func (x *TrackDetail) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrackDetail.ProtoReflect.Descriptor instead. +func (*TrackDetail) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{13} +} + +func (x *TrackDetail) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TrackDetail) GetExternalId() string { + if x != nil { + return x.ExternalId + } + return "" +} + +func (x *TrackDetail) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *TrackDetail) GetDurationMs() int32 { + if x != nil { + return x.DurationMs + } + return 0 +} + +func (x *TrackDetail) GetDiscNumber() int32 { + if x != nil { + return x.DiscNumber + } + return 0 +} + +func (x *TrackDetail) GetTrackNumber() int32 { + if x != nil { + return x.TrackNumber + } + return 0 +} + +func (x *TrackDetail) GetIsrc() string { + if x != nil { + return x.Isrc + } + return "" +} + +func (x *TrackDetail) GetExplicit() bool { + if x != nil { + return x.Explicit + } + return false +} + +func (x *TrackDetail) GetArtists() []*ArtistCredit { + if x != nil { + return x.Artists + } + return nil +} + +func (x *TrackDetail) GetFilePath() string { + if x != nil { + return x.FilePath + } + return "" +} + +func (x *TrackDetail) GetFileSize() int64 { + if x != nil { + return x.FileSize + } + return 0 +} + +func (x *TrackDetail) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *TrackDetail) GetBitDepth() int32 { + if x != nil { + return x.BitDepth + } + return 0 +} + +func (x *TrackDetail) GetSampleRate() int32 { + if x != nil { + return x.SampleRate + } + return 0 +} + +func (x *TrackDetail) GetChannels() int32 { + if x != nil { + return x.Channels + } + return 0 +} + +func (x *TrackDetail) GetBitrateKbps() int32 { + if x != nil { + return x.BitrateKbps + } + return 0 +} + +type ArtistCredit struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArtistCredit) Reset() { + *x = ArtistCredit{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArtistCredit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtistCredit) ProtoMessage() {} + +func (x *ArtistCredit) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArtistCredit.ProtoReflect.Descriptor instead. +func (*ArtistCredit) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{14} +} + +func (x *ArtistCredit) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ArtistCredit) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type AlbumReleaseDetail struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + BitDepth int32 `protobuf:"varint,3,opt,name=bit_depth,json=bitDepth,proto3" json:"bit_depth,omitempty"` + SampleRate int32 `protobuf:"varint,4,opt,name=sample_rate,json=sampleRate,proto3" json:"sample_rate,omitempty"` + Channels int32 `protobuf:"varint,5,opt,name=channels,proto3" json:"channels,omitempty"` + IsLossless bool `protobuf:"varint,6,opt,name=is_lossless,json=isLossless,proto3" json:"is_lossless,omitempty"` + Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"` + TotalSize int64 `protobuf:"varint,8,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"` + TotalDurationMs int32 `protobuf:"varint,9,opt,name=total_duration_ms,json=totalDurationMs,proto3" json:"total_duration_ms,omitempty"` + TrackCount int32 `protobuf:"varint,10,opt,name=track_count,json=trackCount,proto3" json:"track_count,omitempty"` + HasCoverArt bool `protobuf:"varint,11,opt,name=has_cover_art,json=hasCoverArt,proto3" json:"has_cover_art,omitempty"` + HasCueSheet bool `protobuf:"varint,12,opt,name=has_cue_sheet,json=hasCueSheet,proto3" json:"has_cue_sheet,omitempty"` + HasRipLog bool `protobuf:"varint,13,opt,name=has_rip_log,json=hasRipLog,proto3" json:"has_rip_log,omitempty"` + Path string `protobuf:"bytes,14,opt,name=path,proto3" json:"path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumReleaseDetail) Reset() { + *x = AlbumReleaseDetail{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumReleaseDetail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumReleaseDetail) ProtoMessage() {} + +func (x *AlbumReleaseDetail) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumReleaseDetail.ProtoReflect.Descriptor instead. +func (*AlbumReleaseDetail) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{15} +} + +func (x *AlbumReleaseDetail) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AlbumReleaseDetail) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *AlbumReleaseDetail) GetBitDepth() int32 { + if x != nil { + return x.BitDepth + } + return 0 +} + +func (x *AlbumReleaseDetail) GetSampleRate() int32 { + if x != nil { + return x.SampleRate + } + return 0 +} + +func (x *AlbumReleaseDetail) GetChannels() int32 { + if x != nil { + return x.Channels + } + return 0 +} + +func (x *AlbumReleaseDetail) GetIsLossless() bool { + if x != nil { + return x.IsLossless + } + return false +} + +func (x *AlbumReleaseDetail) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *AlbumReleaseDetail) GetTotalSize() int64 { + if x != nil { + return x.TotalSize + } + return 0 +} + +func (x *AlbumReleaseDetail) GetTotalDurationMs() int32 { + if x != nil { + return x.TotalDurationMs + } + return 0 +} + +func (x *AlbumReleaseDetail) GetTrackCount() int32 { + if x != nil { + return x.TrackCount + } + return 0 +} + +func (x *AlbumReleaseDetail) GetHasCoverArt() bool { + if x != nil { + return x.HasCoverArt + } + return false +} + +func (x *AlbumReleaseDetail) GetHasCueSheet() bool { + if x != nil { + return x.HasCueSheet + } + return false +} + +func (x *AlbumReleaseDetail) GetHasRipLog() bool { + if x != nil { + return x.HasRipLog + } + return false +} + +func (x *AlbumReleaseDetail) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +type MonitoredRelease struct { + state protoimpl.MessageState `protogen:"open.v1"` + InfoHash string `protobuf:"bytes,1,opt,name=info_hash,json=infoHash,proto3" json:"info_hash,omitempty"` + Artist string `protobuf:"bytes,2,opt,name=artist,proto3" json:"artist,omitempty"` + Album string `protobuf:"bytes,3,opt,name=album,proto3" json:"album,omitempty"` + Year int32 `protobuf:"varint,4,opt,name=year,proto3" json:"year,omitempty"` + Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + Lossless bool `protobuf:"varint,6,opt,name=lossless,proto3" json:"lossless,omitempty"` + BitDepth int32 `protobuf:"varint,7,opt,name=bit_depth,json=bitDepth,proto3" json:"bit_depth,omitempty"` + SampleRate int32 `protobuf:"varint,8,opt,name=sample_rate,json=sampleRate,proto3" json:"sample_rate,omitempty"` + Source string `protobuf:"bytes,9,opt,name=source,proto3" json:"source,omitempty"` + TrackCount int32 `protobuf:"varint,10,opt,name=track_count,json=trackCount,proto3" json:"track_count,omitempty"` + TrackNames []string `protobuf:"bytes,11,rep,name=track_names,json=trackNames,proto3" json:"track_names,omitempty"` + HasCoverArt bool `protobuf:"varint,12,opt,name=has_cover_art,json=hasCoverArt,proto3" json:"has_cover_art,omitempty"` + HasCueSheet bool `protobuf:"varint,13,opt,name=has_cue_sheet,json=hasCueSheet,proto3" json:"has_cue_sheet,omitempty"` + HasRipLog bool `protobuf:"varint,14,opt,name=has_rip_log,json=hasRipLog,proto3" json:"has_rip_log,omitempty"` + TotalAudioSize int64 `protobuf:"varint,15,opt,name=total_audio_size,json=totalAudioSize,proto3" json:"total_audio_size,omitempty"` + DownloadLink string `protobuf:"bytes,16,opt,name=download_link,json=downloadLink,proto3" json:"download_link,omitempty"` + Seeders int32 `protobuf:"varint,17,opt,name=seeders,proto3" json:"seeders,omitempty"` + Tracker string `protobuf:"bytes,18,opt,name=tracker,proto3" json:"tracker,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MonitoredRelease) Reset() { + *x = MonitoredRelease{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MonitoredRelease) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitoredRelease) ProtoMessage() {} + +func (x *MonitoredRelease) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitoredRelease.ProtoReflect.Descriptor instead. +func (*MonitoredRelease) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{16} +} + +func (x *MonitoredRelease) GetInfoHash() string { + if x != nil { + return x.InfoHash + } + return "" +} + +func (x *MonitoredRelease) GetArtist() string { + if x != nil { + return x.Artist + } + return "" +} + +func (x *MonitoredRelease) GetAlbum() string { + if x != nil { + return x.Album + } + return "" +} + +func (x *MonitoredRelease) GetYear() int32 { + if x != nil { + return x.Year + } + return 0 +} + +func (x *MonitoredRelease) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *MonitoredRelease) GetLossless() bool { + if x != nil { + return x.Lossless + } + return false +} + +func (x *MonitoredRelease) GetBitDepth() int32 { + if x != nil { + return x.BitDepth + } + return 0 +} + +func (x *MonitoredRelease) GetSampleRate() int32 { + if x != nil { + return x.SampleRate + } + return 0 +} + +func (x *MonitoredRelease) GetSource() string { + if x != nil { + return x.Source + } + return "" +} + +func (x *MonitoredRelease) GetTrackCount() int32 { + if x != nil { + return x.TrackCount + } + return 0 +} + +func (x *MonitoredRelease) GetTrackNames() []string { + if x != nil { + return x.TrackNames + } + return nil +} + +func (x *MonitoredRelease) GetHasCoverArt() bool { + if x != nil { + return x.HasCoverArt + } + return false +} + +func (x *MonitoredRelease) GetHasCueSheet() bool { + if x != nil { + return x.HasCueSheet + } + return false +} + +func (x *MonitoredRelease) GetHasRipLog() bool { + if x != nil { + return x.HasRipLog + } + return false +} + +func (x *MonitoredRelease) GetTotalAudioSize() int64 { + if x != nil { + return x.TotalAudioSize + } + return 0 +} + +func (x *MonitoredRelease) GetDownloadLink() string { + if x != nil { + return x.DownloadLink + } + return "" +} + +func (x *MonitoredRelease) GetSeeders() int32 { + if x != nil { + return x.Seeders + } + return 0 +} + +func (x *MonitoredRelease) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +type SearchArtistsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchArtistsRequest) Reset() { + *x = SearchArtistsRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchArtistsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchArtistsRequest) ProtoMessage() {} + +func (x *SearchArtistsRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchArtistsRequest.ProtoReflect.Descriptor instead. +func (*SearchArtistsRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{17} +} + +func (x *SearchArtistsRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *SearchArtistsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *SearchArtistsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +type SearchArtistsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artists []*SearchArtistResult `protobuf:"bytes,1,rep,name=artists,proto3" json:"artists,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchArtistsResponse) Reset() { + *x = SearchArtistsResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchArtistsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchArtistsResponse) ProtoMessage() {} + +func (x *SearchArtistsResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchArtistsResponse.ProtoReflect.Descriptor instead. +func (*SearchArtistsResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{18} +} + +func (x *SearchArtistsResponse) GetArtists() []*SearchArtistResult { + if x != nil { + return x.Artists + } + return nil +} + +func (x *SearchArtistsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +type SearchArtistResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + SortName string `protobuf:"bytes,3,opt,name=sort_name,json=sortName,proto3" json:"sort_name,omitempty"` + ArtistType string `protobuf:"bytes,4,opt,name=artist_type,json=artistType,proto3" json:"artist_type,omitempty"` + Country string `protobuf:"bytes,5,opt,name=country,proto3" json:"country,omitempty"` + FormedDate string `protobuf:"bytes,6,opt,name=formed_date,json=formedDate,proto3" json:"formed_date,omitempty"` + DisbandedDate string `protobuf:"bytes,7,opt,name=disbanded_date,json=disbandedDate,proto3" json:"disbanded_date,omitempty"` + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + ImageUrl string `protobuf:"bytes,9,opt,name=image_url,json=imageUrl,proto3" json:"image_url,omitempty"` + Genres []string `protobuf:"bytes,10,rep,name=genres,proto3" json:"genres,omitempty"` + ExternalIds []*ExternalId `protobuf:"bytes,11,rep,name=external_ids,json=externalIds,proto3" json:"external_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchArtistResult) Reset() { + *x = SearchArtistResult{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchArtistResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchArtistResult) ProtoMessage() {} + +func (x *SearchArtistResult) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchArtistResult.ProtoReflect.Descriptor instead. +func (*SearchArtistResult) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{19} +} + +func (x *SearchArtistResult) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SearchArtistResult) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SearchArtistResult) GetSortName() string { + if x != nil { + return x.SortName + } + return "" +} + +func (x *SearchArtistResult) GetArtistType() string { + if x != nil { + return x.ArtistType + } + return "" +} + +func (x *SearchArtistResult) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +func (x *SearchArtistResult) GetFormedDate() string { + if x != nil { + return x.FormedDate + } + return "" +} + +func (x *SearchArtistResult) GetDisbandedDate() string { + if x != nil { + return x.DisbandedDate + } + return "" +} + +func (x *SearchArtistResult) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *SearchArtistResult) GetImageUrl() string { + if x != nil { + return x.ImageUrl + } + return "" +} + +func (x *SearchArtistResult) GetGenres() []string { + if x != nil { + return x.Genres + } + return nil +} + +func (x *SearchArtistResult) GetExternalIds() []*ExternalId { + if x != nil { + return x.ExternalIds + } + return nil +} + +type ExternalId struct { + state protoimpl.MessageState `protogen:"open.v1"` + Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExternalId) Reset() { + *x = ExternalId{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExternalId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExternalId) ProtoMessage() {} + +func (x *ExternalId) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExternalId.ProtoReflect.Descriptor instead. +func (*ExternalId) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{20} +} + +func (x *ExternalId) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *ExternalId) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetArtistAlbumsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ArtistId string `protobuf:"bytes,1,opt,name=artist_id,json=artistId,proto3" json:"artist_id,omitempty"` + Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistAlbumsRequest) Reset() { + *x = GetArtistAlbumsRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistAlbumsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistAlbumsRequest) ProtoMessage() {} + +func (x *GetArtistAlbumsRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistAlbumsRequest.ProtoReflect.Descriptor instead. +func (*GetArtistAlbumsRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{21} +} + +func (x *GetArtistAlbumsRequest) GetArtistId() string { + if x != nil { + return x.ArtistId + } + return "" +} + +func (x *GetArtistAlbumsRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *GetArtistAlbumsRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +type GetArtistAlbumsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Albums []*AlbumResult `protobuf:"bytes,1,rep,name=albums,proto3" json:"albums,omitempty"` + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetArtistAlbumsResponse) Reset() { + *x = GetArtistAlbumsResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetArtistAlbumsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetArtistAlbumsResponse) ProtoMessage() {} + +func (x *GetArtistAlbumsResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetArtistAlbumsResponse.ProtoReflect.Descriptor instead. +func (*GetArtistAlbumsResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{22} +} + +func (x *GetArtistAlbumsResponse) GetAlbums() []*AlbumResult { + if x != nil { + return x.Albums + } + return nil +} + +func (x *GetArtistAlbumsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +type AlbumResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + AlbumType string `protobuf:"bytes,3,opt,name=album_type,json=albumType,proto3" json:"album_type,omitempty"` + ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + Upc string `protobuf:"bytes,5,opt,name=upc,proto3" json:"upc,omitempty"` + TotalTracks int32 `protobuf:"varint,6,opt,name=total_tracks,json=totalTracks,proto3" json:"total_tracks,omitempty"` + TotalDiscs int32 `protobuf:"varint,7,opt,name=total_discs,json=totalDiscs,proto3" json:"total_discs,omitempty"` + CoverUrl string `protobuf:"bytes,8,opt,name=cover_url,json=coverUrl,proto3" json:"cover_url,omitempty"` + Artists []*AlbumArtistCredit `protobuf:"bytes,9,rep,name=artists,proto3" json:"artists,omitempty"` + Label *AlbumLabel `protobuf:"bytes,10,opt,name=label,proto3" json:"label,omitempty"` + Genres []string `protobuf:"bytes,11,rep,name=genres,proto3" json:"genres,omitempty"` + ExternalIds []*ExternalId `protobuf:"bytes,12,rep,name=external_ids,json=externalIds,proto3" json:"external_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumResult) Reset() { + *x = AlbumResult{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumResult) ProtoMessage() {} + +func (x *AlbumResult) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumResult.ProtoReflect.Descriptor instead. +func (*AlbumResult) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{23} +} + +func (x *AlbumResult) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AlbumResult) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *AlbumResult) GetAlbumType() string { + if x != nil { + return x.AlbumType + } + return "" +} + +func (x *AlbumResult) GetReleaseDate() string { + if x != nil { + return x.ReleaseDate + } + return "" +} + +func (x *AlbumResult) GetUpc() string { + if x != nil { + return x.Upc + } + return "" +} + +func (x *AlbumResult) GetTotalTracks() int32 { + if x != nil { + return x.TotalTracks + } + return 0 +} + +func (x *AlbumResult) GetTotalDiscs() int32 { + if x != nil { + return x.TotalDiscs + } + return 0 +} + +func (x *AlbumResult) GetCoverUrl() string { + if x != nil { + return x.CoverUrl + } + return "" +} + +func (x *AlbumResult) GetArtists() []*AlbumArtistCredit { + if x != nil { + return x.Artists + } + return nil +} + +func (x *AlbumResult) GetLabel() *AlbumLabel { + if x != nil { + return x.Label + } + return nil +} + +func (x *AlbumResult) GetGenres() []string { + if x != nil { + return x.Genres + } + return nil +} + +func (x *AlbumResult) GetExternalIds() []*ExternalId { + if x != nil { + return x.ExternalIds + } + return nil +} + +type AlbumArtistCredit struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumArtistCredit) Reset() { + *x = AlbumArtistCredit{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumArtistCredit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumArtistCredit) ProtoMessage() {} + +func (x *AlbumArtistCredit) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumArtistCredit.ProtoReflect.Descriptor instead. +func (*AlbumArtistCredit) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{24} +} + +func (x *AlbumArtistCredit) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AlbumArtistCredit) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlbumArtistCredit) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +type AlbumLabel struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Country string `protobuf:"bytes,3,opt,name=country,proto3" json:"country,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumLabel) Reset() { + *x = AlbumLabel{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumLabel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumLabel) ProtoMessage() {} + +func (x *AlbumLabel) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumLabel.ProtoReflect.Descriptor instead. +func (*AlbumLabel) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{25} +} + +func (x *AlbumLabel) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *AlbumLabel) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlbumLabel) GetCountry() string { + if x != nil { + return x.Country + } + return "" +} + +type SubscribeEventsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SinceSeq int64 `protobuf:"varint,1,opt,name=since_seq,json=sinceSeq,proto3" json:"since_seq,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubscribeEventsRequest) Reset() { + *x = SubscribeEventsRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubscribeEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeEventsRequest) ProtoMessage() {} + +func (x *SubscribeEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscribeEventsRequest.ProtoReflect.Descriptor instead. +func (*SubscribeEventsRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{26} +} + +func (x *SubscribeEventsRequest) GetSinceSeq() int64 { + if x != nil { + return x.SinceSeq + } + return 0 +} + +type AlbumEvent struct { + state protoimpl.MessageState `protogen:"open.v1"` + Seq int64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"` + WorkflowRunId string `protobuf:"bytes,2,opt,name=workflow_run_id,json=workflowRunId,proto3" json:"workflow_run_id,omitempty"` + AlbumId string `protobuf:"bytes,3,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + Quality string `protobuf:"bytes,4,opt,name=quality,proto3" json:"quality,omitempty"` + EventType string `protobuf:"bytes,5,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` + Step string `protobuf:"bytes,6,opt,name=step,proto3" json:"step,omitempty"` + Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"` + DataJson []byte `protobuf:"bytes,8,opt,name=data_json,json=dataJson,proto3" json:"data_json,omitempty"` + TimestampMs int64 `protobuf:"varint,9,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlbumEvent) Reset() { + *x = AlbumEvent{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlbumEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlbumEvent) ProtoMessage() {} + +func (x *AlbumEvent) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlbumEvent.ProtoReflect.Descriptor instead. +func (*AlbumEvent) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{27} +} + +func (x *AlbumEvent) GetSeq() int64 { + if x != nil { + return x.Seq + } + return 0 +} + +func (x *AlbumEvent) GetWorkflowRunId() string { + if x != nil { + return x.WorkflowRunId + } + return "" +} + +func (x *AlbumEvent) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +func (x *AlbumEvent) GetQuality() string { + if x != nil { + return x.Quality + } + return "" +} + +func (x *AlbumEvent) GetEventType() string { + if x != nil { + return x.EventType + } + return "" +} + +func (x *AlbumEvent) GetStep() string { + if x != nil { + return x.Step + } + return "" +} + +func (x *AlbumEvent) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *AlbumEvent) GetDataJson() []byte { + if x != nil { + return x.DataJson + } + return nil +} + +func (x *AlbumEvent) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +type MonitorAlbumStreamRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Message: + // + // *MonitorAlbumStreamRequest_Start + // *MonitorAlbumStreamRequest_Decision + // *MonitorAlbumStreamRequest_Cancel + Message isMonitorAlbumStreamRequest_Message `protobuf_oneof:"message"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MonitorAlbumStreamRequest) Reset() { + *x = MonitorAlbumStreamRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MonitorAlbumStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitorAlbumStreamRequest) ProtoMessage() {} + +func (x *MonitorAlbumStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitorAlbumStreamRequest.ProtoReflect.Descriptor instead. +func (*MonitorAlbumStreamRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{28} +} + +func (x *MonitorAlbumStreamRequest) GetMessage() isMonitorAlbumStreamRequest_Message { + if x != nil { + return x.Message + } + return nil +} + +func (x *MonitorAlbumStreamRequest) GetStart() *StartMonitorRequest { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamRequest_Start); ok { + return x.Start + } + } + return nil +} + +func (x *MonitorAlbumStreamRequest) GetDecision() *UserDecision { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamRequest_Decision); ok { + return x.Decision + } + } + return nil +} + +func (x *MonitorAlbumStreamRequest) GetCancel() *CancelRequest { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamRequest_Cancel); ok { + return x.Cancel + } + } + return nil +} + +type isMonitorAlbumStreamRequest_Message interface { + isMonitorAlbumStreamRequest_Message() +} + +type MonitorAlbumStreamRequest_Start struct { + Start *StartMonitorRequest `protobuf:"bytes,1,opt,name=start,proto3,oneof"` +} + +type MonitorAlbumStreamRequest_Decision struct { + Decision *UserDecision `protobuf:"bytes,2,opt,name=decision,proto3,oneof"` +} + +type MonitorAlbumStreamRequest_Cancel struct { + Cancel *CancelRequest `protobuf:"bytes,3,opt,name=cancel,proto3,oneof"` +} + +func (*MonitorAlbumStreamRequest_Start) isMonitorAlbumStreamRequest_Message() {} + +func (*MonitorAlbumStreamRequest_Decision) isMonitorAlbumStreamRequest_Message() {} + +func (*MonitorAlbumStreamRequest_Cancel) isMonitorAlbumStreamRequest_Message() {} + +type StartMonitorRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AlbumId string `protobuf:"bytes,1,opt,name=album_id,json=albumId,proto3" json:"album_id,omitempty"` + IndexerOptions *IndexerOptions `protobuf:"bytes,2,opt,name=indexer_options,json=indexerOptions,proto3" json:"indexer_options,omitempty"` + Quality QualityType `protobuf:"varint,3,opt,name=quality,proto3,enum=music_agregator.v1.QualityType" json:"quality,omitempty"` + Mode InteractionMode `protobuf:"varint,4,opt,name=mode,proto3,enum=music_agregator.v1.InteractionMode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StartMonitorRequest) Reset() { + *x = StartMonitorRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StartMonitorRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartMonitorRequest) ProtoMessage() {} + +func (x *StartMonitorRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartMonitorRequest.ProtoReflect.Descriptor instead. +func (*StartMonitorRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{29} +} + +func (x *StartMonitorRequest) GetAlbumId() string { + if x != nil { + return x.AlbumId + } + return "" +} + +func (x *StartMonitorRequest) GetIndexerOptions() *IndexerOptions { + if x != nil { + return x.IndexerOptions + } + return nil +} + +func (x *StartMonitorRequest) GetQuality() QualityType { + if x != nil { + return x.Quality + } + return QualityType_QUALITY_UNSPECIFIED +} + +func (x *StartMonitorRequest) GetMode() InteractionMode { + if x != nil { + return x.Mode + } + return InteractionMode_INTERACTION_MODE_AUTOMATIC +} + +type UserDecision struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptId string `protobuf:"bytes,1,opt,name=prompt_id,json=promptId,proto3" json:"prompt_id,omitempty"` + // Types that are valid to be assigned to Decision: + // + // *UserDecision_Confirm + // *UserDecision_SelectedId + // *UserDecision_SelectedIds + Decision isUserDecision_Decision `protobuf_oneof:"decision"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UserDecision) Reset() { + *x = UserDecision{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UserDecision) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserDecision) ProtoMessage() {} + +func (x *UserDecision) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserDecision.ProtoReflect.Descriptor instead. +func (*UserDecision) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{30} +} + +func (x *UserDecision) GetPromptId() string { + if x != nil { + return x.PromptId + } + return "" +} + +func (x *UserDecision) GetDecision() isUserDecision_Decision { + if x != nil { + return x.Decision + } + return nil +} + +func (x *UserDecision) GetConfirm() bool { + if x != nil { + if x, ok := x.Decision.(*UserDecision_Confirm); ok { + return x.Confirm + } + } + return false +} + +func (x *UserDecision) GetSelectedId() string { + if x != nil { + if x, ok := x.Decision.(*UserDecision_SelectedId); ok { + return x.SelectedId + } + } + return "" +} + +func (x *UserDecision) GetSelectedIds() *SelectedIds { + if x != nil { + if x, ok := x.Decision.(*UserDecision_SelectedIds); ok { + return x.SelectedIds + } + } + return nil +} + +type isUserDecision_Decision interface { + isUserDecision_Decision() +} + +type UserDecision_Confirm struct { + Confirm bool `protobuf:"varint,2,opt,name=confirm,proto3,oneof"` +} + +type UserDecision_SelectedId struct { + SelectedId string `protobuf:"bytes,3,opt,name=selected_id,json=selectedId,proto3,oneof"` +} + +type UserDecision_SelectedIds struct { + SelectedIds *SelectedIds `protobuf:"bytes,4,opt,name=selected_ids,json=selectedIds,proto3,oneof"` +} + +func (*UserDecision_Confirm) isUserDecision_Decision() {} + +func (*UserDecision_SelectedId) isUserDecision_Decision() {} + +func (*UserDecision_SelectedIds) isUserDecision_Decision() {} + +type SelectedIds struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SelectedIds) Reset() { + *x = SelectedIds{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SelectedIds) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectedIds) ProtoMessage() {} + +func (x *SelectedIds) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectedIds.ProtoReflect.Descriptor instead. +func (*SelectedIds) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{31} +} + +func (x *SelectedIds) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +type CancelRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CancelRequest) Reset() { + *x = CancelRequest{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CancelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelRequest) ProtoMessage() {} + +func (x *CancelRequest) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelRequest.ProtoReflect.Descriptor instead. +func (*CancelRequest) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{32} +} + +type MonitorAlbumStreamResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Message: + // + // *MonitorAlbumStreamResponse_Status + // *MonitorAlbumStreamResponse_Prompt + // *MonitorAlbumStreamResponse_Result + // *MonitorAlbumStreamResponse_Error + Message isMonitorAlbumStreamResponse_Message `protobuf_oneof:"message"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MonitorAlbumStreamResponse) Reset() { + *x = MonitorAlbumStreamResponse{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MonitorAlbumStreamResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MonitorAlbumStreamResponse) ProtoMessage() {} + +func (x *MonitorAlbumStreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MonitorAlbumStreamResponse.ProtoReflect.Descriptor instead. +func (*MonitorAlbumStreamResponse) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{33} +} + +func (x *MonitorAlbumStreamResponse) GetMessage() isMonitorAlbumStreamResponse_Message { + if x != nil { + return x.Message + } + return nil +} + +func (x *MonitorAlbumStreamResponse) GetStatus() *StatusUpdate { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamResponse_Status); ok { + return x.Status + } + } + return nil +} + +func (x *MonitorAlbumStreamResponse) GetPrompt() *PromptForDecision { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamResponse_Prompt); ok { + return x.Prompt + } + } + return nil +} + +func (x *MonitorAlbumStreamResponse) GetResult() *MonitorAlbumResponse { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamResponse_Result); ok { + return x.Result + } + } + return nil +} + +func (x *MonitorAlbumStreamResponse) GetError() *ErrorUpdate { + if x != nil { + if x, ok := x.Message.(*MonitorAlbumStreamResponse_Error); ok { + return x.Error + } + } + return nil +} + +type isMonitorAlbumStreamResponse_Message interface { + isMonitorAlbumStreamResponse_Message() +} + +type MonitorAlbumStreamResponse_Status struct { + Status *StatusUpdate `protobuf:"bytes,1,opt,name=status,proto3,oneof"` +} + +type MonitorAlbumStreamResponse_Prompt struct { + Prompt *PromptForDecision `protobuf:"bytes,2,opt,name=prompt,proto3,oneof"` +} + +type MonitorAlbumStreamResponse_Result struct { + Result *MonitorAlbumResponse `protobuf:"bytes,3,opt,name=result,proto3,oneof"` +} + +type MonitorAlbumStreamResponse_Error struct { + Error *ErrorUpdate `protobuf:"bytes,4,opt,name=error,proto3,oneof"` +} + +func (*MonitorAlbumStreamResponse_Status) isMonitorAlbumStreamResponse_Message() {} + +func (*MonitorAlbumStreamResponse_Prompt) isMonitorAlbumStreamResponse_Message() {} + +func (*MonitorAlbumStreamResponse_Result) isMonitorAlbumStreamResponse_Message() {} + +func (*MonitorAlbumStreamResponse_Error) isMonitorAlbumStreamResponse_Message() {} + +type StatusUpdate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Step MonitorStep `protobuf:"varint,1,opt,name=step,proto3,enum=music_agregator.v1.MonitorStep" json:"step,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + // Types that are valid to be assigned to Data: + // + // *StatusUpdate_AlbumInfo + // *StatusUpdate_Torrents + // *StatusUpdate_ReleaseInfo + Data isStatusUpdate_Data `protobuf_oneof:"data"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatusUpdate) Reset() { + *x = StatusUpdate{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatusUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusUpdate) ProtoMessage() {} + +func (x *StatusUpdate) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatusUpdate.ProtoReflect.Descriptor instead. +func (*StatusUpdate) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{34} +} + +func (x *StatusUpdate) GetStep() MonitorStep { + if x != nil { + return x.Step + } + return MonitorStep_MONITOR_STEP_UNSPECIFIED +} + +func (x *StatusUpdate) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *StatusUpdate) GetData() isStatusUpdate_Data { + if x != nil { + return x.Data + } + return nil +} + +func (x *StatusUpdate) GetAlbumInfo() *StreamAlbumInfo { + if x != nil { + if x, ok := x.Data.(*StatusUpdate_AlbumInfo); ok { + return x.AlbumInfo + } + } + return nil +} + +func (x *StatusUpdate) GetTorrents() *TorrentList { + if x != nil { + if x, ok := x.Data.(*StatusUpdate_Torrents); ok { + return x.Torrents + } + } + return nil +} + +func (x *StatusUpdate) GetReleaseInfo() *ReleaseInfo { + if x != nil { + if x, ok := x.Data.(*StatusUpdate_ReleaseInfo); ok { + return x.ReleaseInfo + } + } + return nil +} + +type isStatusUpdate_Data interface { + isStatusUpdate_Data() +} + +type StatusUpdate_AlbumInfo struct { + AlbumInfo *StreamAlbumInfo `protobuf:"bytes,10,opt,name=album_info,json=albumInfo,proto3,oneof"` +} + +type StatusUpdate_Torrents struct { + Torrents *TorrentList `protobuf:"bytes,11,opt,name=torrents,proto3,oneof"` +} + +type StatusUpdate_ReleaseInfo struct { + ReleaseInfo *ReleaseInfo `protobuf:"bytes,12,opt,name=release_info,json=releaseInfo,proto3,oneof"` +} + +func (*StatusUpdate_AlbumInfo) isStatusUpdate_Data() {} + +func (*StatusUpdate_Torrents) isStatusUpdate_Data() {} + +func (*StatusUpdate_ReleaseInfo) isStatusUpdate_Data() {} + +type PromptForDecision struct { + state protoimpl.MessageState `protogen:"open.v1"` + PromptId string `protobuf:"bytes,1,opt,name=prompt_id,json=promptId,proto3" json:"prompt_id,omitempty"` + Type PromptType `protobuf:"varint,2,opt,name=type,proto3,enum=music_agregator.v1.PromptType" json:"type,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + TimeoutSeconds int32 `protobuf:"varint,4,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + // Types that are valid to be assigned to Options: + // + // *PromptForDecision_Confirm + // *PromptForDecision_SelectOne + // *PromptForDecision_SelectMany + Options isPromptForDecision_Options `protobuf_oneof:"options"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PromptForDecision) Reset() { + *x = PromptForDecision{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PromptForDecision) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PromptForDecision) ProtoMessage() {} + +func (x *PromptForDecision) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PromptForDecision.ProtoReflect.Descriptor instead. +func (*PromptForDecision) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{35} +} + +func (x *PromptForDecision) GetPromptId() string { + if x != nil { + return x.PromptId + } + return "" +} + +func (x *PromptForDecision) GetType() PromptType { + if x != nil { + return x.Type + } + return PromptType_PROMPT_TYPE_UNSPECIFIED +} + +func (x *PromptForDecision) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *PromptForDecision) GetTimeoutSeconds() int32 { + if x != nil { + return x.TimeoutSeconds + } + return 0 +} + +func (x *PromptForDecision) GetOptions() isPromptForDecision_Options { + if x != nil { + return x.Options + } + return nil +} + +func (x *PromptForDecision) GetConfirm() *ConfirmPrompt { + if x != nil { + if x, ok := x.Options.(*PromptForDecision_Confirm); ok { + return x.Confirm + } + } + return nil +} + +func (x *PromptForDecision) GetSelectOne() *SelectOnePrompt { + if x != nil { + if x, ok := x.Options.(*PromptForDecision_SelectOne); ok { + return x.SelectOne + } + } + return nil +} + +func (x *PromptForDecision) GetSelectMany() *SelectManyPrompt { + if x != nil { + if x, ok := x.Options.(*PromptForDecision_SelectMany); ok { + return x.SelectMany + } + } + return nil +} + +type isPromptForDecision_Options interface { + isPromptForDecision_Options() +} + +type PromptForDecision_Confirm struct { + Confirm *ConfirmPrompt `protobuf:"bytes,10,opt,name=confirm,proto3,oneof"` +} + +type PromptForDecision_SelectOne struct { + SelectOne *SelectOnePrompt `protobuf:"bytes,11,opt,name=select_one,json=selectOne,proto3,oneof"` +} + +type PromptForDecision_SelectMany struct { + SelectMany *SelectManyPrompt `protobuf:"bytes,12,opt,name=select_many,json=selectMany,proto3,oneof"` +} + +func (*PromptForDecision_Confirm) isPromptForDecision_Options() {} + +func (*PromptForDecision_SelectOne) isPromptForDecision_Options() {} + +func (*PromptForDecision_SelectMany) isPromptForDecision_Options() {} + +type ErrorUpdate struct { + state protoimpl.MessageState `protogen:"open.v1"` + FailedStep MonitorStep `protobuf:"varint,1,opt,name=failed_step,json=failedStep,proto3,enum=music_agregator.v1.MonitorStep" json:"failed_step,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Recoverable bool `protobuf:"varint,3,opt,name=recoverable,proto3" json:"recoverable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ErrorUpdate) Reset() { + *x = ErrorUpdate{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ErrorUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ErrorUpdate) ProtoMessage() {} + +func (x *ErrorUpdate) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ErrorUpdate.ProtoReflect.Descriptor instead. +func (*ErrorUpdate) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{36} +} + +func (x *ErrorUpdate) GetFailedStep() MonitorStep { + if x != nil { + return x.FailedStep + } + return MonitorStep_MONITOR_STEP_UNSPECIFIED +} + +func (x *ErrorUpdate) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *ErrorUpdate) GetRecoverable() bool { + if x != nil { + return x.Recoverable + } + return false +} + +type StreamAlbumInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Artist string `protobuf:"bytes,1,opt,name=artist,proto3" json:"artist,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + ReleaseDate string `protobuf:"bytes,3,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + AlreadyOwned bool `protobuf:"varint,4,opt,name=already_owned,json=alreadyOwned,proto3" json:"already_owned,omitempty"` + OwnedQuality string `protobuf:"bytes,5,opt,name=owned_quality,json=ownedQuality,proto3" json:"owned_quality,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StreamAlbumInfo) Reset() { + *x = StreamAlbumInfo{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StreamAlbumInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamAlbumInfo) ProtoMessage() {} + +func (x *StreamAlbumInfo) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StreamAlbumInfo.ProtoReflect.Descriptor instead. +func (*StreamAlbumInfo) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{37} +} + +func (x *StreamAlbumInfo) GetArtist() string { + if x != nil { + return x.Artist + } + return "" +} + +func (x *StreamAlbumInfo) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *StreamAlbumInfo) GetReleaseDate() string { + if x != nil { + return x.ReleaseDate + } + return "" +} + +func (x *StreamAlbumInfo) GetAlreadyOwned() bool { + if x != nil { + return x.AlreadyOwned + } + return false +} + +func (x *StreamAlbumInfo) GetOwnedQuality() string { + if x != nil { + return x.OwnedQuality + } + return "" +} + +type TorrentList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Torrents []*TorrentSummary `protobuf:"bytes,1,rep,name=torrents,proto3" json:"torrents,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TorrentList) Reset() { + *x = TorrentList{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TorrentList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TorrentList) ProtoMessage() {} + +func (x *TorrentList) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TorrentList.ProtoReflect.Descriptor instead. +func (*TorrentList) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{38} +} + +func (x *TorrentList) GetTorrents() []*TorrentSummary { + if x != nil { + return x.Torrents + } + return nil +} + +type TorrentSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Tracker string `protobuf:"bytes,3,opt,name=tracker,proto3" json:"tracker,omitempty"` + Seeders int32 `protobuf:"varint,4,opt,name=seeders,proto3" json:"seeders,omitempty"` + Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + Lossless bool `protobuf:"varint,6,opt,name=lossless,proto3" json:"lossless,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TorrentSummary) Reset() { + *x = TorrentSummary{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TorrentSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TorrentSummary) ProtoMessage() {} + +func (x *TorrentSummary) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TorrentSummary.ProtoReflect.Descriptor instead. +func (*TorrentSummary) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{39} +} + +func (x *TorrentSummary) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *TorrentSummary) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *TorrentSummary) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +func (x *TorrentSummary) GetSeeders() int32 { + if x != nil { + return x.Seeders + } + return 0 +} + +func (x *TorrentSummary) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *TorrentSummary) GetLossless() bool { + if x != nil { + return x.Lossless + } + return false +} + +type ReleaseInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + InfoHash string `protobuf:"bytes,1,opt,name=info_hash,json=infoHash,proto3" json:"info_hash,omitempty"` + Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + BitDepth int32 `protobuf:"varint,3,opt,name=bit_depth,json=bitDepth,proto3" json:"bit_depth,omitempty"` + SampleRate int32 `protobuf:"varint,4,opt,name=sample_rate,json=sampleRate,proto3" json:"sample_rate,omitempty"` + Seeders int32 `protobuf:"varint,5,opt,name=seeders,proto3" json:"seeders,omitempty"` + Tracker string `protobuf:"bytes,6,opt,name=tracker,proto3" json:"tracker,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleaseInfo) Reset() { + *x = ReleaseInfo{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleaseInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleaseInfo) ProtoMessage() {} + +func (x *ReleaseInfo) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleaseInfo.ProtoReflect.Descriptor instead. +func (*ReleaseInfo) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{40} +} + +func (x *ReleaseInfo) GetInfoHash() string { + if x != nil { + return x.InfoHash + } + return "" +} + +func (x *ReleaseInfo) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *ReleaseInfo) GetBitDepth() int32 { + if x != nil { + return x.BitDepth + } + return 0 +} + +func (x *ReleaseInfo) GetSampleRate() int32 { + if x != nil { + return x.SampleRate + } + return 0 +} + +func (x *ReleaseInfo) GetSeeders() int32 { + if x != nil { + return x.Seeders + } + return 0 +} + +func (x *ReleaseInfo) GetTracker() string { + if x != nil { + return x.Tracker + } + return "" +} + +type ConfirmPrompt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ConfirmLabel string `protobuf:"bytes,1,opt,name=confirm_label,json=confirmLabel,proto3" json:"confirm_label,omitempty"` + CancelLabel string `protobuf:"bytes,2,opt,name=cancel_label,json=cancelLabel,proto3" json:"cancel_label,omitempty"` + DefaultValue bool `protobuf:"varint,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfirmPrompt) Reset() { + *x = ConfirmPrompt{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfirmPrompt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfirmPrompt) ProtoMessage() {} + +func (x *ConfirmPrompt) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfirmPrompt.ProtoReflect.Descriptor instead. +func (*ConfirmPrompt) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{41} +} + +func (x *ConfirmPrompt) GetConfirmLabel() string { + if x != nil { + return x.ConfirmLabel + } + return "" +} + +func (x *ConfirmPrompt) GetCancelLabel() string { + if x != nil { + return x.CancelLabel + } + return "" +} + +func (x *ConfirmPrompt) GetDefaultValue() bool { + if x != nil { + return x.DefaultValue + } + return false +} + +type SelectOnePrompt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options []*SelectOption `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + DefaultId string `protobuf:"bytes,2,opt,name=default_id,json=defaultId,proto3" json:"default_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SelectOnePrompt) Reset() { + *x = SelectOnePrompt{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SelectOnePrompt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectOnePrompt) ProtoMessage() {} + +func (x *SelectOnePrompt) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectOnePrompt.ProtoReflect.Descriptor instead. +func (*SelectOnePrompt) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{42} +} + +func (x *SelectOnePrompt) GetOptions() []*SelectOption { + if x != nil { + return x.Options + } + return nil +} + +func (x *SelectOnePrompt) GetDefaultId() string { + if x != nil { + return x.DefaultId + } + return "" +} + +type SelectManyPrompt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options []*SelectOption `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + DefaultIds []string `protobuf:"bytes,2,rep,name=default_ids,json=defaultIds,proto3" json:"default_ids,omitempty"` + MinSelections int32 `protobuf:"varint,3,opt,name=min_selections,json=minSelections,proto3" json:"min_selections,omitempty"` + MaxSelections int32 `protobuf:"varint,4,opt,name=max_selections,json=maxSelections,proto3" json:"max_selections,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SelectManyPrompt) Reset() { + *x = SelectManyPrompt{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SelectManyPrompt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectManyPrompt) ProtoMessage() {} + +func (x *SelectManyPrompt) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectManyPrompt.ProtoReflect.Descriptor instead. +func (*SelectManyPrompt) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{43} +} + +func (x *SelectManyPrompt) GetOptions() []*SelectOption { + if x != nil { + return x.Options + } + return nil +} + +func (x *SelectManyPrompt) GetDefaultIds() []string { + if x != nil { + return x.DefaultIds + } + return nil +} + +func (x *SelectManyPrompt) GetMinSelections() int32 { + if x != nil { + return x.MinSelections + } + return 0 +} + +func (x *SelectManyPrompt) GetMaxSelections() int32 { + if x != nil { + return x.MaxSelections + } + return 0 +} + +type SelectOption struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SelectOption) Reset() { + *x = SelectOption{} + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SelectOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectOption) ProtoMessage() {} + +func (x *SelectOption) ProtoReflect() protoreflect.Message { + mi := &file_music_agregator_v1_music_agregator_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectOption.ProtoReflect.Descriptor instead. +func (*SelectOption) Descriptor() ([]byte, []int) { + return file_music_agregator_v1_music_agregator_proto_rawDescGZIP(), []int{44} +} + +func (x *SelectOption) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SelectOption) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *SelectOption) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +var File_music_agregator_v1_music_agregator_proto protoreflect.FileDescriptor + +const file_music_agregator_v1_music_agregator_proto_rawDesc = "" + + "\n" + + "(music_agregator/v1/music_agregator.proto\x12\x12music_agregator.v1\"\xb8\x01\n" + + "\x13MonitorAlbumRequest\x12\x19\n" + + "\balbum_id\x18\x01 \x01(\tR\aalbumId\x12K\n" + + "\x0findexer_options\x18\x02 \x01(\v2\".music_agregator.v1.IndexerOptionsR\x0eindexerOptions\x129\n" + + "\aquality\x18\x03 \x01(\x0e2\x1f.music_agregator.v1.QualityTypeR\aquality\"*\n" + + "\x0eIndexerOptions\x12\x18\n" + + "\atracker\x18\x01 \x01(\tR\atracker\"\xc8\x01\n" + + "\x14MonitorAlbumResponse\x125\n" + + "\x05album\x18\x01 \x01(\v2\x1f.music_agregator.v1.AlbumDetailR\x05album\x129\n" + + "\x06artist\x18\x02 \x01(\v2!.music_agregator.v1.ArtistSummaryR\x06artist\x12>\n" + + "\arelease\x18\x03 \x01(\v2$.music_agregator.v1.MonitoredReleaseR\arelease\"\x13\n" + + "\x11GetArtistsRequest\"Q\n" + + "\x12GetArtistsResponse\x12;\n" + + "\aartists\x18\x01 \x03(\v2!.music_agregator.v1.ArtistSummaryR\aartists\"\xc4\x02\n" + + "\rArtistSummary\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vexternal_id\x18\x02 \x01(\tR\n" + + "externalId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x1f\n" + + "\vartist_type\x18\x04 \x01(\tR\n" + + "artistType\x12\x18\n" + + "\acountry\x18\x05 \x01(\tR\acountry\x12\x16\n" + + "\x06genres\x18\x06 \x03(\tR\x06genres\x12\x1b\n" + + "\timage_url\x18\a \x01(\tR\bimageUrl\x12E\n" + + "\rmonitor_state\x18\b \x01(\x0e2 .music_agregator.v1.MonitorStateR\fmonitorState\x127\n" + + "\x06albums\x18\t \x03(\v2\x1f.music_agregator.v1.AlbumDetailR\x06albums\"\xee\x03\n" + + "\vAlbumDetail\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vexternal_id\x18\x02 \x01(\tR\n" + + "externalId\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12\x1d\n" + + "\n" + + "album_type\x18\x04 \x01(\tR\talbumType\x12!\n" + + "\frelease_date\x18\x05 \x01(\tR\vreleaseDate\x12!\n" + + "\ftotal_tracks\x18\x06 \x01(\x05R\vtotalTracks\x12\x1f\n" + + "\vtotal_discs\x18\a \x01(\x05R\n" + + "totalDiscs\x12\x1b\n" + + "\tcover_url\x18\b \x01(\tR\bcoverUrl\x12\x16\n" + + "\x06genres\x18\t \x03(\tR\x06genres\x12\x14\n" + + "\x05label\x18\n" + + " \x01(\tR\x05label\x12E\n" + + "\rmonitor_state\x18\v \x01(\x0e2 .music_agregator.v1.MonitorStateR\fmonitorState\x12>\n" + + "\tdownloads\x18\f \x03(\v2 .music_agregator.v1.DownloadInfoR\tdownloads\x12@\n" + + "\arelease\x18\r \x01(\v2&.music_agregator.v1.AlbumReleaseDetailR\arelease\"s\n" + + "\fDownloadInfo\x12\x14\n" + + "\x05state\x18\x01 \x01(\tR\x05state\x12\x16\n" + + "\x06format\x18\x02 \x01(\tR\x06format\x12\x18\n" + + "\aquality\x18\x03 \x01(\tR\aquality\x12\x1b\n" + + "\tsave_path\x18\x04 \x01(\tR\bsavePath\",\n" + + "\x0fGetAlbumRequest\x12\x19\n" + + "\balbum_id\x18\x01 \x01(\tR\aalbumId\"{\n" + + "\tAlbumInfo\x125\n" + + "\x05album\x18\x01 \x01(\v2\x1f.music_agregator.v1.AlbumDetailR\x05album\x127\n" + + "\x06tracks\x18\x02 \x03(\v2\x1f.music_agregator.v1.TrackDetailR\x06tracks\"E\n" + + "\x10GetAlbumResponse\x121\n" + + "\x04info\x18\x01 \x01(\v2\x1d.music_agregator.v1.AlbumInfoR\x04info\"7\n" + + "\x1aAnalyzeAlbumReleaseRequest\x12\x19\n" + + "\balbum_id\x18\x01 \x01(\tR\aalbumId\"P\n" + + "\x1bAnalyzeAlbumReleaseResponse\x121\n" + + "\x04info\x18\x01 \x01(\v2\x1d.music_agregator.v1.AlbumInfoR\x04info\"\xf4\x03\n" + + "\vTrackDetail\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vexternal_id\x18\x02 \x01(\tR\n" + + "externalId\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12\x1f\n" + + "\vduration_ms\x18\x04 \x01(\x05R\n" + + "durationMs\x12\x1f\n" + + "\vdisc_number\x18\x05 \x01(\x05R\n" + + "discNumber\x12!\n" + + "\ftrack_number\x18\x06 \x01(\x05R\vtrackNumber\x12\x12\n" + + "\x04isrc\x18\a \x01(\tR\x04isrc\x12\x1a\n" + + "\bexplicit\x18\b \x01(\bR\bexplicit\x12:\n" + + "\aartists\x18\t \x03(\v2 .music_agregator.v1.ArtistCreditR\aartists\x12\x1b\n" + + "\tfile_path\x18\n" + + " \x01(\tR\bfilePath\x12\x1b\n" + + "\tfile_size\x18\v \x01(\x03R\bfileSize\x12\x16\n" + + "\x06format\x18\f \x01(\tR\x06format\x12\x1b\n" + + "\tbit_depth\x18\r \x01(\x05R\bbitDepth\x12\x1f\n" + + "\vsample_rate\x18\x0e \x01(\x05R\n" + + "sampleRate\x12\x1a\n" + + "\bchannels\x18\x0f \x01(\x05R\bchannels\x12!\n" + + "\fbitrate_kbps\x18\x10 \x01(\x05R\vbitrateKbps\"2\n" + + "\fArtistCredit\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\xb7\x03\n" + + "\x12AlbumReleaseDetail\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + + "\x06format\x18\x02 \x01(\tR\x06format\x12\x1b\n" + + "\tbit_depth\x18\x03 \x01(\x05R\bbitDepth\x12\x1f\n" + + "\vsample_rate\x18\x04 \x01(\x05R\n" + + "sampleRate\x12\x1a\n" + + "\bchannels\x18\x05 \x01(\x05R\bchannels\x12\x1f\n" + + "\vis_lossless\x18\x06 \x01(\bR\n" + + "isLossless\x12\x16\n" + + "\x06source\x18\a \x01(\tR\x06source\x12\x1d\n" + + "\n" + + "total_size\x18\b \x01(\x03R\ttotalSize\x12*\n" + + "\x11total_duration_ms\x18\t \x01(\x05R\x0ftotalDurationMs\x12\x1f\n" + + "\vtrack_count\x18\n" + + " \x01(\x05R\n" + + "trackCount\x12\"\n" + + "\rhas_cover_art\x18\v \x01(\bR\vhasCoverArt\x12\"\n" + + "\rhas_cue_sheet\x18\f \x01(\bR\vhasCueSheet\x12\x1e\n" + + "\vhas_rip_log\x18\r \x01(\bR\thasRipLog\x12\x12\n" + + "\x04path\x18\x0e \x01(\tR\x04path\"\xa8\x04\n" + + "\x10MonitoredRelease\x12\x1b\n" + + "\tinfo_hash\x18\x01 \x01(\tR\binfoHash\x12\x16\n" + + "\x06artist\x18\x02 \x01(\tR\x06artist\x12\x14\n" + + "\x05album\x18\x03 \x01(\tR\x05album\x12\x12\n" + + "\x04year\x18\x04 \x01(\x05R\x04year\x12\x16\n" + + "\x06format\x18\x05 \x01(\tR\x06format\x12\x1a\n" + + "\blossless\x18\x06 \x01(\bR\blossless\x12\x1b\n" + + "\tbit_depth\x18\a \x01(\x05R\bbitDepth\x12\x1f\n" + + "\vsample_rate\x18\b \x01(\x05R\n" + + "sampleRate\x12\x16\n" + + "\x06source\x18\t \x01(\tR\x06source\x12\x1f\n" + + "\vtrack_count\x18\n" + + " \x01(\x05R\n" + + "trackCount\x12\x1f\n" + + "\vtrack_names\x18\v \x03(\tR\n" + + "trackNames\x12\"\n" + + "\rhas_cover_art\x18\f \x01(\bR\vhasCoverArt\x12\"\n" + + "\rhas_cue_sheet\x18\r \x01(\bR\vhasCueSheet\x12\x1e\n" + + "\vhas_rip_log\x18\x0e \x01(\bR\thasRipLog\x12(\n" + + "\x10total_audio_size\x18\x0f \x01(\x03R\x0etotalAudioSize\x12#\n" + + "\rdownload_link\x18\x10 \x01(\tR\fdownloadLink\x12\x18\n" + + "\aseeders\x18\x11 \x01(\x05R\aseeders\x12\x18\n" + + "\atracker\x18\x12 \x01(\tR\atracker\"Z\n" + + "\x14SearchArtistsRequest\x12\x14\n" + + "\x05query\x18\x01 \x01(\tR\x05query\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\"o\n" + + "\x15SearchArtistsResponse\x12@\n" + + "\aartists\x18\x01 \x03(\v2&.music_agregator.v1.SearchArtistResultR\aartists\x12\x14\n" + + "\x05total\x18\x02 \x01(\x05R\x05total\"\xf2\x02\n" + + "\x12SearchArtistResult\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" + + "\tsort_name\x18\x03 \x01(\tR\bsortName\x12\x1f\n" + + "\vartist_type\x18\x04 \x01(\tR\n" + + "artistType\x12\x18\n" + + "\acountry\x18\x05 \x01(\tR\acountry\x12\x1f\n" + + "\vformed_date\x18\x06 \x01(\tR\n" + + "formedDate\x12%\n" + + "\x0edisbanded_date\x18\a \x01(\tR\rdisbandedDate\x12 \n" + + "\vdescription\x18\b \x01(\tR\vdescription\x12\x1b\n" + + "\timage_url\x18\t \x01(\tR\bimageUrl\x12\x16\n" + + "\x06genres\x18\n" + + " \x03(\tR\x06genres\x12A\n" + + "\fexternal_ids\x18\v \x03(\v2\x1e.music_agregator.v1.ExternalIdR\vexternalIds\"8\n" + + "\n" + + "ExternalId\x12\x1a\n" + + "\bprovider\x18\x01 \x01(\tR\bprovider\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\"c\n" + + "\x16GetArtistAlbumsRequest\x12\x1b\n" + + "\tartist_id\x18\x01 \x01(\tR\bartistId\x12\x14\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x03 \x01(\x05R\x06offset\"h\n" + + "\x17GetArtistAlbumsResponse\x127\n" + + "\x06albums\x18\x01 \x03(\v2\x1f.music_agregator.v1.AlbumResultR\x06albums\x12\x14\n" + + "\x05total\x18\x02 \x01(\x05R\x05total\"\xba\x03\n" + + "\vAlbumResult\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x1d\n" + + "\n" + + "album_type\x18\x03 \x01(\tR\talbumType\x12!\n" + + "\frelease_date\x18\x04 \x01(\tR\vreleaseDate\x12\x10\n" + + "\x03upc\x18\x05 \x01(\tR\x03upc\x12!\n" + + "\ftotal_tracks\x18\x06 \x01(\x05R\vtotalTracks\x12\x1f\n" + + "\vtotal_discs\x18\a \x01(\x05R\n" + + "totalDiscs\x12\x1b\n" + + "\tcover_url\x18\b \x01(\tR\bcoverUrl\x12?\n" + + "\aartists\x18\t \x03(\v2%.music_agregator.v1.AlbumArtistCreditR\aartists\x124\n" + + "\x05label\x18\n" + + " \x01(\v2\x1e.music_agregator.v1.AlbumLabelR\x05label\x12\x16\n" + + "\x06genres\x18\v \x03(\tR\x06genres\x12A\n" + + "\fexternal_ids\x18\f \x03(\v2\x1e.music_agregator.v1.ExternalIdR\vexternalIds\"K\n" + + "\x11AlbumArtistCredit\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + + "\x04role\x18\x03 \x01(\tR\x04role\"J\n" + + "\n" + + "AlbumLabel\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" + + "\acountry\x18\x03 \x01(\tR\acountry\"5\n" + + "\x16SubscribeEventsRequest\x12\x1b\n" + + "\tsince_seq\x18\x01 \x01(\x03R\bsinceSeq\"\x88\x02\n" + + "\n" + + "AlbumEvent\x12\x10\n" + + "\x03seq\x18\x01 \x01(\x03R\x03seq\x12&\n" + + "\x0fworkflow_run_id\x18\x02 \x01(\tR\rworkflowRunId\x12\x19\n" + + "\balbum_id\x18\x03 \x01(\tR\aalbumId\x12\x18\n" + + "\aquality\x18\x04 \x01(\tR\aquality\x12\x1d\n" + + "\n" + + "event_type\x18\x05 \x01(\tR\teventType\x12\x12\n" + + "\x04step\x18\x06 \x01(\tR\x04step\x12\x18\n" + + "\amessage\x18\a \x01(\tR\amessage\x12\x1b\n" + + "\tdata_json\x18\b \x01(\fR\bdataJson\x12!\n" + + "\ftimestamp_ms\x18\t \x01(\x03R\vtimestampMs\"\xe4\x01\n" + + "\x19MonitorAlbumStreamRequest\x12?\n" + + "\x05start\x18\x01 \x01(\v2'.music_agregator.v1.StartMonitorRequestH\x00R\x05start\x12>\n" + + "\bdecision\x18\x02 \x01(\v2 .music_agregator.v1.UserDecisionH\x00R\bdecision\x12;\n" + + "\x06cancel\x18\x03 \x01(\v2!.music_agregator.v1.CancelRequestH\x00R\x06cancelB\t\n" + + "\amessage\"\xf1\x01\n" + + "\x13StartMonitorRequest\x12\x19\n" + + "\balbum_id\x18\x01 \x01(\tR\aalbumId\x12K\n" + + "\x0findexer_options\x18\x02 \x01(\v2\".music_agregator.v1.IndexerOptionsR\x0eindexerOptions\x129\n" + + "\aquality\x18\x03 \x01(\x0e2\x1f.music_agregator.v1.QualityTypeR\aquality\x127\n" + + "\x04mode\x18\x04 \x01(\x0e2#.music_agregator.v1.InteractionModeR\x04mode\"\xbc\x01\n" + + "\fUserDecision\x12\x1b\n" + + "\tprompt_id\x18\x01 \x01(\tR\bpromptId\x12\x1a\n" + + "\aconfirm\x18\x02 \x01(\bH\x00R\aconfirm\x12!\n" + + "\vselected_id\x18\x03 \x01(\tH\x00R\n" + + "selectedId\x12D\n" + + "\fselected_ids\x18\x04 \x01(\v2\x1f.music_agregator.v1.SelectedIdsH\x00R\vselectedIdsB\n" + + "\n" + + "\bdecision\"\x1f\n" + + "\vSelectedIds\x12\x10\n" + + "\x03ids\x18\x01 \x03(\tR\x03ids\"\x0f\n" + + "\rCancelRequest\"\xa1\x02\n" + + "\x1aMonitorAlbumStreamResponse\x12:\n" + + "\x06status\x18\x01 \x01(\v2 .music_agregator.v1.StatusUpdateH\x00R\x06status\x12?\n" + + "\x06prompt\x18\x02 \x01(\v2%.music_agregator.v1.PromptForDecisionH\x00R\x06prompt\x12B\n" + + "\x06result\x18\x03 \x01(\v2(.music_agregator.v1.MonitorAlbumResponseH\x00R\x06result\x127\n" + + "\x05error\x18\x04 \x01(\v2\x1f.music_agregator.v1.ErrorUpdateH\x00R\x05errorB\t\n" + + "\amessage\"\xb0\x02\n" + + "\fStatusUpdate\x123\n" + + "\x04step\x18\x01 \x01(\x0e2\x1f.music_agregator.v1.MonitorStepR\x04step\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12D\n" + + "\n" + + "album_info\x18\n" + + " \x01(\v2#.music_agregator.v1.StreamAlbumInfoH\x00R\talbumInfo\x12=\n" + + "\btorrents\x18\v \x01(\v2\x1f.music_agregator.v1.TorrentListH\x00R\btorrents\x12D\n" + + "\frelease_info\x18\f \x01(\v2\x1f.music_agregator.v1.ReleaseInfoH\x00R\vreleaseInfoB\x06\n" + + "\x04data\"\x80\x03\n" + + "\x11PromptForDecision\x12\x1b\n" + + "\tprompt_id\x18\x01 \x01(\tR\bpromptId\x122\n" + + "\x04type\x18\x02 \x01(\x0e2\x1e.music_agregator.v1.PromptTypeR\x04type\x12\x18\n" + + "\amessage\x18\x03 \x01(\tR\amessage\x12'\n" + + "\x0ftimeout_seconds\x18\x04 \x01(\x05R\x0etimeoutSeconds\x12=\n" + + "\aconfirm\x18\n" + + " \x01(\v2!.music_agregator.v1.ConfirmPromptH\x00R\aconfirm\x12D\n" + + "\n" + + "select_one\x18\v \x01(\v2#.music_agregator.v1.SelectOnePromptH\x00R\tselectOne\x12G\n" + + "\vselect_many\x18\f \x01(\v2$.music_agregator.v1.SelectManyPromptH\x00R\n" + + "selectManyB\t\n" + + "\aoptions\"\x8b\x01\n" + + "\vErrorUpdate\x12@\n" + + "\vfailed_step\x18\x01 \x01(\x0e2\x1f.music_agregator.v1.MonitorStepR\n" + + "failedStep\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12 \n" + + "\vrecoverable\x18\x03 \x01(\bR\vrecoverable\"\xac\x01\n" + + "\x0fStreamAlbumInfo\x12\x16\n" + + "\x06artist\x18\x01 \x01(\tR\x06artist\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12!\n" + + "\frelease_date\x18\x03 \x01(\tR\vreleaseDate\x12#\n" + + "\ralready_owned\x18\x04 \x01(\bR\falreadyOwned\x12#\n" + + "\rowned_quality\x18\x05 \x01(\tR\fownedQuality\"M\n" + + "\vTorrentList\x12>\n" + + "\btorrents\x18\x01 \x03(\v2\".music_agregator.v1.TorrentSummaryR\btorrents\"\x9e\x01\n" + + "\x0eTorrentSummary\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" + + "\atracker\x18\x03 \x01(\tR\atracker\x12\x18\n" + + "\aseeders\x18\x04 \x01(\x05R\aseeders\x12\x16\n" + + "\x06format\x18\x05 \x01(\tR\x06format\x12\x1a\n" + + "\blossless\x18\x06 \x01(\bR\blossless\"\xb4\x01\n" + + "\vReleaseInfo\x12\x1b\n" + + "\tinfo_hash\x18\x01 \x01(\tR\binfoHash\x12\x16\n" + + "\x06format\x18\x02 \x01(\tR\x06format\x12\x1b\n" + + "\tbit_depth\x18\x03 \x01(\x05R\bbitDepth\x12\x1f\n" + + "\vsample_rate\x18\x04 \x01(\x05R\n" + + "sampleRate\x12\x18\n" + + "\aseeders\x18\x05 \x01(\x05R\aseeders\x12\x18\n" + + "\atracker\x18\x06 \x01(\tR\atracker\"|\n" + + "\rConfirmPrompt\x12#\n" + + "\rconfirm_label\x18\x01 \x01(\tR\fconfirmLabel\x12!\n" + + "\fcancel_label\x18\x02 \x01(\tR\vcancelLabel\x12#\n" + + "\rdefault_value\x18\x03 \x01(\bR\fdefaultValue\"l\n" + + "\x0fSelectOnePrompt\x12:\n" + + "\aoptions\x18\x01 \x03(\v2 .music_agregator.v1.SelectOptionR\aoptions\x12\x1d\n" + + "\n" + + "default_id\x18\x02 \x01(\tR\tdefaultId\"\xbd\x01\n" + + "\x10SelectManyPrompt\x12:\n" + + "\aoptions\x18\x01 \x03(\v2 .music_agregator.v1.SelectOptionR\aoptions\x12\x1f\n" + + "\vdefault_ids\x18\x02 \x03(\tR\n" + + "defaultIds\x12%\n" + + "\x0emin_selections\x18\x03 \x01(\x05R\rminSelections\x12%\n" + + "\x0emax_selections\x18\x04 \x01(\x05R\rmaxSelections\"V\n" + + "\fSelectOption\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" + + "\x05label\x18\x02 \x01(\tR\x05label\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription*O\n" + + "\vQualityType\x12\x17\n" + + "\x13QUALITY_UNSPECIFIED\x10\x00\x12\x14\n" + + "\x10QUALITY_LOSSLESS\x10\x01\x12\x11\n" + + "\rQUALITY_LOSSY\x10\x02*\x85\x01\n" + + "\fMonitorState\x12\x1d\n" + + "\x19MONITOR_STATE_UNSPECIFIED\x10\x00\x12\x1b\n" + + "\x17MONITOR_STATE_MONITORED\x10\x01\x12\x1d\n" + + "\x19MONITOR_STATE_UNMONITORED\x10\x02\x12\x1a\n" + + "\x16MONITOR_STATE_EXCLUDED\x10\x03*N\n" + + "\x0fInteractionMode\x12\x1e\n" + + "\x1aINTERACTION_MODE_AUTOMATIC\x10\x00\x12\x1b\n" + + "\x17INTERACTION_MODE_MANUAL\x10\x01*\xd3\x02\n" + + "\vMonitorStep\x12\x1c\n" + + "\x18MONITOR_STEP_UNSPECIFIED\x10\x00\x12\"\n" + + "\x1eMONITOR_STEP_FETCHING_METADATA\x10\x01\x12\x1f\n" + + "\x1bMONITOR_STEP_CHECKING_OWNED\x10\x02\x12\"\n" + + "\x1eMONITOR_STEP_SEARCHING_INDEXER\x10\x03\x12 \n" + + "\x1cMONITOR_STEP_PARSING_RESULTS\x10\x04\x12\"\n" + + "\x1eMONITOR_STEP_FILTERING_QUALITY\x10\x05\x12\"\n" + + "\x1eMONITOR_STEP_SELECTING_RELEASE\x10\x06\x12\x1f\n" + + "\x1bMONITOR_STEP_ADDING_TORRENT\x10\a\x12\x17\n" + + "\x13MONITOR_STEP_SAVING\x10\b\x12\x19\n" + + "\x15MONITOR_STEP_COMPLETE\x10\t*{\n" + + "\n" + + "PromptType\x12\x1b\n" + + "\x17PROMPT_TYPE_UNSPECIFIED\x10\x00\x12\x17\n" + + "\x13PROMPT_TYPE_CONFIRM\x10\x01\x12\x1a\n" + + "\x16PROMPT_TYPE_SELECT_ONE\x10\x02\x12\x1b\n" + + "\x17PROMPT_TYPE_SELECT_MANY\x10\x032\xe5\x06\n" + + "\x15MusicAgregatorService\x12f\n" + + "\fMonitorAlbum\x12'.music_agregator.v1.MonitorAlbumRequest\x1a(.music_agregator.v1.MonitorAlbumResponse\"\x03\x88\x02\x01\x12y\n" + + "\x12MonitorAlbumStream\x12-.music_agregator.v1.MonitorAlbumStreamRequest\x1a..music_agregator.v1.MonitorAlbumStreamResponse\"\x00(\x010\x01\x12]\n" + + "\n" + + "GetArtists\x12%.music_agregator.v1.GetArtistsRequest\x1a&.music_agregator.v1.GetArtistsResponse\"\x00\x12W\n" + + "\bGetAlbum\x12#.music_agregator.v1.GetAlbumRequest\x1a$.music_agregator.v1.GetAlbumResponse\"\x00\x12x\n" + + "\x13AnalyzeAlbumRelease\x12..music_agregator.v1.AnalyzeAlbumReleaseRequest\x1a/.music_agregator.v1.AnalyzeAlbumReleaseResponse\"\x00\x12f\n" + + "\rSearchArtists\x12(.music_agregator.v1.SearchArtistsRequest\x1a).music_agregator.v1.SearchArtistsResponse\"\x00\x12l\n" + + "\x0fGetArtistAlbums\x12*.music_agregator.v1.GetArtistAlbumsRequest\x1a+.music_agregator.v1.GetArtistAlbumsResponse\"\x00\x12a\n" + + "\x0fSubscribeEvents\x12*.music_agregator.v1.SubscribeEventsRequest\x1a\x1e.music_agregator.v1.AlbumEvent\"\x000\x01B5Z3homelab.lan/music-agregator/gen/music_agregator/v1/b\x06proto3" + +var ( + file_music_agregator_v1_music_agregator_proto_rawDescOnce sync.Once + file_music_agregator_v1_music_agregator_proto_rawDescData []byte +) + +func file_music_agregator_v1_music_agregator_proto_rawDescGZIP() []byte { + file_music_agregator_v1_music_agregator_proto_rawDescOnce.Do(func() { + file_music_agregator_v1_music_agregator_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_music_agregator_v1_music_agregator_proto_rawDesc), len(file_music_agregator_v1_music_agregator_proto_rawDesc))) + }) + return file_music_agregator_v1_music_agregator_proto_rawDescData +} + +var file_music_agregator_v1_music_agregator_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_music_agregator_v1_music_agregator_proto_msgTypes = make([]protoimpl.MessageInfo, 45) +var file_music_agregator_v1_music_agregator_proto_goTypes = []any{ + (QualityType)(0), // 0: music_agregator.v1.QualityType + (MonitorState)(0), // 1: music_agregator.v1.MonitorState + (InteractionMode)(0), // 2: music_agregator.v1.InteractionMode + (MonitorStep)(0), // 3: music_agregator.v1.MonitorStep + (PromptType)(0), // 4: music_agregator.v1.PromptType + (*MonitorAlbumRequest)(nil), // 5: music_agregator.v1.MonitorAlbumRequest + (*IndexerOptions)(nil), // 6: music_agregator.v1.IndexerOptions + (*MonitorAlbumResponse)(nil), // 7: music_agregator.v1.MonitorAlbumResponse + (*GetArtistsRequest)(nil), // 8: music_agregator.v1.GetArtistsRequest + (*GetArtistsResponse)(nil), // 9: music_agregator.v1.GetArtistsResponse + (*ArtistSummary)(nil), // 10: music_agregator.v1.ArtistSummary + (*AlbumDetail)(nil), // 11: music_agregator.v1.AlbumDetail + (*DownloadInfo)(nil), // 12: music_agregator.v1.DownloadInfo + (*GetAlbumRequest)(nil), // 13: music_agregator.v1.GetAlbumRequest + (*AlbumInfo)(nil), // 14: music_agregator.v1.AlbumInfo + (*GetAlbumResponse)(nil), // 15: music_agregator.v1.GetAlbumResponse + (*AnalyzeAlbumReleaseRequest)(nil), // 16: music_agregator.v1.AnalyzeAlbumReleaseRequest + (*AnalyzeAlbumReleaseResponse)(nil), // 17: music_agregator.v1.AnalyzeAlbumReleaseResponse + (*TrackDetail)(nil), // 18: music_agregator.v1.TrackDetail + (*ArtistCredit)(nil), // 19: music_agregator.v1.ArtistCredit + (*AlbumReleaseDetail)(nil), // 20: music_agregator.v1.AlbumReleaseDetail + (*MonitoredRelease)(nil), // 21: music_agregator.v1.MonitoredRelease + (*SearchArtistsRequest)(nil), // 22: music_agregator.v1.SearchArtistsRequest + (*SearchArtistsResponse)(nil), // 23: music_agregator.v1.SearchArtistsResponse + (*SearchArtistResult)(nil), // 24: music_agregator.v1.SearchArtistResult + (*ExternalId)(nil), // 25: music_agregator.v1.ExternalId + (*GetArtistAlbumsRequest)(nil), // 26: music_agregator.v1.GetArtistAlbumsRequest + (*GetArtistAlbumsResponse)(nil), // 27: music_agregator.v1.GetArtistAlbumsResponse + (*AlbumResult)(nil), // 28: music_agregator.v1.AlbumResult + (*AlbumArtistCredit)(nil), // 29: music_agregator.v1.AlbumArtistCredit + (*AlbumLabel)(nil), // 30: music_agregator.v1.AlbumLabel + (*SubscribeEventsRequest)(nil), // 31: music_agregator.v1.SubscribeEventsRequest + (*AlbumEvent)(nil), // 32: music_agregator.v1.AlbumEvent + (*MonitorAlbumStreamRequest)(nil), // 33: music_agregator.v1.MonitorAlbumStreamRequest + (*StartMonitorRequest)(nil), // 34: music_agregator.v1.StartMonitorRequest + (*UserDecision)(nil), // 35: music_agregator.v1.UserDecision + (*SelectedIds)(nil), // 36: music_agregator.v1.SelectedIds + (*CancelRequest)(nil), // 37: music_agregator.v1.CancelRequest + (*MonitorAlbumStreamResponse)(nil), // 38: music_agregator.v1.MonitorAlbumStreamResponse + (*StatusUpdate)(nil), // 39: music_agregator.v1.StatusUpdate + (*PromptForDecision)(nil), // 40: music_agregator.v1.PromptForDecision + (*ErrorUpdate)(nil), // 41: music_agregator.v1.ErrorUpdate + (*StreamAlbumInfo)(nil), // 42: music_agregator.v1.StreamAlbumInfo + (*TorrentList)(nil), // 43: music_agregator.v1.TorrentList + (*TorrentSummary)(nil), // 44: music_agregator.v1.TorrentSummary + (*ReleaseInfo)(nil), // 45: music_agregator.v1.ReleaseInfo + (*ConfirmPrompt)(nil), // 46: music_agregator.v1.ConfirmPrompt + (*SelectOnePrompt)(nil), // 47: music_agregator.v1.SelectOnePrompt + (*SelectManyPrompt)(nil), // 48: music_agregator.v1.SelectManyPrompt + (*SelectOption)(nil), // 49: music_agregator.v1.SelectOption +} +var file_music_agregator_v1_music_agregator_proto_depIdxs = []int32{ + 6, // 0: music_agregator.v1.MonitorAlbumRequest.indexer_options:type_name -> music_agregator.v1.IndexerOptions + 0, // 1: music_agregator.v1.MonitorAlbumRequest.quality:type_name -> music_agregator.v1.QualityType + 11, // 2: music_agregator.v1.MonitorAlbumResponse.album:type_name -> music_agregator.v1.AlbumDetail + 10, // 3: music_agregator.v1.MonitorAlbumResponse.artist:type_name -> music_agregator.v1.ArtistSummary + 21, // 4: music_agregator.v1.MonitorAlbumResponse.release:type_name -> music_agregator.v1.MonitoredRelease + 10, // 5: music_agregator.v1.GetArtistsResponse.artists:type_name -> music_agregator.v1.ArtistSummary + 1, // 6: music_agregator.v1.ArtistSummary.monitor_state:type_name -> music_agregator.v1.MonitorState + 11, // 7: music_agregator.v1.ArtistSummary.albums:type_name -> music_agregator.v1.AlbumDetail + 1, // 8: music_agregator.v1.AlbumDetail.monitor_state:type_name -> music_agregator.v1.MonitorState + 12, // 9: music_agregator.v1.AlbumDetail.downloads:type_name -> music_agregator.v1.DownloadInfo + 20, // 10: music_agregator.v1.AlbumDetail.release:type_name -> music_agregator.v1.AlbumReleaseDetail + 11, // 11: music_agregator.v1.AlbumInfo.album:type_name -> music_agregator.v1.AlbumDetail + 18, // 12: music_agregator.v1.AlbumInfo.tracks:type_name -> music_agregator.v1.TrackDetail + 14, // 13: music_agregator.v1.GetAlbumResponse.info:type_name -> music_agregator.v1.AlbumInfo + 14, // 14: music_agregator.v1.AnalyzeAlbumReleaseResponse.info:type_name -> music_agregator.v1.AlbumInfo + 19, // 15: music_agregator.v1.TrackDetail.artists:type_name -> music_agregator.v1.ArtistCredit + 24, // 16: music_agregator.v1.SearchArtistsResponse.artists:type_name -> music_agregator.v1.SearchArtistResult + 25, // 17: music_agregator.v1.SearchArtistResult.external_ids:type_name -> music_agregator.v1.ExternalId + 28, // 18: music_agregator.v1.GetArtistAlbumsResponse.albums:type_name -> music_agregator.v1.AlbumResult + 29, // 19: music_agregator.v1.AlbumResult.artists:type_name -> music_agregator.v1.AlbumArtistCredit + 30, // 20: music_agregator.v1.AlbumResult.label:type_name -> music_agregator.v1.AlbumLabel + 25, // 21: music_agregator.v1.AlbumResult.external_ids:type_name -> music_agregator.v1.ExternalId + 34, // 22: music_agregator.v1.MonitorAlbumStreamRequest.start:type_name -> music_agregator.v1.StartMonitorRequest + 35, // 23: music_agregator.v1.MonitorAlbumStreamRequest.decision:type_name -> music_agregator.v1.UserDecision + 37, // 24: music_agregator.v1.MonitorAlbumStreamRequest.cancel:type_name -> music_agregator.v1.CancelRequest + 6, // 25: music_agregator.v1.StartMonitorRequest.indexer_options:type_name -> music_agregator.v1.IndexerOptions + 0, // 26: music_agregator.v1.StartMonitorRequest.quality:type_name -> music_agregator.v1.QualityType + 2, // 27: music_agregator.v1.StartMonitorRequest.mode:type_name -> music_agregator.v1.InteractionMode + 36, // 28: music_agregator.v1.UserDecision.selected_ids:type_name -> music_agregator.v1.SelectedIds + 39, // 29: music_agregator.v1.MonitorAlbumStreamResponse.status:type_name -> music_agregator.v1.StatusUpdate + 40, // 30: music_agregator.v1.MonitorAlbumStreamResponse.prompt:type_name -> music_agregator.v1.PromptForDecision + 7, // 31: music_agregator.v1.MonitorAlbumStreamResponse.result:type_name -> music_agregator.v1.MonitorAlbumResponse + 41, // 32: music_agregator.v1.MonitorAlbumStreamResponse.error:type_name -> music_agregator.v1.ErrorUpdate + 3, // 33: music_agregator.v1.StatusUpdate.step:type_name -> music_agregator.v1.MonitorStep + 42, // 34: music_agregator.v1.StatusUpdate.album_info:type_name -> music_agregator.v1.StreamAlbumInfo + 43, // 35: music_agregator.v1.StatusUpdate.torrents:type_name -> music_agregator.v1.TorrentList + 45, // 36: music_agregator.v1.StatusUpdate.release_info:type_name -> music_agregator.v1.ReleaseInfo + 4, // 37: music_agregator.v1.PromptForDecision.type:type_name -> music_agregator.v1.PromptType + 46, // 38: music_agregator.v1.PromptForDecision.confirm:type_name -> music_agregator.v1.ConfirmPrompt + 47, // 39: music_agregator.v1.PromptForDecision.select_one:type_name -> music_agregator.v1.SelectOnePrompt + 48, // 40: music_agregator.v1.PromptForDecision.select_many:type_name -> music_agregator.v1.SelectManyPrompt + 3, // 41: music_agregator.v1.ErrorUpdate.failed_step:type_name -> music_agregator.v1.MonitorStep + 44, // 42: music_agregator.v1.TorrentList.torrents:type_name -> music_agregator.v1.TorrentSummary + 49, // 43: music_agregator.v1.SelectOnePrompt.options:type_name -> music_agregator.v1.SelectOption + 49, // 44: music_agregator.v1.SelectManyPrompt.options:type_name -> music_agregator.v1.SelectOption + 5, // 45: music_agregator.v1.MusicAgregatorService.MonitorAlbum:input_type -> music_agregator.v1.MonitorAlbumRequest + 33, // 46: music_agregator.v1.MusicAgregatorService.MonitorAlbumStream:input_type -> music_agregator.v1.MonitorAlbumStreamRequest + 8, // 47: music_agregator.v1.MusicAgregatorService.GetArtists:input_type -> music_agregator.v1.GetArtistsRequest + 13, // 48: music_agregator.v1.MusicAgregatorService.GetAlbum:input_type -> music_agregator.v1.GetAlbumRequest + 16, // 49: music_agregator.v1.MusicAgregatorService.AnalyzeAlbumRelease:input_type -> music_agregator.v1.AnalyzeAlbumReleaseRequest + 22, // 50: music_agregator.v1.MusicAgregatorService.SearchArtists:input_type -> music_agregator.v1.SearchArtistsRequest + 26, // 51: music_agregator.v1.MusicAgregatorService.GetArtistAlbums:input_type -> music_agregator.v1.GetArtistAlbumsRequest + 31, // 52: music_agregator.v1.MusicAgregatorService.SubscribeEvents:input_type -> music_agregator.v1.SubscribeEventsRequest + 7, // 53: music_agregator.v1.MusicAgregatorService.MonitorAlbum:output_type -> music_agregator.v1.MonitorAlbumResponse + 38, // 54: music_agregator.v1.MusicAgregatorService.MonitorAlbumStream:output_type -> music_agregator.v1.MonitorAlbumStreamResponse + 9, // 55: music_agregator.v1.MusicAgregatorService.GetArtists:output_type -> music_agregator.v1.GetArtistsResponse + 15, // 56: music_agregator.v1.MusicAgregatorService.GetAlbum:output_type -> music_agregator.v1.GetAlbumResponse + 17, // 57: music_agregator.v1.MusicAgregatorService.AnalyzeAlbumRelease:output_type -> music_agregator.v1.AnalyzeAlbumReleaseResponse + 23, // 58: music_agregator.v1.MusicAgregatorService.SearchArtists:output_type -> music_agregator.v1.SearchArtistsResponse + 27, // 59: music_agregator.v1.MusicAgregatorService.GetArtistAlbums:output_type -> music_agregator.v1.GetArtistAlbumsResponse + 32, // 60: music_agregator.v1.MusicAgregatorService.SubscribeEvents:output_type -> music_agregator.v1.AlbumEvent + 53, // [53:61] is the sub-list for method output_type + 45, // [45:53] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name +} + +func init() { file_music_agregator_v1_music_agregator_proto_init() } +func file_music_agregator_v1_music_agregator_proto_init() { + if File_music_agregator_v1_music_agregator_proto != nil { + return + } + file_music_agregator_v1_music_agregator_proto_msgTypes[28].OneofWrappers = []any{ + (*MonitorAlbumStreamRequest_Start)(nil), + (*MonitorAlbumStreamRequest_Decision)(nil), + (*MonitorAlbumStreamRequest_Cancel)(nil), + } + file_music_agregator_v1_music_agregator_proto_msgTypes[30].OneofWrappers = []any{ + (*UserDecision_Confirm)(nil), + (*UserDecision_SelectedId)(nil), + (*UserDecision_SelectedIds)(nil), + } + file_music_agregator_v1_music_agregator_proto_msgTypes[33].OneofWrappers = []any{ + (*MonitorAlbumStreamResponse_Status)(nil), + (*MonitorAlbumStreamResponse_Prompt)(nil), + (*MonitorAlbumStreamResponse_Result)(nil), + (*MonitorAlbumStreamResponse_Error)(nil), + } + file_music_agregator_v1_music_agregator_proto_msgTypes[34].OneofWrappers = []any{ + (*StatusUpdate_AlbumInfo)(nil), + (*StatusUpdate_Torrents)(nil), + (*StatusUpdate_ReleaseInfo)(nil), + } + file_music_agregator_v1_music_agregator_proto_msgTypes[35].OneofWrappers = []any{ + (*PromptForDecision_Confirm)(nil), + (*PromptForDecision_SelectOne)(nil), + (*PromptForDecision_SelectMany)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_music_agregator_v1_music_agregator_proto_rawDesc), len(file_music_agregator_v1_music_agregator_proto_rawDesc)), + NumEnums: 5, + NumMessages: 45, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_music_agregator_v1_music_agregator_proto_goTypes, + DependencyIndexes: file_music_agregator_v1_music_agregator_proto_depIdxs, + EnumInfos: file_music_agregator_v1_music_agregator_proto_enumTypes, + MessageInfos: file_music_agregator_v1_music_agregator_proto_msgTypes, + }.Build() + File_music_agregator_v1_music_agregator_proto = out.File + file_music_agregator_v1_music_agregator_proto_goTypes = nil + file_music_agregator_v1_music_agregator_proto_depIdxs = nil +} diff --git a/gen/music_agregator/v1/music_agregator_grpc.pb.go b/gen/music_agregator/v1/music_agregator_grpc.pb.go new file mode 100644 index 0000000..0e0d085 --- /dev/null +++ b/gen/music_agregator/v1/music_agregator_grpc.pb.go @@ -0,0 +1,388 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: music_agregator/v1/music_agregator.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MusicAgregatorService_MonitorAlbum_FullMethodName = "/music_agregator.v1.MusicAgregatorService/MonitorAlbum" + MusicAgregatorService_MonitorAlbumStream_FullMethodName = "/music_agregator.v1.MusicAgregatorService/MonitorAlbumStream" + MusicAgregatorService_GetArtists_FullMethodName = "/music_agregator.v1.MusicAgregatorService/GetArtists" + MusicAgregatorService_GetAlbum_FullMethodName = "/music_agregator.v1.MusicAgregatorService/GetAlbum" + MusicAgregatorService_AnalyzeAlbumRelease_FullMethodName = "/music_agregator.v1.MusicAgregatorService/AnalyzeAlbumRelease" + MusicAgregatorService_SearchArtists_FullMethodName = "/music_agregator.v1.MusicAgregatorService/SearchArtists" + MusicAgregatorService_GetArtistAlbums_FullMethodName = "/music_agregator.v1.MusicAgregatorService/GetArtistAlbums" + MusicAgregatorService_SubscribeEvents_FullMethodName = "/music_agregator.v1.MusicAgregatorService/SubscribeEvents" +) + +// MusicAgregatorServiceClient is the client API for MusicAgregatorService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MusicAgregatorServiceClient interface { + // Deprecated: Do not use. + MonitorAlbum(ctx context.Context, in *MonitorAlbumRequest, opts ...grpc.CallOption) (*MonitorAlbumResponse, error) + MonitorAlbumStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse], error) + GetArtists(ctx context.Context, in *GetArtistsRequest, opts ...grpc.CallOption) (*GetArtistsResponse, error) + GetAlbum(ctx context.Context, in *GetAlbumRequest, opts ...grpc.CallOption) (*GetAlbumResponse, error) + AnalyzeAlbumRelease(ctx context.Context, in *AnalyzeAlbumReleaseRequest, opts ...grpc.CallOption) (*AnalyzeAlbumReleaseResponse, error) + SearchArtists(ctx context.Context, in *SearchArtistsRequest, opts ...grpc.CallOption) (*SearchArtistsResponse, error) + GetArtistAlbums(ctx context.Context, in *GetArtistAlbumsRequest, opts ...grpc.CallOption) (*GetArtistAlbumsResponse, error) + SubscribeEvents(ctx context.Context, in *SubscribeEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[AlbumEvent], error) +} + +type musicAgregatorServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewMusicAgregatorServiceClient(cc grpc.ClientConnInterface) MusicAgregatorServiceClient { + return &musicAgregatorServiceClient{cc} +} + +// Deprecated: Do not use. +func (c *musicAgregatorServiceClient) MonitorAlbum(ctx context.Context, in *MonitorAlbumRequest, opts ...grpc.CallOption) (*MonitorAlbumResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MonitorAlbumResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_MonitorAlbum_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) MonitorAlbumStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicAgregatorService_ServiceDesc.Streams[0], MusicAgregatorService_MonitorAlbumStream_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse]{ClientStream: stream} + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicAgregatorService_MonitorAlbumStreamClient = grpc.BidiStreamingClient[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse] + +func (c *musicAgregatorServiceClient) GetArtists(ctx context.Context, in *GetArtistsRequest, opts ...grpc.CallOption) (*GetArtistsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetArtistsResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_GetArtists_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) GetAlbum(ctx context.Context, in *GetAlbumRequest, opts ...grpc.CallOption) (*GetAlbumResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetAlbumResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_GetAlbum_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) AnalyzeAlbumRelease(ctx context.Context, in *AnalyzeAlbumReleaseRequest, opts ...grpc.CallOption) (*AnalyzeAlbumReleaseResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(AnalyzeAlbumReleaseResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_AnalyzeAlbumRelease_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) SearchArtists(ctx context.Context, in *SearchArtistsRequest, opts ...grpc.CallOption) (*SearchArtistsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SearchArtistsResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_SearchArtists_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) GetArtistAlbums(ctx context.Context, in *GetArtistAlbumsRequest, opts ...grpc.CallOption) (*GetArtistAlbumsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetArtistAlbumsResponse) + err := c.cc.Invoke(ctx, MusicAgregatorService_GetArtistAlbums_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicAgregatorServiceClient) SubscribeEvents(ctx context.Context, in *SubscribeEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[AlbumEvent], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicAgregatorService_ServiceDesc.Streams[1], MusicAgregatorService_SubscribeEvents_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[SubscribeEventsRequest, AlbumEvent]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicAgregatorService_SubscribeEventsClient = grpc.ServerStreamingClient[AlbumEvent] + +// MusicAgregatorServiceServer is the server API for MusicAgregatorService service. +// All implementations must embed UnimplementedMusicAgregatorServiceServer +// for forward compatibility. +type MusicAgregatorServiceServer interface { + // Deprecated: Do not use. + MonitorAlbum(context.Context, *MonitorAlbumRequest) (*MonitorAlbumResponse, error) + MonitorAlbumStream(grpc.BidiStreamingServer[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse]) error + GetArtists(context.Context, *GetArtistsRequest) (*GetArtistsResponse, error) + GetAlbum(context.Context, *GetAlbumRequest) (*GetAlbumResponse, error) + AnalyzeAlbumRelease(context.Context, *AnalyzeAlbumReleaseRequest) (*AnalyzeAlbumReleaseResponse, error) + SearchArtists(context.Context, *SearchArtistsRequest) (*SearchArtistsResponse, error) + GetArtistAlbums(context.Context, *GetArtistAlbumsRequest) (*GetArtistAlbumsResponse, error) + SubscribeEvents(*SubscribeEventsRequest, grpc.ServerStreamingServer[AlbumEvent]) error + mustEmbedUnimplementedMusicAgregatorServiceServer() +} + +// UnimplementedMusicAgregatorServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMusicAgregatorServiceServer struct{} + +func (UnimplementedMusicAgregatorServiceServer) MonitorAlbum(context.Context, *MonitorAlbumRequest) (*MonitorAlbumResponse, error) { + return nil, status.Error(codes.Unimplemented, "method MonitorAlbum not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) MonitorAlbumStream(grpc.BidiStreamingServer[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse]) error { + return status.Error(codes.Unimplemented, "method MonitorAlbumStream not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) GetArtists(context.Context, *GetArtistsRequest) (*GetArtistsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetArtists not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) GetAlbum(context.Context, *GetAlbumRequest) (*GetAlbumResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetAlbum not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) AnalyzeAlbumRelease(context.Context, *AnalyzeAlbumReleaseRequest) (*AnalyzeAlbumReleaseResponse, error) { + return nil, status.Error(codes.Unimplemented, "method AnalyzeAlbumRelease not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) SearchArtists(context.Context, *SearchArtistsRequest) (*SearchArtistsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SearchArtists not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) GetArtistAlbums(context.Context, *GetArtistAlbumsRequest) (*GetArtistAlbumsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetArtistAlbums not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) SubscribeEvents(*SubscribeEventsRequest, grpc.ServerStreamingServer[AlbumEvent]) error { + return status.Error(codes.Unimplemented, "method SubscribeEvents not implemented") +} +func (UnimplementedMusicAgregatorServiceServer) mustEmbedUnimplementedMusicAgregatorServiceServer() {} +func (UnimplementedMusicAgregatorServiceServer) testEmbeddedByValue() {} + +// UnsafeMusicAgregatorServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MusicAgregatorServiceServer will +// result in compilation errors. +type UnsafeMusicAgregatorServiceServer interface { + mustEmbedUnimplementedMusicAgregatorServiceServer() +} + +func RegisterMusicAgregatorServiceServer(s grpc.ServiceRegistrar, srv MusicAgregatorServiceServer) { + // If the following call panics, it indicates UnimplementedMusicAgregatorServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MusicAgregatorService_ServiceDesc, srv) +} + +func _MusicAgregatorService_MonitorAlbum_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MonitorAlbumRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).MonitorAlbum(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_MonitorAlbum_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).MonitorAlbum(ctx, req.(*MonitorAlbumRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_MonitorAlbumStream_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(MusicAgregatorServiceServer).MonitorAlbumStream(&grpc.GenericServerStream[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicAgregatorService_MonitorAlbumStreamServer = grpc.BidiStreamingServer[MonitorAlbumStreamRequest, MonitorAlbumStreamResponse] + +func _MusicAgregatorService_GetArtists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtistsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).GetArtists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_GetArtists_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).GetArtists(ctx, req.(*GetArtistsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_GetAlbum_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAlbumRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).GetAlbum(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_GetAlbum_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).GetAlbum(ctx, req.(*GetAlbumRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_AnalyzeAlbumRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AnalyzeAlbumReleaseRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).AnalyzeAlbumRelease(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_AnalyzeAlbumRelease_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).AnalyzeAlbumRelease(ctx, req.(*AnalyzeAlbumReleaseRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_SearchArtists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchArtistsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).SearchArtists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_SearchArtists_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).SearchArtists(ctx, req.(*SearchArtistsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_GetArtistAlbums_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetArtistAlbumsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicAgregatorServiceServer).GetArtistAlbums(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicAgregatorService_GetArtistAlbums_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicAgregatorServiceServer).GetArtistAlbums(ctx, req.(*GetArtistAlbumsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicAgregatorService_SubscribeEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SubscribeEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MusicAgregatorServiceServer).SubscribeEvents(m, &grpc.GenericServerStream[SubscribeEventsRequest, AlbumEvent]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicAgregatorService_SubscribeEventsServer = grpc.ServerStreamingServer[AlbumEvent] + +// MusicAgregatorService_ServiceDesc is the grpc.ServiceDesc for MusicAgregatorService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MusicAgregatorService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "music_agregator.v1.MusicAgregatorService", + HandlerType: (*MusicAgregatorServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "MonitorAlbum", + Handler: _MusicAgregatorService_MonitorAlbum_Handler, + }, + { + MethodName: "GetArtists", + Handler: _MusicAgregatorService_GetArtists_Handler, + }, + { + MethodName: "GetAlbum", + Handler: _MusicAgregatorService_GetAlbum_Handler, + }, + { + MethodName: "AnalyzeAlbumRelease", + Handler: _MusicAgregatorService_AnalyzeAlbumRelease_Handler, + }, + { + MethodName: "SearchArtists", + Handler: _MusicAgregatorService_SearchArtists_Handler, + }, + { + MethodName: "GetArtistAlbums", + Handler: _MusicAgregatorService_GetArtistAlbums_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "MonitorAlbumStream", + Handler: _MusicAgregatorService_MonitorAlbumStream_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "SubscribeEvents", + Handler: _MusicAgregatorService_SubscribeEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "music_agregator/v1/music_agregator.proto", +} diff --git a/gen/musicfs/v1/musicfs.pb.go b/gen/musicfs/v1/musicfs.pb.go new file mode 100644 index 0000000..677a490 --- /dev/null +++ b/gen/musicfs/v1/musicfs.pb.go @@ -0,0 +1,3274 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: musicfs.proto + +package musicfsv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MountState int32 + +const ( + MountState_MOUNT_UNKNOWN MountState = 0 + MountState_MOUNT_MOUNTING MountState = 1 + MountState_MOUNT_READY MountState = 2 + MountState_MOUNT_SYNCING MountState = 3 + MountState_MOUNT_DEGRADED MountState = 4 + MountState_MOUNT_UNMOUNTING MountState = 5 +) + +// Enum value maps for MountState. +var ( + MountState_name = map[int32]string{ + 0: "MOUNT_UNKNOWN", + 1: "MOUNT_MOUNTING", + 2: "MOUNT_READY", + 3: "MOUNT_SYNCING", + 4: "MOUNT_DEGRADED", + 5: "MOUNT_UNMOUNTING", + } + MountState_value = map[string]int32{ + "MOUNT_UNKNOWN": 0, + "MOUNT_MOUNTING": 1, + "MOUNT_READY": 2, + "MOUNT_SYNCING": 3, + "MOUNT_DEGRADED": 4, + "MOUNT_UNMOUNTING": 5, + } +) + +func (x MountState) Enum() *MountState { + p := new(MountState) + *p = x + return p +} + +func (x MountState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MountState) Descriptor() protoreflect.EnumDescriptor { + return file_musicfs_proto_enumTypes[0].Descriptor() +} + +func (MountState) Type() protoreflect.EnumType { + return &file_musicfs_proto_enumTypes[0] +} + +func (x MountState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MountState.Descriptor instead. +func (MountState) EnumDescriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{0} +} + +type HealthStatus int32 + +const ( + HealthStatus_HEALTH_UNKNOWN HealthStatus = 0 + HealthStatus_HEALTH_HEALTHY HealthStatus = 1 + HealthStatus_HEALTH_DEGRADED HealthStatus = 2 + HealthStatus_HEALTH_UNHEALTHY HealthStatus = 3 +) + +// Enum value maps for HealthStatus. +var ( + HealthStatus_name = map[int32]string{ + 0: "HEALTH_UNKNOWN", + 1: "HEALTH_HEALTHY", + 2: "HEALTH_DEGRADED", + 3: "HEALTH_UNHEALTHY", + } + HealthStatus_value = map[string]int32{ + "HEALTH_UNKNOWN": 0, + "HEALTH_HEALTHY": 1, + "HEALTH_DEGRADED": 2, + "HEALTH_UNHEALTHY": 3, + } +) + +func (x HealthStatus) Enum() *HealthStatus { + p := new(HealthStatus) + *p = x + return p +} + +func (x HealthStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HealthStatus) Descriptor() protoreflect.EnumDescriptor { + return file_musicfs_proto_enumTypes[1].Descriptor() +} + +func (HealthStatus) Type() protoreflect.EnumType { + return &file_musicfs_proto_enumTypes[1] +} + +func (x HealthStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HealthStatus.Descriptor instead. +func (HealthStatus) EnumDescriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{1} +} + +type Empty struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Empty) Reset() { + *x = Empty{} + mi := &file_musicfs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{0} +} + +type SearchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Limit *uint32 `protobuf:"varint,2,opt,name=limit,proto3,oneof" json:"limit,omitempty"` + Offset *uint32 `protobuf:"varint,3,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + OriginId *string `protobuf:"bytes,4,opt,name=origin_id,json=originId,proto3,oneof" json:"origin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchRequest) Reset() { + *x = SearchRequest{} + mi := &file_musicfs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchRequest) ProtoMessage() {} + +func (x *SearchRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead. +func (*SearchRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{1} +} + +func (x *SearchRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *SearchRequest) GetLimit() uint32 { + if x != nil && x.Limit != nil { + return *x.Limit + } + return 0 +} + +func (x *SearchRequest) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *SearchRequest) GetOriginId() string { + if x != nil && x.OriginId != nil { + return *x.OriginId + } + return "" +} + +type SearchResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Results []*SearchResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + TotalMatches uint64 `protobuf:"varint,2,opt,name=total_matches,json=totalMatches,proto3" json:"total_matches,omitempty"` + QueryTimeMs uint32 `protobuf:"varint,3,opt,name=query_time_ms,json=queryTimeMs,proto3" json:"query_time_ms,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchResponse) Reset() { + *x = SearchResponse{} + mi := &file_musicfs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResponse) ProtoMessage() {} + +func (x *SearchResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead. +func (*SearchResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{2} +} + +func (x *SearchResponse) GetResults() []*SearchResult { + if x != nil { + return x.Results + } + return nil +} + +func (x *SearchResponse) GetTotalMatches() uint64 { + if x != nil { + return x.TotalMatches + } + return 0 +} + +func (x *SearchResponse) GetQueryTimeMs() uint32 { + if x != nil { + return x.QueryTimeMs + } + return 0 +} + +type SearchResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + VirtualPath string `protobuf:"bytes,2,opt,name=virtual_path,json=virtualPath,proto3" json:"virtual_path,omitempty"` + Artist *string `protobuf:"bytes,3,opt,name=artist,proto3,oneof" json:"artist,omitempty"` + Album *string `protobuf:"bytes,4,opt,name=album,proto3,oneof" json:"album,omitempty"` + Title *string `protobuf:"bytes,5,opt,name=title,proto3,oneof" json:"title,omitempty"` + Score float32 `protobuf:"fixed32,6,opt,name=score,proto3" json:"score,omitempty"` + Highlights map[string]string `protobuf:"bytes,7,rep,name=highlights,proto3" json:"highlights,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SearchResult) Reset() { + *x = SearchResult{} + mi := &file_musicfs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SearchResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchResult) ProtoMessage() {} + +func (x *SearchResult) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchResult.ProtoReflect.Descriptor instead. +func (*SearchResult) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{3} +} + +func (x *SearchResult) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *SearchResult) GetVirtualPath() string { + if x != nil { + return x.VirtualPath + } + return "" +} + +func (x *SearchResult) GetArtist() string { + if x != nil && x.Artist != nil { + return *x.Artist + } + return "" +} + +func (x *SearchResult) GetAlbum() string { + if x != nil && x.Album != nil { + return *x.Album + } + return "" +} + +func (x *SearchResult) GetTitle() string { + if x != nil && x.Title != nil { + return *x.Title + } + return "" +} + +func (x *SearchResult) GetScore() float32 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *SearchResult) GetHighlights() map[string]string { + if x != nil { + return x.Highlights + } + return nil +} + +type StatusResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + UptimeSecs uint64 `protobuf:"varint,2,opt,name=uptime_secs,json=uptimeSecs,proto3" json:"uptime_secs,omitempty"` + MountPoint string `protobuf:"bytes,3,opt,name=mount_point,json=mountPoint,proto3" json:"mount_point,omitempty"` + State MountState `protobuf:"varint,4,opt,name=state,proto3,enum=musicfs.v1.MountState" json:"state,omitempty"` + OpenFileHandles uint32 `protobuf:"varint,5,opt,name=open_file_handles,json=openFileHandles,proto3" json:"open_file_handles,omitempty"` + FuseOpsTotal uint64 `protobuf:"varint,6,opt,name=fuse_ops_total,json=fuseOpsTotal,proto3" json:"fuse_ops_total,omitempty"` + FilesIndexed uint64 `protobuf:"varint,7,opt,name=files_indexed,json=filesIndexed,proto3" json:"files_indexed,omitempty"` + CacheSizeBytes uint64 `protobuf:"varint,8,opt,name=cache_size_bytes,json=cacheSizeBytes,proto3" json:"cache_size_bytes,omitempty"` + Origins []*OriginStatus `protobuf:"bytes,9,rep,name=origins,proto3" json:"origins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatusResponse) Reset() { + *x = StatusResponse{} + mi := &file_musicfs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatusResponse) ProtoMessage() {} + +func (x *StatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatusResponse.ProtoReflect.Descriptor instead. +func (*StatusResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{4} +} + +func (x *StatusResponse) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *StatusResponse) GetUptimeSecs() uint64 { + if x != nil { + return x.UptimeSecs + } + return 0 +} + +func (x *StatusResponse) GetMountPoint() string { + if x != nil { + return x.MountPoint + } + return "" +} + +func (x *StatusResponse) GetState() MountState { + if x != nil { + return x.State + } + return MountState_MOUNT_UNKNOWN +} + +func (x *StatusResponse) GetOpenFileHandles() uint32 { + if x != nil { + return x.OpenFileHandles + } + return 0 +} + +func (x *StatusResponse) GetFuseOpsTotal() uint64 { + if x != nil { + return x.FuseOpsTotal + } + return 0 +} + +func (x *StatusResponse) GetFilesIndexed() uint64 { + if x != nil { + return x.FilesIndexed + } + return 0 +} + +func (x *StatusResponse) GetCacheSizeBytes() uint64 { + if x != nil { + return x.CacheSizeBytes + } + return 0 +} + +func (x *StatusResponse) GetOrigins() []*OriginStatus { + if x != nil { + return x.Origins + } + return nil +} + +type OriginStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OriginType string `protobuf:"bytes,2,opt,name=origin_type,json=originType,proto3" json:"origin_type,omitempty"` + Health HealthStatus `protobuf:"varint,3,opt,name=health,proto3,enum=musicfs.v1.HealthStatus" json:"health,omitempty"` + FilesCount uint64 `protobuf:"varint,4,opt,name=files_count,json=filesCount,proto3" json:"files_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OriginStatus) Reset() { + *x = OriginStatus{} + mi := &file_musicfs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OriginStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OriginStatus) ProtoMessage() {} + +func (x *OriginStatus) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OriginStatus.ProtoReflect.Descriptor instead. +func (*OriginStatus) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{5} +} + +func (x *OriginStatus) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *OriginStatus) GetOriginType() string { + if x != nil { + return x.OriginType + } + return "" +} + +func (x *OriginStatus) GetHealth() HealthStatus { + if x != nil { + return x.Health + } + return HealthStatus_HEALTH_UNKNOWN +} + +func (x *OriginStatus) GetFilesCount() uint64 { + if x != nil { + return x.FilesCount + } + return 0 +} + +type ShutdownRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Graceful bool `protobuf:"varint,1,opt,name=graceful,proto3" json:"graceful,omitempty"` + TimeoutSecs uint32 `protobuf:"varint,2,opt,name=timeout_secs,json=timeoutSecs,proto3" json:"timeout_secs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ShutdownRequest) Reset() { + *x = ShutdownRequest{} + mi := &file_musicfs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ShutdownRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownRequest) ProtoMessage() {} + +func (x *ShutdownRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShutdownRequest.ProtoReflect.Descriptor instead. +func (*ShutdownRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{6} +} + +func (x *ShutdownRequest) GetGraceful() bool { + if x != nil { + return x.Graceful + } + return false +} + +func (x *ShutdownRequest) GetTimeoutSecs() uint32 { + if x != nil { + return x.TimeoutSecs + } + return 0 +} + +type TierStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + Entries uint64 `protobuf:"varint,1,opt,name=entries,proto3" json:"entries,omitempty"` + SizeBytes uint64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` + Hits uint64 `protobuf:"varint,3,opt,name=hits,proto3" json:"hits,omitempty"` + Misses uint64 `protobuf:"varint,4,opt,name=misses,proto3" json:"misses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TierStats) Reset() { + *x = TierStats{} + mi := &file_musicfs_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TierStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TierStats) ProtoMessage() {} + +func (x *TierStats) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TierStats.ProtoReflect.Descriptor instead. +func (*TierStats) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{7} +} + +func (x *TierStats) GetEntries() uint64 { + if x != nil { + return x.Entries + } + return 0 +} + +func (x *TierStats) GetSizeBytes() uint64 { + if x != nil { + return x.SizeBytes + } + return 0 +} + +func (x *TierStats) GetHits() uint64 { + if x != nil { + return x.Hits + } + return 0 +} + +func (x *TierStats) GetMisses() uint64 { + if x != nil { + return x.Misses + } + return 0 +} + +type CacheStats struct { + state protoimpl.MessageState `protogen:"open.v1"` + TotalSizeBytes uint64 `protobuf:"varint,1,opt,name=total_size_bytes,json=totalSizeBytes,proto3" json:"total_size_bytes,omitempty"` + UsedSizeBytes uint64 `protobuf:"varint,2,opt,name=used_size_bytes,json=usedSizeBytes,proto3" json:"used_size_bytes,omitempty"` + SizeLimitBytes uint64 `protobuf:"varint,3,opt,name=size_limit_bytes,json=sizeLimitBytes,proto3" json:"size_limit_bytes,omitempty"` + ChunkCount uint64 `protobuf:"varint,4,opt,name=chunk_count,json=chunkCount,proto3" json:"chunk_count,omitempty"` + ChunksUnique uint64 `protobuf:"varint,5,opt,name=chunks_unique,json=chunksUnique,proto3" json:"chunks_unique,omitempty"` + DedupRatio float64 `protobuf:"fixed64,6,opt,name=dedup_ratio,json=dedupRatio,proto3" json:"dedup_ratio,omitempty"` + HitCount uint64 `protobuf:"varint,7,opt,name=hit_count,json=hitCount,proto3" json:"hit_count,omitempty"` + MissCount uint64 `protobuf:"varint,8,opt,name=miss_count,json=missCount,proto3" json:"miss_count,omitempty"` + HitRatio float64 `protobuf:"fixed64,9,opt,name=hit_ratio,json=hitRatio,proto3" json:"hit_ratio,omitempty"` + MetadataEntries uint64 `protobuf:"varint,10,opt,name=metadata_entries,json=metadataEntries,proto3" json:"metadata_entries,omitempty"` + MetadataBytes uint64 `protobuf:"varint,11,opt,name=metadata_bytes,json=metadataBytes,proto3" json:"metadata_bytes,omitempty"` + L1Metadata *TierStats `protobuf:"bytes,12,opt,name=l1_metadata,json=l1Metadata,proto3" json:"l1_metadata,omitempty"` + L2Headers *TierStats `protobuf:"bytes,13,opt,name=l2_headers,json=l2Headers,proto3" json:"l2_headers,omitempty"` + L3Chunks *TierStats `protobuf:"bytes,14,opt,name=l3_chunks,json=l3Chunks,proto3" json:"l3_chunks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CacheStats) Reset() { + *x = CacheStats{} + mi := &file_musicfs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CacheStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheStats) ProtoMessage() {} + +func (x *CacheStats) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CacheStats.ProtoReflect.Descriptor instead. +func (*CacheStats) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{8} +} + +func (x *CacheStats) GetTotalSizeBytes() uint64 { + if x != nil { + return x.TotalSizeBytes + } + return 0 +} + +func (x *CacheStats) GetUsedSizeBytes() uint64 { + if x != nil { + return x.UsedSizeBytes + } + return 0 +} + +func (x *CacheStats) GetSizeLimitBytes() uint64 { + if x != nil { + return x.SizeLimitBytes + } + return 0 +} + +func (x *CacheStats) GetChunkCount() uint64 { + if x != nil { + return x.ChunkCount + } + return 0 +} + +func (x *CacheStats) GetChunksUnique() uint64 { + if x != nil { + return x.ChunksUnique + } + return 0 +} + +func (x *CacheStats) GetDedupRatio() float64 { + if x != nil { + return x.DedupRatio + } + return 0 +} + +func (x *CacheStats) GetHitCount() uint64 { + if x != nil { + return x.HitCount + } + return 0 +} + +func (x *CacheStats) GetMissCount() uint64 { + if x != nil { + return x.MissCount + } + return 0 +} + +func (x *CacheStats) GetHitRatio() float64 { + if x != nil { + return x.HitRatio + } + return 0 +} + +func (x *CacheStats) GetMetadataEntries() uint64 { + if x != nil { + return x.MetadataEntries + } + return 0 +} + +func (x *CacheStats) GetMetadataBytes() uint64 { + if x != nil { + return x.MetadataBytes + } + return 0 +} + +func (x *CacheStats) GetL1Metadata() *TierStats { + if x != nil { + return x.L1Metadata + } + return nil +} + +func (x *CacheStats) GetL2Headers() *TierStats { + if x != nil { + return x.L2Headers + } + return nil +} + +func (x *CacheStats) GetL3Chunks() *TierStats { + if x != nil { + return x.L3Chunks + } + return nil +} + +type ClearCacheRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + OriginId *string `protobuf:"bytes,1,opt,name=origin_id,json=originId,proto3,oneof" json:"origin_id,omitempty"` + ClearMetadata bool `protobuf:"varint,2,opt,name=clear_metadata,json=clearMetadata,proto3" json:"clear_metadata,omitempty"` + ClearChunks bool `protobuf:"varint,3,opt,name=clear_chunks,json=clearChunks,proto3" json:"clear_chunks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClearCacheRequest) Reset() { + *x = ClearCacheRequest{} + mi := &file_musicfs_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClearCacheRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClearCacheRequest) ProtoMessage() {} + +func (x *ClearCacheRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClearCacheRequest.ProtoReflect.Descriptor instead. +func (*ClearCacheRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{9} +} + +func (x *ClearCacheRequest) GetOriginId() string { + if x != nil && x.OriginId != nil { + return *x.OriginId + } + return "" +} + +func (x *ClearCacheRequest) GetClearMetadata() bool { + if x != nil { + return x.ClearMetadata + } + return false +} + +func (x *ClearCacheRequest) GetClearChunks() bool { + if x != nil { + return x.ClearChunks + } + return false +} + +type ClearCacheResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + BytesCleared uint64 `protobuf:"varint,1,opt,name=bytes_cleared,json=bytesCleared,proto3" json:"bytes_cleared,omitempty"` + ChunksCleared uint64 `protobuf:"varint,2,opt,name=chunks_cleared,json=chunksCleared,proto3" json:"chunks_cleared,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClearCacheResponse) Reset() { + *x = ClearCacheResponse{} + mi := &file_musicfs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClearCacheResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClearCacheResponse) ProtoMessage() {} + +func (x *ClearCacheResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClearCacheResponse.ProtoReflect.Descriptor instead. +func (*ClearCacheResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{10} +} + +func (x *ClearCacheResponse) GetBytesCleared() uint64 { + if x != nil { + return x.BytesCleared + } + return 0 +} + +func (x *ClearCacheResponse) GetChunksCleared() uint64 { + if x != nil { + return x.ChunksCleared + } + return 0 +} + +type PrefetchRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"` + OriginId *string `protobuf:"bytes,2,opt,name=origin_id,json=originId,proto3,oneof" json:"origin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrefetchRequest) Reset() { + *x = PrefetchRequest{} + mi := &file_musicfs_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrefetchRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrefetchRequest) ProtoMessage() {} + +func (x *PrefetchRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrefetchRequest.ProtoReflect.Descriptor instead. +func (*PrefetchRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{11} +} + +func (x *PrefetchRequest) GetPaths() []string { + if x != nil { + return x.Paths + } + return nil +} + +func (x *PrefetchRequest) GetOriginId() string { + if x != nil && x.OriginId != nil { + return *x.OriginId + } + return "" +} + +type PrefetchProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + CurrentPath string `protobuf:"bytes,1,opt,name=current_path,json=currentPath,proto3" json:"current_path,omitempty"` + Completed uint32 `protobuf:"varint,2,opt,name=completed,proto3" json:"completed,omitempty"` + Total uint32 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"` + BytesFetched uint64 `protobuf:"varint,4,opt,name=bytes_fetched,json=bytesFetched,proto3" json:"bytes_fetched,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrefetchProgress) Reset() { + *x = PrefetchProgress{} + mi := &file_musicfs_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrefetchProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrefetchProgress) ProtoMessage() {} + +func (x *PrefetchProgress) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrefetchProgress.ProtoReflect.Descriptor instead. +func (*PrefetchProgress) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{12} +} + +func (x *PrefetchProgress) GetCurrentPath() string { + if x != nil { + return x.CurrentPath + } + return "" +} + +func (x *PrefetchProgress) GetCompleted() uint32 { + if x != nil { + return x.Completed + } + return 0 +} + +func (x *PrefetchProgress) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *PrefetchProgress) GetBytesFetched() uint64 { + if x != nil { + return x.BytesFetched + } + return 0 +} + +type OriginsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Origins []*OriginInfo `protobuf:"bytes,1,rep,name=origins,proto3" json:"origins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OriginsResponse) Reset() { + *x = OriginsResponse{} + mi := &file_musicfs_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OriginsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OriginsResponse) ProtoMessage() {} + +func (x *OriginsResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OriginsResponse.ProtoReflect.Descriptor instead. +func (*OriginsResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{13} +} + +func (x *OriginsResponse) GetOrigins() []*OriginInfo { + if x != nil { + return x.Origins + } + return nil +} + +type OriginInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + OriginType string `protobuf:"bytes,2,opt,name=origin_type,json=originType,proto3" json:"origin_type,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + RootPath string `protobuf:"bytes,4,opt,name=root_path,json=rootPath,proto3" json:"root_path,omitempty"` + Health HealthStatus `protobuf:"varint,5,opt,name=health,proto3,enum=musicfs.v1.HealthStatus" json:"health,omitempty"` + FilesCount uint64 `protobuf:"varint,6,opt,name=files_count,json=filesCount,proto3" json:"files_count,omitempty"` + TotalSizeBytes uint64 `protobuf:"varint,7,opt,name=total_size_bytes,json=totalSizeBytes,proto3" json:"total_size_bytes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OriginInfo) Reset() { + *x = OriginInfo{} + mi := &file_musicfs_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OriginInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OriginInfo) ProtoMessage() {} + +func (x *OriginInfo) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OriginInfo.ProtoReflect.Descriptor instead. +func (*OriginInfo) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{14} +} + +func (x *OriginInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *OriginInfo) GetOriginType() string { + if x != nil { + return x.OriginType + } + return "" +} + +func (x *OriginInfo) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *OriginInfo) GetRootPath() string { + if x != nil { + return x.RootPath + } + return "" +} + +func (x *OriginInfo) GetHealth() HealthStatus { + if x != nil { + return x.Health + } + return HealthStatus_HEALTH_UNKNOWN +} + +func (x *OriginInfo) GetFilesCount() uint64 { + if x != nil { + return x.FilesCount + } + return 0 +} + +func (x *OriginInfo) GetTotalSizeBytes() uint64 { + if x != nil { + return x.TotalSizeBytes + } + return 0 +} + +type OriginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + OriginId string `protobuf:"bytes,1,opt,name=origin_id,json=originId,proto3" json:"origin_id,omitempty"` + // Optional subdirectory to scope the scan (relative to origin root). + // If empty, scans the entire origin. + // Example: "Metallica - Master of Puppets (1986) [FLAC]" + Subdir *string `protobuf:"bytes,2,opt,name=subdir,proto3,oneof" json:"subdir,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OriginRequest) Reset() { + *x = OriginRequest{} + mi := &file_musicfs_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OriginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OriginRequest) ProtoMessage() {} + +func (x *OriginRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OriginRequest.ProtoReflect.Descriptor instead. +func (*OriginRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{15} +} + +func (x *OriginRequest) GetOriginId() string { + if x != nil { + return x.OriginId + } + return "" +} + +func (x *OriginRequest) GetSubdir() string { + if x != nil && x.Subdir != nil { + return *x.Subdir + } + return "" +} + +type OriginHealthResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + OriginId string `protobuf:"bytes,1,opt,name=origin_id,json=originId,proto3" json:"origin_id,omitempty"` + Status HealthStatus `protobuf:"varint,2,opt,name=status,proto3,enum=musicfs.v1.HealthStatus" json:"status,omitempty"` + Message *string `protobuf:"bytes,3,opt,name=message,proto3,oneof" json:"message,omitempty"` + LastCheckSecs uint64 `protobuf:"varint,4,opt,name=last_check_secs,json=lastCheckSecs,proto3" json:"last_check_secs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OriginHealthResponse) Reset() { + *x = OriginHealthResponse{} + mi := &file_musicfs_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OriginHealthResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OriginHealthResponse) ProtoMessage() {} + +func (x *OriginHealthResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OriginHealthResponse.ProtoReflect.Descriptor instead. +func (*OriginHealthResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{16} +} + +func (x *OriginHealthResponse) GetOriginId() string { + if x != nil { + return x.OriginId + } + return "" +} + +func (x *OriginHealthResponse) GetStatus() HealthStatus { + if x != nil { + return x.Status + } + return HealthStatus_HEALTH_UNKNOWN +} + +func (x *OriginHealthResponse) GetMessage() string { + if x != nil && x.Message != nil { + return *x.Message + } + return "" +} + +func (x *OriginHealthResponse) GetLastCheckSecs() uint64 { + if x != nil { + return x.LastCheckSecs + } + return 0 +} + +type SyncProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + Phase string `protobuf:"bytes,1,opt,name=phase,proto3" json:"phase,omitempty"` + Current uint32 `protobuf:"varint,2,opt,name=current,proto3" json:"current,omitempty"` + Total uint32 `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"` + CurrentPath string `protobuf:"bytes,4,opt,name=current_path,json=currentPath,proto3" json:"current_path,omitempty"` + BytesSynced uint64 `protobuf:"varint,5,opt,name=bytes_synced,json=bytesSynced,proto3" json:"bytes_synced,omitempty"` + NewFiles []*SyncedFile `protobuf:"bytes,6,rep,name=new_files,json=newFiles,proto3" json:"new_files,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SyncProgress) Reset() { + *x = SyncProgress{} + mi := &file_musicfs_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SyncProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncProgress) ProtoMessage() {} + +func (x *SyncProgress) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncProgress.ProtoReflect.Descriptor instead. +func (*SyncProgress) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{17} +} + +func (x *SyncProgress) GetPhase() string { + if x != nil { + return x.Phase + } + return "" +} + +func (x *SyncProgress) GetCurrent() uint32 { + if x != nil { + return x.Current + } + return 0 +} + +func (x *SyncProgress) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *SyncProgress) GetCurrentPath() string { + if x != nil { + return x.CurrentPath + } + return "" +} + +func (x *SyncProgress) GetBytesSynced() uint64 { + if x != nil { + return x.BytesSynced + } + return 0 +} + +func (x *SyncProgress) GetNewFiles() []*SyncedFile { + if x != nil { + return x.NewFiles + } + return nil +} + +type SyncedFile struct { + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + FileId int64 `protobuf:"varint,2,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + VirtualPath string `protobuf:"bytes,3,opt,name=virtual_path,json=virtualPath,proto3" json:"virtual_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SyncedFile) Reset() { + *x = SyncedFile{} + mi := &file_musicfs_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SyncedFile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncedFile) ProtoMessage() {} + +func (x *SyncedFile) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncedFile.ProtoReflect.Descriptor instead. +func (*SyncedFile) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{18} +} + +func (x *SyncedFile) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *SyncedFile) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *SyncedFile) GetVirtualPath() string { + if x != nil { + return x.VirtualPath + } + return "" +} + +type EventFilter struct { + state protoimpl.MessageState `protogen:"open.v1"` + EventTypes []string `protobuf:"bytes,1,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` + OriginId *string `protobuf:"bytes,2,opt,name=origin_id,json=originId,proto3,oneof" json:"origin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EventFilter) Reset() { + *x = EventFilter{} + mi := &file_musicfs_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EventFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventFilter) ProtoMessage() {} + +func (x *EventFilter) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventFilter.ProtoReflect.Descriptor instead. +func (*EventFilter) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{19} +} + +func (x *EventFilter) GetEventTypes() []string { + if x != nil { + return x.EventTypes + } + return nil +} + +func (x *EventFilter) GetOriginId() string { + if x != nil && x.OriginId != nil { + return *x.OriginId + } + return "" +} + +type Event struct { + state protoimpl.MessageState `protogen:"open.v1"` + EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` + TimestampMs int64 `protobuf:"varint,2,opt,name=timestamp_ms,json=timestampMs,proto3" json:"timestamp_ms,omitempty"` + OriginId *string `protobuf:"bytes,3,opt,name=origin_id,json=originId,proto3,oneof" json:"origin_id,omitempty"` + Path *string `protobuf:"bytes,4,opt,name=path,proto3,oneof" json:"path,omitempty"` + FileId *int64 `protobuf:"varint,5,opt,name=file_id,json=fileId,proto3,oneof" json:"file_id,omitempty"` + Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Event) Reset() { + *x = Event{} + mi := &file_musicfs_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{20} +} + +func (x *Event) GetEventType() string { + if x != nil { + return x.EventType + } + return "" +} + +func (x *Event) GetTimestampMs() int64 { + if x != nil { + return x.TimestampMs + } + return 0 +} + +func (x *Event) GetOriginId() string { + if x != nil && x.OriginId != nil { + return *x.OriginId + } + return "" +} + +func (x *Event) GetPath() string { + if x != nil && x.Path != nil { + return *x.Path + } + return "" +} + +func (x *Event) GetFileId() int64 { + if x != nil && x.FileId != nil { + return *x.FileId + } + return 0 +} + +func (x *Event) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +type GetMetadataRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + VirtualPath string `protobuf:"bytes,1,opt,name=virtual_path,json=virtualPath,proto3" json:"virtual_path,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMetadataRequest) Reset() { + *x = GetMetadataRequest{} + mi := &file_musicfs_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMetadataRequest) ProtoMessage() {} + +func (x *GetMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMetadataRequest.ProtoReflect.Descriptor instead. +func (*GetMetadataRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{21} +} + +func (x *GetMetadataRequest) GetVirtualPath() string { + if x != nil { + return x.VirtualPath + } + return "" +} + +type MetadataResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + Title *string `protobuf:"bytes,2,opt,name=title,proto3,oneof" json:"title,omitempty"` + Artist *string `protobuf:"bytes,3,opt,name=artist,proto3,oneof" json:"artist,omitempty"` + Album *string `protobuf:"bytes,4,opt,name=album,proto3,oneof" json:"album,omitempty"` + AlbumArtist *string `protobuf:"bytes,5,opt,name=album_artist,json=albumArtist,proto3,oneof" json:"album_artist,omitempty"` + Year *uint32 `protobuf:"varint,6,opt,name=year,proto3,oneof" json:"year,omitempty"` + Track *uint32 `protobuf:"varint,7,opt,name=track,proto3,oneof" json:"track,omitempty"` + Disc *uint32 `protobuf:"varint,8,opt,name=disc,proto3,oneof" json:"disc,omitempty"` + Genre *string `protobuf:"bytes,9,opt,name=genre,proto3,oneof" json:"genre,omitempty"` + Format *string `protobuf:"bytes,10,opt,name=format,proto3,oneof" json:"format,omitempty"` + DurationMs *uint64 `protobuf:"varint,11,opt,name=duration_ms,json=durationMs,proto3,oneof" json:"duration_ms,omitempty"` + Bitrate *uint64 `protobuf:"varint,12,opt,name=bitrate,proto3,oneof" json:"bitrate,omitempty"` + TrackTotal *uint32 `protobuf:"varint,13,opt,name=track_total,json=trackTotal,proto3,oneof" json:"track_total,omitempty"` + DiscTotal *uint32 `protobuf:"varint,14,opt,name=disc_total,json=discTotal,proto3,oneof" json:"disc_total,omitempty"` + Date *string `protobuf:"bytes,15,opt,name=date,proto3,oneof" json:"date,omitempty"` + Composer *string `protobuf:"bytes,16,opt,name=composer,proto3,oneof" json:"composer,omitempty"` + Comment *string `protobuf:"bytes,17,opt,name=comment,proto3,oneof" json:"comment,omitempty"` + Lyrics *string `protobuf:"bytes,18,opt,name=lyrics,proto3,oneof" json:"lyrics,omitempty"` + Copyright *string `protobuf:"bytes,19,opt,name=copyright,proto3,oneof" json:"copyright,omitempty"` + Compilation *bool `protobuf:"varint,20,opt,name=compilation,proto3,oneof" json:"compilation,omitempty"` + ArtistSort *string `protobuf:"bytes,21,opt,name=artist_sort,json=artistSort,proto3,oneof" json:"artist_sort,omitempty"` + AlbumArtistSort *string `protobuf:"bytes,22,opt,name=album_artist_sort,json=albumArtistSort,proto3,oneof" json:"album_artist_sort,omitempty"` + AlbumSort *string `protobuf:"bytes,23,opt,name=album_sort,json=albumSort,proto3,oneof" json:"album_sort,omitempty"` + TitleSort *string `protobuf:"bytes,24,opt,name=title_sort,json=titleSort,proto3,oneof" json:"title_sort,omitempty"` + MbRecordingId *string `protobuf:"bytes,25,opt,name=mb_recording_id,json=mbRecordingId,proto3,oneof" json:"mb_recording_id,omitempty"` + MbAlbumId *string `protobuf:"bytes,26,opt,name=mb_album_id,json=mbAlbumId,proto3,oneof" json:"mb_album_id,omitempty"` + MbArtistId *string `protobuf:"bytes,27,opt,name=mb_artist_id,json=mbArtistId,proto3,oneof" json:"mb_artist_id,omitempty"` + MbAlbumArtistId *string `protobuf:"bytes,28,opt,name=mb_album_artist_id,json=mbAlbumArtistId,proto3,oneof" json:"mb_album_artist_id,omitempty"` + MbReleaseGroupId *string `protobuf:"bytes,29,opt,name=mb_release_group_id,json=mbReleaseGroupId,proto3,oneof" json:"mb_release_group_id,omitempty"` + ReplaygainTrackGain *float32 `protobuf:"fixed32,30,opt,name=replaygain_track_gain,json=replaygainTrackGain,proto3,oneof" json:"replaygain_track_gain,omitempty"` + ReplaygainTrackPeak *float32 `protobuf:"fixed32,31,opt,name=replaygain_track_peak,json=replaygainTrackPeak,proto3,oneof" json:"replaygain_track_peak,omitempty"` + ReplaygainAlbumGain *float32 `protobuf:"fixed32,32,opt,name=replaygain_album_gain,json=replaygainAlbumGain,proto3,oneof" json:"replaygain_album_gain,omitempty"` + ReplaygainAlbumPeak *float32 `protobuf:"fixed32,33,opt,name=replaygain_album_peak,json=replaygainAlbumPeak,proto3,oneof" json:"replaygain_album_peak,omitempty"` + Channels *uint32 `protobuf:"varint,34,opt,name=channels,proto3,oneof" json:"channels,omitempty"` + BitsPerSample *uint32 `protobuf:"varint,35,opt,name=bits_per_sample,json=bitsPerSample,proto3,oneof" json:"bits_per_sample,omitempty"` + Encoder *string `protobuf:"bytes,36,opt,name=encoder,proto3,oneof" json:"encoder,omitempty"` + Label *string `protobuf:"bytes,40,opt,name=label,proto3,oneof" json:"label,omitempty"` + AlbumType *string `protobuf:"bytes,41,opt,name=album_type,json=albumType,proto3,oneof" json:"album_type,omitempty"` + CoverUrl *string `protobuf:"bytes,42,opt,name=cover_url,json=coverUrl,proto3,oneof" json:"cover_url,omitempty"` + CustomTags map[string]string `protobuf:"bytes,50,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MetadataResponse) Reset() { + *x = MetadataResponse{} + mi := &file_musicfs_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MetadataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetadataResponse) ProtoMessage() {} + +func (x *MetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetadataResponse.ProtoReflect.Descriptor instead. +func (*MetadataResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{22} +} + +func (x *MetadataResponse) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *MetadataResponse) GetTitle() string { + if x != nil && x.Title != nil { + return *x.Title + } + return "" +} + +func (x *MetadataResponse) GetArtist() string { + if x != nil && x.Artist != nil { + return *x.Artist + } + return "" +} + +func (x *MetadataResponse) GetAlbum() string { + if x != nil && x.Album != nil { + return *x.Album + } + return "" +} + +func (x *MetadataResponse) GetAlbumArtist() string { + if x != nil && x.AlbumArtist != nil { + return *x.AlbumArtist + } + return "" +} + +func (x *MetadataResponse) GetYear() uint32 { + if x != nil && x.Year != nil { + return *x.Year + } + return 0 +} + +func (x *MetadataResponse) GetTrack() uint32 { + if x != nil && x.Track != nil { + return *x.Track + } + return 0 +} + +func (x *MetadataResponse) GetDisc() uint32 { + if x != nil && x.Disc != nil { + return *x.Disc + } + return 0 +} + +func (x *MetadataResponse) GetGenre() string { + if x != nil && x.Genre != nil { + return *x.Genre + } + return "" +} + +func (x *MetadataResponse) GetFormat() string { + if x != nil && x.Format != nil { + return *x.Format + } + return "" +} + +func (x *MetadataResponse) GetDurationMs() uint64 { + if x != nil && x.DurationMs != nil { + return *x.DurationMs + } + return 0 +} + +func (x *MetadataResponse) GetBitrate() uint64 { + if x != nil && x.Bitrate != nil { + return *x.Bitrate + } + return 0 +} + +func (x *MetadataResponse) GetTrackTotal() uint32 { + if x != nil && x.TrackTotal != nil { + return *x.TrackTotal + } + return 0 +} + +func (x *MetadataResponse) GetDiscTotal() uint32 { + if x != nil && x.DiscTotal != nil { + return *x.DiscTotal + } + return 0 +} + +func (x *MetadataResponse) GetDate() string { + if x != nil && x.Date != nil { + return *x.Date + } + return "" +} + +func (x *MetadataResponse) GetComposer() string { + if x != nil && x.Composer != nil { + return *x.Composer + } + return "" +} + +func (x *MetadataResponse) GetComment() string { + if x != nil && x.Comment != nil { + return *x.Comment + } + return "" +} + +func (x *MetadataResponse) GetLyrics() string { + if x != nil && x.Lyrics != nil { + return *x.Lyrics + } + return "" +} + +func (x *MetadataResponse) GetCopyright() string { + if x != nil && x.Copyright != nil { + return *x.Copyright + } + return "" +} + +func (x *MetadataResponse) GetCompilation() bool { + if x != nil && x.Compilation != nil { + return *x.Compilation + } + return false +} + +func (x *MetadataResponse) GetArtistSort() string { + if x != nil && x.ArtistSort != nil { + return *x.ArtistSort + } + return "" +} + +func (x *MetadataResponse) GetAlbumArtistSort() string { + if x != nil && x.AlbumArtistSort != nil { + return *x.AlbumArtistSort + } + return "" +} + +func (x *MetadataResponse) GetAlbumSort() string { + if x != nil && x.AlbumSort != nil { + return *x.AlbumSort + } + return "" +} + +func (x *MetadataResponse) GetTitleSort() string { + if x != nil && x.TitleSort != nil { + return *x.TitleSort + } + return "" +} + +func (x *MetadataResponse) GetMbRecordingId() string { + if x != nil && x.MbRecordingId != nil { + return *x.MbRecordingId + } + return "" +} + +func (x *MetadataResponse) GetMbAlbumId() string { + if x != nil && x.MbAlbumId != nil { + return *x.MbAlbumId + } + return "" +} + +func (x *MetadataResponse) GetMbArtistId() string { + if x != nil && x.MbArtistId != nil { + return *x.MbArtistId + } + return "" +} + +func (x *MetadataResponse) GetMbAlbumArtistId() string { + if x != nil && x.MbAlbumArtistId != nil { + return *x.MbAlbumArtistId + } + return "" +} + +func (x *MetadataResponse) GetMbReleaseGroupId() string { + if x != nil && x.MbReleaseGroupId != nil { + return *x.MbReleaseGroupId + } + return "" +} + +func (x *MetadataResponse) GetReplaygainTrackGain() float32 { + if x != nil && x.ReplaygainTrackGain != nil { + return *x.ReplaygainTrackGain + } + return 0 +} + +func (x *MetadataResponse) GetReplaygainTrackPeak() float32 { + if x != nil && x.ReplaygainTrackPeak != nil { + return *x.ReplaygainTrackPeak + } + return 0 +} + +func (x *MetadataResponse) GetReplaygainAlbumGain() float32 { + if x != nil && x.ReplaygainAlbumGain != nil { + return *x.ReplaygainAlbumGain + } + return 0 +} + +func (x *MetadataResponse) GetReplaygainAlbumPeak() float32 { + if x != nil && x.ReplaygainAlbumPeak != nil { + return *x.ReplaygainAlbumPeak + } + return 0 +} + +func (x *MetadataResponse) GetChannels() uint32 { + if x != nil && x.Channels != nil { + return *x.Channels + } + return 0 +} + +func (x *MetadataResponse) GetBitsPerSample() uint32 { + if x != nil && x.BitsPerSample != nil { + return *x.BitsPerSample + } + return 0 +} + +func (x *MetadataResponse) GetEncoder() string { + if x != nil && x.Encoder != nil { + return *x.Encoder + } + return "" +} + +func (x *MetadataResponse) GetLabel() string { + if x != nil && x.Label != nil { + return *x.Label + } + return "" +} + +func (x *MetadataResponse) GetAlbumType() string { + if x != nil && x.AlbumType != nil { + return *x.AlbumType + } + return "" +} + +func (x *MetadataResponse) GetCoverUrl() string { + if x != nil && x.CoverUrl != nil { + return *x.CoverUrl + } + return "" +} + +func (x *MetadataResponse) GetCustomTags() map[string]string { + if x != nil { + return x.CustomTags + } + return nil +} + +type UpdateMetadataRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + Title *string `protobuf:"bytes,2,opt,name=title,proto3,oneof" json:"title,omitempty"` + Artist *string `protobuf:"bytes,3,opt,name=artist,proto3,oneof" json:"artist,omitempty"` + Album *string `protobuf:"bytes,4,opt,name=album,proto3,oneof" json:"album,omitempty"` + AlbumArtist *string `protobuf:"bytes,5,opt,name=album_artist,json=albumArtist,proto3,oneof" json:"album_artist,omitempty"` + TrackNumber *uint32 `protobuf:"varint,6,opt,name=track_number,json=trackNumber,proto3,oneof" json:"track_number,omitempty"` + DiscNumber *uint32 `protobuf:"varint,7,opt,name=disc_number,json=discNumber,proto3,oneof" json:"disc_number,omitempty"` + Date *string `protobuf:"bytes,8,opt,name=date,proto3,oneof" json:"date,omitempty"` + Genre *string `protobuf:"bytes,9,opt,name=genre,proto3,oneof" json:"genre,omitempty"` + Composer *string `protobuf:"bytes,10,opt,name=composer,proto3,oneof" json:"composer,omitempty"` + Comment *string `protobuf:"bytes,11,opt,name=comment,proto3,oneof" json:"comment,omitempty"` + Lyrics *string `protobuf:"bytes,12,opt,name=lyrics,proto3,oneof" json:"lyrics,omitempty"` + Copyright *string `protobuf:"bytes,13,opt,name=copyright,proto3,oneof" json:"copyright,omitempty"` + Compilation *bool `protobuf:"varint,14,opt,name=compilation,proto3,oneof" json:"compilation,omitempty"` + ArtistSort *string `protobuf:"bytes,15,opt,name=artist_sort,json=artistSort,proto3,oneof" json:"artist_sort,omitempty"` + AlbumArtistSort *string `protobuf:"bytes,16,opt,name=album_artist_sort,json=albumArtistSort,proto3,oneof" json:"album_artist_sort,omitempty"` + AlbumSort *string `protobuf:"bytes,17,opt,name=album_sort,json=albumSort,proto3,oneof" json:"album_sort,omitempty"` + TitleSort *string `protobuf:"bytes,18,opt,name=title_sort,json=titleSort,proto3,oneof" json:"title_sort,omitempty"` + MbRecordingId *string `protobuf:"bytes,20,opt,name=mb_recording_id,json=mbRecordingId,proto3,oneof" json:"mb_recording_id,omitempty"` + MbAlbumId *string `protobuf:"bytes,21,opt,name=mb_album_id,json=mbAlbumId,proto3,oneof" json:"mb_album_id,omitempty"` + MbArtistId *string `protobuf:"bytes,22,opt,name=mb_artist_id,json=mbArtistId,proto3,oneof" json:"mb_artist_id,omitempty"` + ReplaygainTrackGain *float32 `protobuf:"fixed32,30,opt,name=replaygain_track_gain,json=replaygainTrackGain,proto3,oneof" json:"replaygain_track_gain,omitempty"` + ReplaygainTrackPeak *float32 `protobuf:"fixed32,31,opt,name=replaygain_track_peak,json=replaygainTrackPeak,proto3,oneof" json:"replaygain_track_peak,omitempty"` + ReplaygainAlbumGain *float32 `protobuf:"fixed32,32,opt,name=replaygain_album_gain,json=replaygainAlbumGain,proto3,oneof" json:"replaygain_album_gain,omitempty"` + ReplaygainAlbumPeak *float32 `protobuf:"fixed32,33,opt,name=replaygain_album_peak,json=replaygainAlbumPeak,proto3,oneof" json:"replaygain_album_peak,omitempty"` + Label *string `protobuf:"bytes,40,opt,name=label,proto3,oneof" json:"label,omitempty"` + AlbumType *string `protobuf:"bytes,41,opt,name=album_type,json=albumType,proto3,oneof" json:"album_type,omitempty"` + CoverUrl *string `protobuf:"bytes,42,opt,name=cover_url,json=coverUrl,proto3,oneof" json:"cover_url,omitempty"` + CustomTags map[string]string `protobuf:"bytes,50,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateMetadataRequest) Reset() { + *x = UpdateMetadataRequest{} + mi := &file_musicfs_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMetadataRequest) ProtoMessage() {} + +func (x *UpdateMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMetadataRequest.ProtoReflect.Descriptor instead. +func (*UpdateMetadataRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{23} +} + +func (x *UpdateMetadataRequest) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *UpdateMetadataRequest) GetTitle() string { + if x != nil && x.Title != nil { + return *x.Title + } + return "" +} + +func (x *UpdateMetadataRequest) GetArtist() string { + if x != nil && x.Artist != nil { + return *x.Artist + } + return "" +} + +func (x *UpdateMetadataRequest) GetAlbum() string { + if x != nil && x.Album != nil { + return *x.Album + } + return "" +} + +func (x *UpdateMetadataRequest) GetAlbumArtist() string { + if x != nil && x.AlbumArtist != nil { + return *x.AlbumArtist + } + return "" +} + +func (x *UpdateMetadataRequest) GetTrackNumber() uint32 { + if x != nil && x.TrackNumber != nil { + return *x.TrackNumber + } + return 0 +} + +func (x *UpdateMetadataRequest) GetDiscNumber() uint32 { + if x != nil && x.DiscNumber != nil { + return *x.DiscNumber + } + return 0 +} + +func (x *UpdateMetadataRequest) GetDate() string { + if x != nil && x.Date != nil { + return *x.Date + } + return "" +} + +func (x *UpdateMetadataRequest) GetGenre() string { + if x != nil && x.Genre != nil { + return *x.Genre + } + return "" +} + +func (x *UpdateMetadataRequest) GetComposer() string { + if x != nil && x.Composer != nil { + return *x.Composer + } + return "" +} + +func (x *UpdateMetadataRequest) GetComment() string { + if x != nil && x.Comment != nil { + return *x.Comment + } + return "" +} + +func (x *UpdateMetadataRequest) GetLyrics() string { + if x != nil && x.Lyrics != nil { + return *x.Lyrics + } + return "" +} + +func (x *UpdateMetadataRequest) GetCopyright() string { + if x != nil && x.Copyright != nil { + return *x.Copyright + } + return "" +} + +func (x *UpdateMetadataRequest) GetCompilation() bool { + if x != nil && x.Compilation != nil { + return *x.Compilation + } + return false +} + +func (x *UpdateMetadataRequest) GetArtistSort() string { + if x != nil && x.ArtistSort != nil { + return *x.ArtistSort + } + return "" +} + +func (x *UpdateMetadataRequest) GetAlbumArtistSort() string { + if x != nil && x.AlbumArtistSort != nil { + return *x.AlbumArtistSort + } + return "" +} + +func (x *UpdateMetadataRequest) GetAlbumSort() string { + if x != nil && x.AlbumSort != nil { + return *x.AlbumSort + } + return "" +} + +func (x *UpdateMetadataRequest) GetTitleSort() string { + if x != nil && x.TitleSort != nil { + return *x.TitleSort + } + return "" +} + +func (x *UpdateMetadataRequest) GetMbRecordingId() string { + if x != nil && x.MbRecordingId != nil { + return *x.MbRecordingId + } + return "" +} + +func (x *UpdateMetadataRequest) GetMbAlbumId() string { + if x != nil && x.MbAlbumId != nil { + return *x.MbAlbumId + } + return "" +} + +func (x *UpdateMetadataRequest) GetMbArtistId() string { + if x != nil && x.MbArtistId != nil { + return *x.MbArtistId + } + return "" +} + +func (x *UpdateMetadataRequest) GetReplaygainTrackGain() float32 { + if x != nil && x.ReplaygainTrackGain != nil { + return *x.ReplaygainTrackGain + } + return 0 +} + +func (x *UpdateMetadataRequest) GetReplaygainTrackPeak() float32 { + if x != nil && x.ReplaygainTrackPeak != nil { + return *x.ReplaygainTrackPeak + } + return 0 +} + +func (x *UpdateMetadataRequest) GetReplaygainAlbumGain() float32 { + if x != nil && x.ReplaygainAlbumGain != nil { + return *x.ReplaygainAlbumGain + } + return 0 +} + +func (x *UpdateMetadataRequest) GetReplaygainAlbumPeak() float32 { + if x != nil && x.ReplaygainAlbumPeak != nil { + return *x.ReplaygainAlbumPeak + } + return 0 +} + +func (x *UpdateMetadataRequest) GetLabel() string { + if x != nil && x.Label != nil { + return *x.Label + } + return "" +} + +func (x *UpdateMetadataRequest) GetAlbumType() string { + if x != nil && x.AlbumType != nil { + return *x.AlbumType + } + return "" +} + +func (x *UpdateMetadataRequest) GetCoverUrl() string { + if x != nil && x.CoverUrl != nil { + return *x.CoverUrl + } + return "" +} + +func (x *UpdateMetadataRequest) GetCustomTags() map[string]string { + if x != nil { + return x.CustomTags + } + return nil +} + +type UpdateMetadataResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"` + ErrorMessage *string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateMetadataResponse) Reset() { + *x = UpdateMetadataResponse{} + mi := &file_musicfs_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateMetadataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateMetadataResponse) ProtoMessage() {} + +func (x *UpdateMetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateMetadataResponse.ProtoReflect.Descriptor instead. +func (*UpdateMetadataResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{24} +} + +func (x *UpdateMetadataResponse) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *UpdateMetadataResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *UpdateMetadataResponse) GetErrorMessage() string { + if x != nil && x.ErrorMessage != nil { + return *x.ErrorMessage + } + return "" +} + +type ClearOverlayRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClearOverlayRequest) Reset() { + *x = ClearOverlayRequest{} + mi := &file_musicfs_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClearOverlayRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClearOverlayRequest) ProtoMessage() {} + +func (x *ClearOverlayRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClearOverlayRequest.ProtoReflect.Descriptor instead. +func (*ClearOverlayRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{25} +} + +func (x *ClearOverlayRequest) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +type ClearOverlayResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"` + ErrorMessage *string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClearOverlayResponse) Reset() { + *x = ClearOverlayResponse{} + mi := &file_musicfs_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClearOverlayResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClearOverlayResponse) ProtoMessage() {} + +func (x *ClearOverlayResponse) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClearOverlayResponse.ProtoReflect.Descriptor instead. +func (*ClearOverlayResponse) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{26} +} + +func (x *ClearOverlayResponse) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *ClearOverlayResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *ClearOverlayResponse) GetErrorMessage() string { + if x != nil && x.ErrorMessage != nil { + return *x.ErrorMessage + } + return "" +} + +type BatchUpdateRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*BatchUpdateItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BatchUpdateRequest) Reset() { + *x = BatchUpdateRequest{} + mi := &file_musicfs_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BatchUpdateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchUpdateRequest) ProtoMessage() {} + +func (x *BatchUpdateRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchUpdateRequest.ProtoReflect.Descriptor instead. +func (*BatchUpdateRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{27} +} + +func (x *BatchUpdateRequest) GetItems() []*BatchUpdateItem { + if x != nil { + return x.Items + } + return nil +} + +type BatchUpdateItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + FileId int64 `protobuf:"varint,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"` + Metadata *UpdateMetadataRequest `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BatchUpdateItem) Reset() { + *x = BatchUpdateItem{} + mi := &file_musicfs_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BatchUpdateItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchUpdateItem) ProtoMessage() {} + +func (x *BatchUpdateItem) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchUpdateItem.ProtoReflect.Descriptor instead. +func (*BatchUpdateItem) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{28} +} + +func (x *BatchUpdateItem) GetFileId() int64 { + if x != nil { + return x.FileId + } + return 0 +} + +func (x *BatchUpdateItem) GetMetadata() *UpdateMetadataRequest { + if x != nil { + return x.Metadata + } + return nil +} + +type BatchUpdateProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + Completed uint32 `protobuf:"varint,1,opt,name=completed,proto3" json:"completed,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + CurrentFileId *int64 `protobuf:"varint,3,opt,name=current_file_id,json=currentFileId,proto3,oneof" json:"current_file_id,omitempty"` + ErrorMessage *string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BatchUpdateProgress) Reset() { + *x = BatchUpdateProgress{} + mi := &file_musicfs_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BatchUpdateProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BatchUpdateProgress) ProtoMessage() {} + +func (x *BatchUpdateProgress) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BatchUpdateProgress.ProtoReflect.Descriptor instead. +func (*BatchUpdateProgress) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{29} +} + +func (x *BatchUpdateProgress) GetCompleted() uint32 { + if x != nil { + return x.Completed + } + return 0 +} + +func (x *BatchUpdateProgress) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *BatchUpdateProgress) GetCurrentFileId() int64 { + if x != nil && x.CurrentFileId != nil { + return *x.CurrentFileId + } + return 0 +} + +func (x *BatchUpdateProgress) GetErrorMessage() string { + if x != nil && x.ErrorMessage != nil { + return *x.ErrorMessage + } + return "" +} + +type ImportMetadataRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SourcePath string `protobuf:"bytes,1,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"` + Format *string `protobuf:"bytes,2,opt,name=format,proto3,oneof" json:"format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImportMetadataRequest) Reset() { + *x = ImportMetadataRequest{} + mi := &file_musicfs_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImportMetadataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportMetadataRequest) ProtoMessage() {} + +func (x *ImportMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportMetadataRequest.ProtoReflect.Descriptor instead. +func (*ImportMetadataRequest) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{30} +} + +func (x *ImportMetadataRequest) GetSourcePath() string { + if x != nil { + return x.SourcePath + } + return "" +} + +func (x *ImportMetadataRequest) GetFormat() string { + if x != nil && x.Format != nil { + return *x.Format + } + return "" +} + +type ImportProgress struct { + state protoimpl.MessageState `protogen:"open.v1"` + Imported uint32 `protobuf:"varint,1,opt,name=imported,proto3" json:"imported,omitempty"` + Total uint32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + CurrentFile *string `protobuf:"bytes,3,opt,name=current_file,json=currentFile,proto3,oneof" json:"current_file,omitempty"` + ErrorMessage *string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImportProgress) Reset() { + *x = ImportProgress{} + mi := &file_musicfs_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImportProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportProgress) ProtoMessage() {} + +func (x *ImportProgress) ProtoReflect() protoreflect.Message { + mi := &file_musicfs_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportProgress.ProtoReflect.Descriptor instead. +func (*ImportProgress) Descriptor() ([]byte, []int) { + return file_musicfs_proto_rawDescGZIP(), []int{31} +} + +func (x *ImportProgress) GetImported() uint32 { + if x != nil { + return x.Imported + } + return 0 +} + +func (x *ImportProgress) GetTotal() uint32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *ImportProgress) GetCurrentFile() string { + if x != nil && x.CurrentFile != nil { + return *x.CurrentFile + } + return "" +} + +func (x *ImportProgress) GetErrorMessage() string { + if x != nil && x.ErrorMessage != nil { + return *x.ErrorMessage + } + return "" +} + +var File_musicfs_proto protoreflect.FileDescriptor + +const file_musicfs_proto_rawDesc = "" + + "\n" + + "\rmusicfs.proto\x12\n" + + "musicfs.v1\"\a\n" + + "\x05Empty\"\xa2\x01\n" + + "\rSearchRequest\x12\x14\n" + + "\x05query\x18\x01 \x01(\tR\x05query\x12\x19\n" + + "\x05limit\x18\x02 \x01(\rH\x00R\x05limit\x88\x01\x01\x12\x1b\n" + + "\x06offset\x18\x03 \x01(\rH\x01R\x06offset\x88\x01\x01\x12 \n" + + "\torigin_id\x18\x04 \x01(\tH\x02R\boriginId\x88\x01\x01B\b\n" + + "\x06_limitB\t\n" + + "\a_offsetB\f\n" + + "\n" + + "_origin_id\"\x8d\x01\n" + + "\x0eSearchResponse\x122\n" + + "\aresults\x18\x01 \x03(\v2\x18.musicfs.v1.SearchResultR\aresults\x12#\n" + + "\rtotal_matches\x18\x02 \x01(\x04R\ftotalMatches\x12\"\n" + + "\rquery_time_ms\x18\x03 \x01(\rR\vqueryTimeMs\"\xdb\x02\n" + + "\fSearchResult\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12!\n" + + "\fvirtual_path\x18\x02 \x01(\tR\vvirtualPath\x12\x1b\n" + + "\x06artist\x18\x03 \x01(\tH\x00R\x06artist\x88\x01\x01\x12\x19\n" + + "\x05album\x18\x04 \x01(\tH\x01R\x05album\x88\x01\x01\x12\x19\n" + + "\x05title\x18\x05 \x01(\tH\x02R\x05title\x88\x01\x01\x12\x14\n" + + "\x05score\x18\x06 \x01(\x02R\x05score\x12H\n" + + "\n" + + "highlights\x18\a \x03(\v2(.musicfs.v1.SearchResult.HighlightsEntryR\n" + + "highlights\x1a=\n" + + "\x0fHighlightsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\t\n" + + "\a_artistB\b\n" + + "\x06_albumB\b\n" + + "\x06_title\"\xef\x02\n" + + "\x0eStatusResponse\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\x12\x1f\n" + + "\vuptime_secs\x18\x02 \x01(\x04R\n" + + "uptimeSecs\x12\x1f\n" + + "\vmount_point\x18\x03 \x01(\tR\n" + + "mountPoint\x12,\n" + + "\x05state\x18\x04 \x01(\x0e2\x16.musicfs.v1.MountStateR\x05state\x12*\n" + + "\x11open_file_handles\x18\x05 \x01(\rR\x0fopenFileHandles\x12$\n" + + "\x0efuse_ops_total\x18\x06 \x01(\x04R\ffuseOpsTotal\x12#\n" + + "\rfiles_indexed\x18\a \x01(\x04R\ffilesIndexed\x12(\n" + + "\x10cache_size_bytes\x18\b \x01(\x04R\x0ecacheSizeBytes\x122\n" + + "\aorigins\x18\t \x03(\v2\x18.musicfs.v1.OriginStatusR\aorigins\"\x92\x01\n" + + "\fOriginStatus\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vorigin_type\x18\x02 \x01(\tR\n" + + "originType\x120\n" + + "\x06health\x18\x03 \x01(\x0e2\x18.musicfs.v1.HealthStatusR\x06health\x12\x1f\n" + + "\vfiles_count\x18\x04 \x01(\x04R\n" + + "filesCount\"P\n" + + "\x0fShutdownRequest\x12\x1a\n" + + "\bgraceful\x18\x01 \x01(\bR\bgraceful\x12!\n" + + "\ftimeout_secs\x18\x02 \x01(\rR\vtimeoutSecs\"p\n" + + "\tTierStats\x12\x18\n" + + "\aentries\x18\x01 \x01(\x04R\aentries\x12\x1d\n" + + "\n" + + "size_bytes\x18\x02 \x01(\x04R\tsizeBytes\x12\x12\n" + + "\x04hits\x18\x03 \x01(\x04R\x04hits\x12\x16\n" + + "\x06misses\x18\x04 \x01(\x04R\x06misses\"\xbc\x04\n" + + "\n" + + "CacheStats\x12(\n" + + "\x10total_size_bytes\x18\x01 \x01(\x04R\x0etotalSizeBytes\x12&\n" + + "\x0fused_size_bytes\x18\x02 \x01(\x04R\rusedSizeBytes\x12(\n" + + "\x10size_limit_bytes\x18\x03 \x01(\x04R\x0esizeLimitBytes\x12\x1f\n" + + "\vchunk_count\x18\x04 \x01(\x04R\n" + + "chunkCount\x12#\n" + + "\rchunks_unique\x18\x05 \x01(\x04R\fchunksUnique\x12\x1f\n" + + "\vdedup_ratio\x18\x06 \x01(\x01R\n" + + "dedupRatio\x12\x1b\n" + + "\thit_count\x18\a \x01(\x04R\bhitCount\x12\x1d\n" + + "\n" + + "miss_count\x18\b \x01(\x04R\tmissCount\x12\x1b\n" + + "\thit_ratio\x18\t \x01(\x01R\bhitRatio\x12)\n" + + "\x10metadata_entries\x18\n" + + " \x01(\x04R\x0fmetadataEntries\x12%\n" + + "\x0emetadata_bytes\x18\v \x01(\x04R\rmetadataBytes\x126\n" + + "\vl1_metadata\x18\f \x01(\v2\x15.musicfs.v1.TierStatsR\n" + + "l1Metadata\x124\n" + + "\n" + + "l2_headers\x18\r \x01(\v2\x15.musicfs.v1.TierStatsR\tl2Headers\x122\n" + + "\tl3_chunks\x18\x0e \x01(\v2\x15.musicfs.v1.TierStatsR\bl3Chunks\"\x8d\x01\n" + + "\x11ClearCacheRequest\x12 \n" + + "\torigin_id\x18\x01 \x01(\tH\x00R\boriginId\x88\x01\x01\x12%\n" + + "\x0eclear_metadata\x18\x02 \x01(\bR\rclearMetadata\x12!\n" + + "\fclear_chunks\x18\x03 \x01(\bR\vclearChunksB\f\n" + + "\n" + + "_origin_id\"`\n" + + "\x12ClearCacheResponse\x12#\n" + + "\rbytes_cleared\x18\x01 \x01(\x04R\fbytesCleared\x12%\n" + + "\x0echunks_cleared\x18\x02 \x01(\x04R\rchunksCleared\"W\n" + + "\x0fPrefetchRequest\x12\x14\n" + + "\x05paths\x18\x01 \x03(\tR\x05paths\x12 \n" + + "\torigin_id\x18\x02 \x01(\tH\x00R\boriginId\x88\x01\x01B\f\n" + + "\n" + + "_origin_id\"\x8e\x01\n" + + "\x10PrefetchProgress\x12!\n" + + "\fcurrent_path\x18\x01 \x01(\tR\vcurrentPath\x12\x1c\n" + + "\tcompleted\x18\x02 \x01(\rR\tcompleted\x12\x14\n" + + "\x05total\x18\x03 \x01(\rR\x05total\x12#\n" + + "\rbytes_fetched\x18\x04 \x01(\x04R\fbytesFetched\"C\n" + + "\x0fOriginsResponse\x120\n" + + "\aorigins\x18\x01 \x03(\v2\x16.musicfs.v1.OriginInfoR\aorigins\"\xfa\x01\n" + + "\n" + + "OriginInfo\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\vorigin_type\x18\x02 \x01(\tR\n" + + "originType\x12!\n" + + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12\x1b\n" + + "\troot_path\x18\x04 \x01(\tR\brootPath\x120\n" + + "\x06health\x18\x05 \x01(\x0e2\x18.musicfs.v1.HealthStatusR\x06health\x12\x1f\n" + + "\vfiles_count\x18\x06 \x01(\x04R\n" + + "filesCount\x12(\n" + + "\x10total_size_bytes\x18\a \x01(\x04R\x0etotalSizeBytes\"T\n" + + "\rOriginRequest\x12\x1b\n" + + "\torigin_id\x18\x01 \x01(\tR\boriginId\x12\x1b\n" + + "\x06subdir\x18\x02 \x01(\tH\x00R\x06subdir\x88\x01\x01B\t\n" + + "\a_subdir\"\xb8\x01\n" + + "\x14OriginHealthResponse\x12\x1b\n" + + "\torigin_id\x18\x01 \x01(\tR\boriginId\x120\n" + + "\x06status\x18\x02 \x01(\x0e2\x18.musicfs.v1.HealthStatusR\x06status\x12\x1d\n" + + "\amessage\x18\x03 \x01(\tH\x00R\amessage\x88\x01\x01\x12&\n" + + "\x0flast_check_secs\x18\x04 \x01(\x04R\rlastCheckSecsB\n" + + "\n" + + "\b_message\"\xcf\x01\n" + + "\fSyncProgress\x12\x14\n" + + "\x05phase\x18\x01 \x01(\tR\x05phase\x12\x18\n" + + "\acurrent\x18\x02 \x01(\rR\acurrent\x12\x14\n" + + "\x05total\x18\x03 \x01(\rR\x05total\x12!\n" + + "\fcurrent_path\x18\x04 \x01(\tR\vcurrentPath\x12!\n" + + "\fbytes_synced\x18\x05 \x01(\x04R\vbytesSynced\x123\n" + + "\tnew_files\x18\x06 \x03(\v2\x16.musicfs.v1.SyncedFileR\bnewFiles\"\\\n" + + "\n" + + "SyncedFile\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\x12\x17\n" + + "\afile_id\x18\x02 \x01(\x03R\x06fileId\x12!\n" + + "\fvirtual_path\x18\x03 \x01(\tR\vvirtualPath\"^\n" + + "\vEventFilter\x12\x1f\n" + + "\vevent_types\x18\x01 \x03(\tR\n" + + "eventTypes\x12 \n" + + "\torigin_id\x18\x02 \x01(\tH\x00R\boriginId\x88\x01\x01B\f\n" + + "\n" + + "_origin_id\"\xbf\x02\n" + + "\x05Event\x12\x1d\n" + + "\n" + + "event_type\x18\x01 \x01(\tR\teventType\x12!\n" + + "\ftimestamp_ms\x18\x02 \x01(\x03R\vtimestampMs\x12 \n" + + "\torigin_id\x18\x03 \x01(\tH\x00R\boriginId\x88\x01\x01\x12\x17\n" + + "\x04path\x18\x04 \x01(\tH\x01R\x04path\x88\x01\x01\x12\x1c\n" + + "\afile_id\x18\x05 \x01(\x03H\x02R\x06fileId\x88\x01\x01\x12;\n" + + "\bmetadata\x18\x06 \x03(\v2\x1f.musicfs.v1.Event.MetadataEntryR\bmetadata\x1a;\n" + + "\rMetadataEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\f\n" + + "\n" + + "_origin_idB\a\n" + + "\x05_pathB\n" + + "\n" + + "\b_file_id\"7\n" + + "\x12GetMetadataRequest\x12!\n" + + "\fvirtual_path\x18\x01 \x01(\tR\vvirtualPath\"\x83\x11\n" + + "\x10MetadataResponse\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12\x19\n" + + "\x05title\x18\x02 \x01(\tH\x00R\x05title\x88\x01\x01\x12\x1b\n" + + "\x06artist\x18\x03 \x01(\tH\x01R\x06artist\x88\x01\x01\x12\x19\n" + + "\x05album\x18\x04 \x01(\tH\x02R\x05album\x88\x01\x01\x12&\n" + + "\falbum_artist\x18\x05 \x01(\tH\x03R\valbumArtist\x88\x01\x01\x12\x17\n" + + "\x04year\x18\x06 \x01(\rH\x04R\x04year\x88\x01\x01\x12\x19\n" + + "\x05track\x18\a \x01(\rH\x05R\x05track\x88\x01\x01\x12\x17\n" + + "\x04disc\x18\b \x01(\rH\x06R\x04disc\x88\x01\x01\x12\x19\n" + + "\x05genre\x18\t \x01(\tH\aR\x05genre\x88\x01\x01\x12\x1b\n" + + "\x06format\x18\n" + + " \x01(\tH\bR\x06format\x88\x01\x01\x12$\n" + + "\vduration_ms\x18\v \x01(\x04H\tR\n" + + "durationMs\x88\x01\x01\x12\x1d\n" + + "\abitrate\x18\f \x01(\x04H\n" + + "R\abitrate\x88\x01\x01\x12$\n" + + "\vtrack_total\x18\r \x01(\rH\vR\n" + + "trackTotal\x88\x01\x01\x12\"\n" + + "\n" + + "disc_total\x18\x0e \x01(\rH\fR\tdiscTotal\x88\x01\x01\x12\x17\n" + + "\x04date\x18\x0f \x01(\tH\rR\x04date\x88\x01\x01\x12\x1f\n" + + "\bcomposer\x18\x10 \x01(\tH\x0eR\bcomposer\x88\x01\x01\x12\x1d\n" + + "\acomment\x18\x11 \x01(\tH\x0fR\acomment\x88\x01\x01\x12\x1b\n" + + "\x06lyrics\x18\x12 \x01(\tH\x10R\x06lyrics\x88\x01\x01\x12!\n" + + "\tcopyright\x18\x13 \x01(\tH\x11R\tcopyright\x88\x01\x01\x12%\n" + + "\vcompilation\x18\x14 \x01(\bH\x12R\vcompilation\x88\x01\x01\x12$\n" + + "\vartist_sort\x18\x15 \x01(\tH\x13R\n" + + "artistSort\x88\x01\x01\x12/\n" + + "\x11album_artist_sort\x18\x16 \x01(\tH\x14R\x0falbumArtistSort\x88\x01\x01\x12\"\n" + + "\n" + + "album_sort\x18\x17 \x01(\tH\x15R\talbumSort\x88\x01\x01\x12\"\n" + + "\n" + + "title_sort\x18\x18 \x01(\tH\x16R\ttitleSort\x88\x01\x01\x12+\n" + + "\x0fmb_recording_id\x18\x19 \x01(\tH\x17R\rmbRecordingId\x88\x01\x01\x12#\n" + + "\vmb_album_id\x18\x1a \x01(\tH\x18R\tmbAlbumId\x88\x01\x01\x12%\n" + + "\fmb_artist_id\x18\x1b \x01(\tH\x19R\n" + + "mbArtistId\x88\x01\x01\x120\n" + + "\x12mb_album_artist_id\x18\x1c \x01(\tH\x1aR\x0fmbAlbumArtistId\x88\x01\x01\x122\n" + + "\x13mb_release_group_id\x18\x1d \x01(\tH\x1bR\x10mbReleaseGroupId\x88\x01\x01\x127\n" + + "\x15replaygain_track_gain\x18\x1e \x01(\x02H\x1cR\x13replaygainTrackGain\x88\x01\x01\x127\n" + + "\x15replaygain_track_peak\x18\x1f \x01(\x02H\x1dR\x13replaygainTrackPeak\x88\x01\x01\x127\n" + + "\x15replaygain_album_gain\x18 \x01(\x02H\x1eR\x13replaygainAlbumGain\x88\x01\x01\x127\n" + + "\x15replaygain_album_peak\x18! \x01(\x02H\x1fR\x13replaygainAlbumPeak\x88\x01\x01\x12\x1f\n" + + "\bchannels\x18\" \x01(\rH R\bchannels\x88\x01\x01\x12+\n" + + "\x0fbits_per_sample\x18# \x01(\rH!R\rbitsPerSample\x88\x01\x01\x12\x1d\n" + + "\aencoder\x18$ \x01(\tH\"R\aencoder\x88\x01\x01\x12\x19\n" + + "\x05label\x18( \x01(\tH#R\x05label\x88\x01\x01\x12\"\n" + + "\n" + + "album_type\x18) \x01(\tH$R\talbumType\x88\x01\x01\x12 \n" + + "\tcover_url\x18* \x01(\tH%R\bcoverUrl\x88\x01\x01\x12M\n" + + "\vcustom_tags\x182 \x03(\v2,.musicfs.v1.MetadataResponse.CustomTagsEntryR\n" + + "customTags\x1a=\n" + + "\x0fCustomTagsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\b\n" + + "\x06_titleB\t\n" + + "\a_artistB\b\n" + + "\x06_albumB\x0f\n" + + "\r_album_artistB\a\n" + + "\x05_yearB\b\n" + + "\x06_trackB\a\n" + + "\x05_discB\b\n" + + "\x06_genreB\t\n" + + "\a_formatB\x0e\n" + + "\f_duration_msB\n" + + "\n" + + "\b_bitrateB\x0e\n" + + "\f_track_totalB\r\n" + + "\v_disc_totalB\a\n" + + "\x05_dateB\v\n" + + "\t_composerB\n" + + "\n" + + "\b_commentB\t\n" + + "\a_lyricsB\f\n" + + "\n" + + "_copyrightB\x0e\n" + + "\f_compilationB\x0e\n" + + "\f_artist_sortB\x14\n" + + "\x12_album_artist_sortB\r\n" + + "\v_album_sortB\r\n" + + "\v_title_sortB\x12\n" + + "\x10_mb_recording_idB\x0e\n" + + "\f_mb_album_idB\x0f\n" + + "\r_mb_artist_idB\x15\n" + + "\x13_mb_album_artist_idB\x16\n" + + "\x14_mb_release_group_idB\x18\n" + + "\x16_replaygain_track_gainB\x18\n" + + "\x16_replaygain_track_peakB\x18\n" + + "\x16_replaygain_album_gainB\x18\n" + + "\x16_replaygain_album_peakB\v\n" + + "\t_channelsB\x12\n" + + "\x10_bits_per_sampleB\n" + + "\n" + + "\b_encoderB\b\n" + + "\x06_labelB\r\n" + + "\v_album_typeB\f\n" + + "\n" + + "_cover_url\"\xf2\f\n" + + "\x15UpdateMetadataRequest\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12\x19\n" + + "\x05title\x18\x02 \x01(\tH\x00R\x05title\x88\x01\x01\x12\x1b\n" + + "\x06artist\x18\x03 \x01(\tH\x01R\x06artist\x88\x01\x01\x12\x19\n" + + "\x05album\x18\x04 \x01(\tH\x02R\x05album\x88\x01\x01\x12&\n" + + "\falbum_artist\x18\x05 \x01(\tH\x03R\valbumArtist\x88\x01\x01\x12&\n" + + "\ftrack_number\x18\x06 \x01(\rH\x04R\vtrackNumber\x88\x01\x01\x12$\n" + + "\vdisc_number\x18\a \x01(\rH\x05R\n" + + "discNumber\x88\x01\x01\x12\x17\n" + + "\x04date\x18\b \x01(\tH\x06R\x04date\x88\x01\x01\x12\x19\n" + + "\x05genre\x18\t \x01(\tH\aR\x05genre\x88\x01\x01\x12\x1f\n" + + "\bcomposer\x18\n" + + " \x01(\tH\bR\bcomposer\x88\x01\x01\x12\x1d\n" + + "\acomment\x18\v \x01(\tH\tR\acomment\x88\x01\x01\x12\x1b\n" + + "\x06lyrics\x18\f \x01(\tH\n" + + "R\x06lyrics\x88\x01\x01\x12!\n" + + "\tcopyright\x18\r \x01(\tH\vR\tcopyright\x88\x01\x01\x12%\n" + + "\vcompilation\x18\x0e \x01(\bH\fR\vcompilation\x88\x01\x01\x12$\n" + + "\vartist_sort\x18\x0f \x01(\tH\rR\n" + + "artistSort\x88\x01\x01\x12/\n" + + "\x11album_artist_sort\x18\x10 \x01(\tH\x0eR\x0falbumArtistSort\x88\x01\x01\x12\"\n" + + "\n" + + "album_sort\x18\x11 \x01(\tH\x0fR\talbumSort\x88\x01\x01\x12\"\n" + + "\n" + + "title_sort\x18\x12 \x01(\tH\x10R\ttitleSort\x88\x01\x01\x12+\n" + + "\x0fmb_recording_id\x18\x14 \x01(\tH\x11R\rmbRecordingId\x88\x01\x01\x12#\n" + + "\vmb_album_id\x18\x15 \x01(\tH\x12R\tmbAlbumId\x88\x01\x01\x12%\n" + + "\fmb_artist_id\x18\x16 \x01(\tH\x13R\n" + + "mbArtistId\x88\x01\x01\x127\n" + + "\x15replaygain_track_gain\x18\x1e \x01(\x02H\x14R\x13replaygainTrackGain\x88\x01\x01\x127\n" + + "\x15replaygain_track_peak\x18\x1f \x01(\x02H\x15R\x13replaygainTrackPeak\x88\x01\x01\x127\n" + + "\x15replaygain_album_gain\x18 \x01(\x02H\x16R\x13replaygainAlbumGain\x88\x01\x01\x127\n" + + "\x15replaygain_album_peak\x18! \x01(\x02H\x17R\x13replaygainAlbumPeak\x88\x01\x01\x12\x19\n" + + "\x05label\x18( \x01(\tH\x18R\x05label\x88\x01\x01\x12\"\n" + + "\n" + + "album_type\x18) \x01(\tH\x19R\talbumType\x88\x01\x01\x12 \n" + + "\tcover_url\x18* \x01(\tH\x1aR\bcoverUrl\x88\x01\x01\x12R\n" + + "\vcustom_tags\x182 \x03(\v21.musicfs.v1.UpdateMetadataRequest.CustomTagsEntryR\n" + + "customTags\x1a=\n" + + "\x0fCustomTagsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\b\n" + + "\x06_titleB\t\n" + + "\a_artistB\b\n" + + "\x06_albumB\x0f\n" + + "\r_album_artistB\x0f\n" + + "\r_track_numberB\x0e\n" + + "\f_disc_numberB\a\n" + + "\x05_dateB\b\n" + + "\x06_genreB\v\n" + + "\t_composerB\n" + + "\n" + + "\b_commentB\t\n" + + "\a_lyricsB\f\n" + + "\n" + + "_copyrightB\x0e\n" + + "\f_compilationB\x0e\n" + + "\f_artist_sortB\x14\n" + + "\x12_album_artist_sortB\r\n" + + "\v_album_sortB\r\n" + + "\v_title_sortB\x12\n" + + "\x10_mb_recording_idB\x0e\n" + + "\f_mb_album_idB\x0f\n" + + "\r_mb_artist_idB\x18\n" + + "\x16_replaygain_track_gainB\x18\n" + + "\x16_replaygain_track_peakB\x18\n" + + "\x16_replaygain_album_gainB\x18\n" + + "\x16_replaygain_album_peakB\b\n" + + "\x06_labelB\r\n" + + "\v_album_typeB\f\n" + + "\n" + + "_cover_url\"\x87\x01\n" + + "\x16UpdateMetadataResponse\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\x12(\n" + + "\rerror_message\x18\x03 \x01(\tH\x00R\ferrorMessage\x88\x01\x01B\x10\n" + + "\x0e_error_message\".\n" + + "\x13ClearOverlayRequest\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\"\x85\x01\n" + + "\x14ClearOverlayResponse\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\x12(\n" + + "\rerror_message\x18\x03 \x01(\tH\x00R\ferrorMessage\x88\x01\x01B\x10\n" + + "\x0e_error_message\"G\n" + + "\x12BatchUpdateRequest\x121\n" + + "\x05items\x18\x01 \x03(\v2\x1b.musicfs.v1.BatchUpdateItemR\x05items\"i\n" + + "\x0fBatchUpdateItem\x12\x17\n" + + "\afile_id\x18\x01 \x01(\x03R\x06fileId\x12=\n" + + "\bmetadata\x18\x02 \x01(\v2!.musicfs.v1.UpdateMetadataRequestR\bmetadata\"\xc6\x01\n" + + "\x13BatchUpdateProgress\x12\x1c\n" + + "\tcompleted\x18\x01 \x01(\rR\tcompleted\x12\x14\n" + + "\x05total\x18\x02 \x01(\rR\x05total\x12+\n" + + "\x0fcurrent_file_id\x18\x03 \x01(\x03H\x00R\rcurrentFileId\x88\x01\x01\x12(\n" + + "\rerror_message\x18\x04 \x01(\tH\x01R\ferrorMessage\x88\x01\x01B\x12\n" + + "\x10_current_file_idB\x10\n" + + "\x0e_error_message\"`\n" + + "\x15ImportMetadataRequest\x12\x1f\n" + + "\vsource_path\x18\x01 \x01(\tR\n" + + "sourcePath\x12\x1b\n" + + "\x06format\x18\x02 \x01(\tH\x00R\x06format\x88\x01\x01B\t\n" + + "\a_format\"\xb7\x01\n" + + "\x0eImportProgress\x12\x1a\n" + + "\bimported\x18\x01 \x01(\rR\bimported\x12\x14\n" + + "\x05total\x18\x02 \x01(\rR\x05total\x12&\n" + + "\fcurrent_file\x18\x03 \x01(\tH\x00R\vcurrentFile\x88\x01\x01\x12(\n" + + "\rerror_message\x18\x04 \x01(\tH\x01R\ferrorMessage\x88\x01\x01B\x0f\n" + + "\r_current_fileB\x10\n" + + "\x0e_error_message*\x81\x01\n" + + "\n" + + "MountState\x12\x11\n" + + "\rMOUNT_UNKNOWN\x10\x00\x12\x12\n" + + "\x0eMOUNT_MOUNTING\x10\x01\x12\x0f\n" + + "\vMOUNT_READY\x10\x02\x12\x11\n" + + "\rMOUNT_SYNCING\x10\x03\x12\x12\n" + + "\x0eMOUNT_DEGRADED\x10\x04\x12\x14\n" + + "\x10MOUNT_UNMOUNTING\x10\x05*a\n" + + "\fHealthStatus\x12\x12\n" + + "\x0eHEALTH_UNKNOWN\x10\x00\x12\x12\n" + + "\x0eHEALTH_HEALTHY\x10\x01\x12\x13\n" + + "\x0fHEALTH_DEGRADED\x10\x02\x12\x14\n" + + "\x10HEALTH_UNHEALTHY\x10\x032\xf2\x05\n" + + "\aMusicFS\x12?\n" + + "\x06Search\x12\x19.musicfs.v1.SearchRequest\x1a\x1a.musicfs.v1.SearchResponse\x12E\n" + + "\fSearchStream\x12\x19.musicfs.v1.SearchRequest\x1a\x18.musicfs.v1.SearchResult0\x01\x12:\n" + + "\tGetStatus\x12\x11.musicfs.v1.Empty\x1a\x1a.musicfs.v1.StatusResponse\x12:\n" + + "\bShutdown\x12\x1b.musicfs.v1.ShutdownRequest\x1a\x11.musicfs.v1.Empty\x12:\n" + + "\rGetCacheStats\x12\x11.musicfs.v1.Empty\x1a\x16.musicfs.v1.CacheStats\x12K\n" + + "\n" + + "ClearCache\x12\x1d.musicfs.v1.ClearCacheRequest\x1a\x1e.musicfs.v1.ClearCacheResponse\x12G\n" + + "\bPrefetch\x12\x1b.musicfs.v1.PrefetchRequest\x1a\x1c.musicfs.v1.PrefetchProgress0\x01\x12=\n" + + "\vListOrigins\x12\x11.musicfs.v1.Empty\x1a\x1b.musicfs.v1.OriginsResponse\x12N\n" + + "\x0fGetOriginHealth\x12\x19.musicfs.v1.OriginRequest\x1a .musicfs.v1.OriginHealthResponse\x12E\n" + + "\fRescanOrigin\x12\x19.musicfs.v1.OriginRequest\x1a\x18.musicfs.v1.SyncProgress0\x01\x12?\n" + + "\x0fSubscribeEvents\x12\x17.musicfs.v1.EventFilter\x1a\x11.musicfs.v1.Event0\x012\xb7\x03\n" + + "\x0fMetadataService\x12K\n" + + "\vGetMetadata\x12\x1e.musicfs.v1.GetMetadataRequest\x1a\x1c.musicfs.v1.MetadataResponse\x12W\n" + + "\x0eUpdateMetadata\x12!.musicfs.v1.UpdateMetadataRequest\x1a\".musicfs.v1.UpdateMetadataResponse\x12Q\n" + + "\fClearOverlay\x12\x1f.musicfs.v1.ClearOverlayRequest\x1a .musicfs.v1.ClearOverlayResponse\x12X\n" + + "\x13BatchUpdateMetadata\x12\x1e.musicfs.v1.BatchUpdateRequest\x1a\x1f.musicfs.v1.BatchUpdateProgress0\x01\x12Q\n" + + "\x0eImportMetadata\x12!.musicfs.v1.ImportMetadataRequest\x1a\x1a.musicfs.v1.ImportProgress0\x01B6Z4homelab.lan/music-agregator/gen/musicfs/v1;musicfsv1b\x06proto3" + +var ( + file_musicfs_proto_rawDescOnce sync.Once + file_musicfs_proto_rawDescData []byte +) + +func file_musicfs_proto_rawDescGZIP() []byte { + file_musicfs_proto_rawDescOnce.Do(func() { + file_musicfs_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_musicfs_proto_rawDesc), len(file_musicfs_proto_rawDesc))) + }) + return file_musicfs_proto_rawDescData +} + +var file_musicfs_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_musicfs_proto_msgTypes = make([]protoimpl.MessageInfo, 36) +var file_musicfs_proto_goTypes = []any{ + (MountState)(0), // 0: musicfs.v1.MountState + (HealthStatus)(0), // 1: musicfs.v1.HealthStatus + (*Empty)(nil), // 2: musicfs.v1.Empty + (*SearchRequest)(nil), // 3: musicfs.v1.SearchRequest + (*SearchResponse)(nil), // 4: musicfs.v1.SearchResponse + (*SearchResult)(nil), // 5: musicfs.v1.SearchResult + (*StatusResponse)(nil), // 6: musicfs.v1.StatusResponse + (*OriginStatus)(nil), // 7: musicfs.v1.OriginStatus + (*ShutdownRequest)(nil), // 8: musicfs.v1.ShutdownRequest + (*TierStats)(nil), // 9: musicfs.v1.TierStats + (*CacheStats)(nil), // 10: musicfs.v1.CacheStats + (*ClearCacheRequest)(nil), // 11: musicfs.v1.ClearCacheRequest + (*ClearCacheResponse)(nil), // 12: musicfs.v1.ClearCacheResponse + (*PrefetchRequest)(nil), // 13: musicfs.v1.PrefetchRequest + (*PrefetchProgress)(nil), // 14: musicfs.v1.PrefetchProgress + (*OriginsResponse)(nil), // 15: musicfs.v1.OriginsResponse + (*OriginInfo)(nil), // 16: musicfs.v1.OriginInfo + (*OriginRequest)(nil), // 17: musicfs.v1.OriginRequest + (*OriginHealthResponse)(nil), // 18: musicfs.v1.OriginHealthResponse + (*SyncProgress)(nil), // 19: musicfs.v1.SyncProgress + (*SyncedFile)(nil), // 20: musicfs.v1.SyncedFile + (*EventFilter)(nil), // 21: musicfs.v1.EventFilter + (*Event)(nil), // 22: musicfs.v1.Event + (*GetMetadataRequest)(nil), // 23: musicfs.v1.GetMetadataRequest + (*MetadataResponse)(nil), // 24: musicfs.v1.MetadataResponse + (*UpdateMetadataRequest)(nil), // 25: musicfs.v1.UpdateMetadataRequest + (*UpdateMetadataResponse)(nil), // 26: musicfs.v1.UpdateMetadataResponse + (*ClearOverlayRequest)(nil), // 27: musicfs.v1.ClearOverlayRequest + (*ClearOverlayResponse)(nil), // 28: musicfs.v1.ClearOverlayResponse + (*BatchUpdateRequest)(nil), // 29: musicfs.v1.BatchUpdateRequest + (*BatchUpdateItem)(nil), // 30: musicfs.v1.BatchUpdateItem + (*BatchUpdateProgress)(nil), // 31: musicfs.v1.BatchUpdateProgress + (*ImportMetadataRequest)(nil), // 32: musicfs.v1.ImportMetadataRequest + (*ImportProgress)(nil), // 33: musicfs.v1.ImportProgress + nil, // 34: musicfs.v1.SearchResult.HighlightsEntry + nil, // 35: musicfs.v1.Event.MetadataEntry + nil, // 36: musicfs.v1.MetadataResponse.CustomTagsEntry + nil, // 37: musicfs.v1.UpdateMetadataRequest.CustomTagsEntry +} +var file_musicfs_proto_depIdxs = []int32{ + 5, // 0: musicfs.v1.SearchResponse.results:type_name -> musicfs.v1.SearchResult + 34, // 1: musicfs.v1.SearchResult.highlights:type_name -> musicfs.v1.SearchResult.HighlightsEntry + 0, // 2: musicfs.v1.StatusResponse.state:type_name -> musicfs.v1.MountState + 7, // 3: musicfs.v1.StatusResponse.origins:type_name -> musicfs.v1.OriginStatus + 1, // 4: musicfs.v1.OriginStatus.health:type_name -> musicfs.v1.HealthStatus + 9, // 5: musicfs.v1.CacheStats.l1_metadata:type_name -> musicfs.v1.TierStats + 9, // 6: musicfs.v1.CacheStats.l2_headers:type_name -> musicfs.v1.TierStats + 9, // 7: musicfs.v1.CacheStats.l3_chunks:type_name -> musicfs.v1.TierStats + 16, // 8: musicfs.v1.OriginsResponse.origins:type_name -> musicfs.v1.OriginInfo + 1, // 9: musicfs.v1.OriginInfo.health:type_name -> musicfs.v1.HealthStatus + 1, // 10: musicfs.v1.OriginHealthResponse.status:type_name -> musicfs.v1.HealthStatus + 20, // 11: musicfs.v1.SyncProgress.new_files:type_name -> musicfs.v1.SyncedFile + 35, // 12: musicfs.v1.Event.metadata:type_name -> musicfs.v1.Event.MetadataEntry + 36, // 13: musicfs.v1.MetadataResponse.custom_tags:type_name -> musicfs.v1.MetadataResponse.CustomTagsEntry + 37, // 14: musicfs.v1.UpdateMetadataRequest.custom_tags:type_name -> musicfs.v1.UpdateMetadataRequest.CustomTagsEntry + 30, // 15: musicfs.v1.BatchUpdateRequest.items:type_name -> musicfs.v1.BatchUpdateItem + 25, // 16: musicfs.v1.BatchUpdateItem.metadata:type_name -> musicfs.v1.UpdateMetadataRequest + 3, // 17: musicfs.v1.MusicFS.Search:input_type -> musicfs.v1.SearchRequest + 3, // 18: musicfs.v1.MusicFS.SearchStream:input_type -> musicfs.v1.SearchRequest + 2, // 19: musicfs.v1.MusicFS.GetStatus:input_type -> musicfs.v1.Empty + 8, // 20: musicfs.v1.MusicFS.Shutdown:input_type -> musicfs.v1.ShutdownRequest + 2, // 21: musicfs.v1.MusicFS.GetCacheStats:input_type -> musicfs.v1.Empty + 11, // 22: musicfs.v1.MusicFS.ClearCache:input_type -> musicfs.v1.ClearCacheRequest + 13, // 23: musicfs.v1.MusicFS.Prefetch:input_type -> musicfs.v1.PrefetchRequest + 2, // 24: musicfs.v1.MusicFS.ListOrigins:input_type -> musicfs.v1.Empty + 17, // 25: musicfs.v1.MusicFS.GetOriginHealth:input_type -> musicfs.v1.OriginRequest + 17, // 26: musicfs.v1.MusicFS.RescanOrigin:input_type -> musicfs.v1.OriginRequest + 21, // 27: musicfs.v1.MusicFS.SubscribeEvents:input_type -> musicfs.v1.EventFilter + 23, // 28: musicfs.v1.MetadataService.GetMetadata:input_type -> musicfs.v1.GetMetadataRequest + 25, // 29: musicfs.v1.MetadataService.UpdateMetadata:input_type -> musicfs.v1.UpdateMetadataRequest + 27, // 30: musicfs.v1.MetadataService.ClearOverlay:input_type -> musicfs.v1.ClearOverlayRequest + 29, // 31: musicfs.v1.MetadataService.BatchUpdateMetadata:input_type -> musicfs.v1.BatchUpdateRequest + 32, // 32: musicfs.v1.MetadataService.ImportMetadata:input_type -> musicfs.v1.ImportMetadataRequest + 4, // 33: musicfs.v1.MusicFS.Search:output_type -> musicfs.v1.SearchResponse + 5, // 34: musicfs.v1.MusicFS.SearchStream:output_type -> musicfs.v1.SearchResult + 6, // 35: musicfs.v1.MusicFS.GetStatus:output_type -> musicfs.v1.StatusResponse + 2, // 36: musicfs.v1.MusicFS.Shutdown:output_type -> musicfs.v1.Empty + 10, // 37: musicfs.v1.MusicFS.GetCacheStats:output_type -> musicfs.v1.CacheStats + 12, // 38: musicfs.v1.MusicFS.ClearCache:output_type -> musicfs.v1.ClearCacheResponse + 14, // 39: musicfs.v1.MusicFS.Prefetch:output_type -> musicfs.v1.PrefetchProgress + 15, // 40: musicfs.v1.MusicFS.ListOrigins:output_type -> musicfs.v1.OriginsResponse + 18, // 41: musicfs.v1.MusicFS.GetOriginHealth:output_type -> musicfs.v1.OriginHealthResponse + 19, // 42: musicfs.v1.MusicFS.RescanOrigin:output_type -> musicfs.v1.SyncProgress + 22, // 43: musicfs.v1.MusicFS.SubscribeEvents:output_type -> musicfs.v1.Event + 24, // 44: musicfs.v1.MetadataService.GetMetadata:output_type -> musicfs.v1.MetadataResponse + 26, // 45: musicfs.v1.MetadataService.UpdateMetadata:output_type -> musicfs.v1.UpdateMetadataResponse + 28, // 46: musicfs.v1.MetadataService.ClearOverlay:output_type -> musicfs.v1.ClearOverlayResponse + 31, // 47: musicfs.v1.MetadataService.BatchUpdateMetadata:output_type -> musicfs.v1.BatchUpdateProgress + 33, // 48: musicfs.v1.MetadataService.ImportMetadata:output_type -> musicfs.v1.ImportProgress + 33, // [33:49] is the sub-list for method output_type + 17, // [17:33] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name +} + +func init() { file_musicfs_proto_init() } +func file_musicfs_proto_init() { + if File_musicfs_proto != nil { + return + } + file_musicfs_proto_msgTypes[1].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[3].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[9].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[11].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[15].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[16].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[19].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[20].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[22].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[23].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[24].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[26].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[29].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[30].OneofWrappers = []any{} + file_musicfs_proto_msgTypes[31].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_musicfs_proto_rawDesc), len(file_musicfs_proto_rawDesc)), + NumEnums: 2, + NumMessages: 36, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_musicfs_proto_goTypes, + DependencyIndexes: file_musicfs_proto_depIdxs, + EnumInfos: file_musicfs_proto_enumTypes, + MessageInfos: file_musicfs_proto_msgTypes, + }.Build() + File_musicfs_proto = out.File + file_musicfs_proto_goTypes = nil + file_musicfs_proto_depIdxs = nil +} diff --git a/gen/musicfs/v1/musicfs_grpc.pb.go b/gen/musicfs/v1/musicfs_grpc.pb.go new file mode 100644 index 0000000..afaeb8d --- /dev/null +++ b/gen/musicfs/v1/musicfs_grpc.pb.go @@ -0,0 +1,775 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: musicfs.proto + +package musicfsv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MusicFS_Search_FullMethodName = "/musicfs.v1.MusicFS/Search" + MusicFS_SearchStream_FullMethodName = "/musicfs.v1.MusicFS/SearchStream" + MusicFS_GetStatus_FullMethodName = "/musicfs.v1.MusicFS/GetStatus" + MusicFS_Shutdown_FullMethodName = "/musicfs.v1.MusicFS/Shutdown" + MusicFS_GetCacheStats_FullMethodName = "/musicfs.v1.MusicFS/GetCacheStats" + MusicFS_ClearCache_FullMethodName = "/musicfs.v1.MusicFS/ClearCache" + MusicFS_Prefetch_FullMethodName = "/musicfs.v1.MusicFS/Prefetch" + MusicFS_ListOrigins_FullMethodName = "/musicfs.v1.MusicFS/ListOrigins" + MusicFS_GetOriginHealth_FullMethodName = "/musicfs.v1.MusicFS/GetOriginHealth" + MusicFS_RescanOrigin_FullMethodName = "/musicfs.v1.MusicFS/RescanOrigin" + MusicFS_SubscribeEvents_FullMethodName = "/musicfs.v1.MusicFS/SubscribeEvents" +) + +// MusicFSClient is the client API for MusicFS service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MusicFSClient interface { + Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) + SearchStream(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SearchResult], error) + GetStatus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatusResponse, error) + Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*Empty, error) + GetCacheStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*CacheStats, error) + ClearCache(ctx context.Context, in *ClearCacheRequest, opts ...grpc.CallOption) (*ClearCacheResponse, error) + Prefetch(ctx context.Context, in *PrefetchRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[PrefetchProgress], error) + ListOrigins(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*OriginsResponse, error) + GetOriginHealth(ctx context.Context, in *OriginRequest, opts ...grpc.CallOption) (*OriginHealthResponse, error) + RescanOrigin(ctx context.Context, in *OriginRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SyncProgress], error) + SubscribeEvents(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Event], error) +} + +type musicFSClient struct { + cc grpc.ClientConnInterface +} + +func NewMusicFSClient(cc grpc.ClientConnInterface) MusicFSClient { + return &musicFSClient{cc} +} + +func (c *musicFSClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SearchResponse) + err := c.cc.Invoke(ctx, MusicFS_Search_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) SearchStream(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SearchResult], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicFS_ServiceDesc.Streams[0], MusicFS_SearchStream_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[SearchRequest, SearchResult]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_SearchStreamClient = grpc.ServerStreamingClient[SearchResult] + +func (c *musicFSClient) GetStatus(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatusResponse) + err := c.cc.Invoke(ctx, MusicFS_GetStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, MusicFS_Shutdown_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) GetCacheStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*CacheStats, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CacheStats) + err := c.cc.Invoke(ctx, MusicFS_GetCacheStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) ClearCache(ctx context.Context, in *ClearCacheRequest, opts ...grpc.CallOption) (*ClearCacheResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ClearCacheResponse) + err := c.cc.Invoke(ctx, MusicFS_ClearCache_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) Prefetch(ctx context.Context, in *PrefetchRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[PrefetchProgress], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicFS_ServiceDesc.Streams[1], MusicFS_Prefetch_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[PrefetchRequest, PrefetchProgress]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_PrefetchClient = grpc.ServerStreamingClient[PrefetchProgress] + +func (c *musicFSClient) ListOrigins(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*OriginsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(OriginsResponse) + err := c.cc.Invoke(ctx, MusicFS_ListOrigins_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) GetOriginHealth(ctx context.Context, in *OriginRequest, opts ...grpc.CallOption) (*OriginHealthResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(OriginHealthResponse) + err := c.cc.Invoke(ctx, MusicFS_GetOriginHealth_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *musicFSClient) RescanOrigin(ctx context.Context, in *OriginRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SyncProgress], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicFS_ServiceDesc.Streams[2], MusicFS_RescanOrigin_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[OriginRequest, SyncProgress]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_RescanOriginClient = grpc.ServerStreamingClient[SyncProgress] + +func (c *musicFSClient) SubscribeEvents(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Event], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MusicFS_ServiceDesc.Streams[3], MusicFS_SubscribeEvents_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[EventFilter, Event]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_SubscribeEventsClient = grpc.ServerStreamingClient[Event] + +// MusicFSServer is the server API for MusicFS service. +// All implementations must embed UnimplementedMusicFSServer +// for forward compatibility. +type MusicFSServer interface { + Search(context.Context, *SearchRequest) (*SearchResponse, error) + SearchStream(*SearchRequest, grpc.ServerStreamingServer[SearchResult]) error + GetStatus(context.Context, *Empty) (*StatusResponse, error) + Shutdown(context.Context, *ShutdownRequest) (*Empty, error) + GetCacheStats(context.Context, *Empty) (*CacheStats, error) + ClearCache(context.Context, *ClearCacheRequest) (*ClearCacheResponse, error) + Prefetch(*PrefetchRequest, grpc.ServerStreamingServer[PrefetchProgress]) error + ListOrigins(context.Context, *Empty) (*OriginsResponse, error) + GetOriginHealth(context.Context, *OriginRequest) (*OriginHealthResponse, error) + RescanOrigin(*OriginRequest, grpc.ServerStreamingServer[SyncProgress]) error + SubscribeEvents(*EventFilter, grpc.ServerStreamingServer[Event]) error + mustEmbedUnimplementedMusicFSServer() +} + +// UnimplementedMusicFSServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMusicFSServer struct{} + +func (UnimplementedMusicFSServer) Search(context.Context, *SearchRequest) (*SearchResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Search not implemented") +} +func (UnimplementedMusicFSServer) SearchStream(*SearchRequest, grpc.ServerStreamingServer[SearchResult]) error { + return status.Error(codes.Unimplemented, "method SearchStream not implemented") +} +func (UnimplementedMusicFSServer) GetStatus(context.Context, *Empty) (*StatusResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetStatus not implemented") +} +func (UnimplementedMusicFSServer) Shutdown(context.Context, *ShutdownRequest) (*Empty, error) { + return nil, status.Error(codes.Unimplemented, "method Shutdown not implemented") +} +func (UnimplementedMusicFSServer) GetCacheStats(context.Context, *Empty) (*CacheStats, error) { + return nil, status.Error(codes.Unimplemented, "method GetCacheStats not implemented") +} +func (UnimplementedMusicFSServer) ClearCache(context.Context, *ClearCacheRequest) (*ClearCacheResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ClearCache not implemented") +} +func (UnimplementedMusicFSServer) Prefetch(*PrefetchRequest, grpc.ServerStreamingServer[PrefetchProgress]) error { + return status.Error(codes.Unimplemented, "method Prefetch not implemented") +} +func (UnimplementedMusicFSServer) ListOrigins(context.Context, *Empty) (*OriginsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListOrigins not implemented") +} +func (UnimplementedMusicFSServer) GetOriginHealth(context.Context, *OriginRequest) (*OriginHealthResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetOriginHealth not implemented") +} +func (UnimplementedMusicFSServer) RescanOrigin(*OriginRequest, grpc.ServerStreamingServer[SyncProgress]) error { + return status.Error(codes.Unimplemented, "method RescanOrigin not implemented") +} +func (UnimplementedMusicFSServer) SubscribeEvents(*EventFilter, grpc.ServerStreamingServer[Event]) error { + return status.Error(codes.Unimplemented, "method SubscribeEvents not implemented") +} +func (UnimplementedMusicFSServer) mustEmbedUnimplementedMusicFSServer() {} +func (UnimplementedMusicFSServer) testEmbeddedByValue() {} + +// UnsafeMusicFSServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MusicFSServer will +// result in compilation errors. +type UnsafeMusicFSServer interface { + mustEmbedUnimplementedMusicFSServer() +} + +func RegisterMusicFSServer(s grpc.ServiceRegistrar, srv MusicFSServer) { + // If the following call panics, it indicates UnimplementedMusicFSServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MusicFS_ServiceDesc, srv) +} + +func _MusicFS_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SearchRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).Search(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_Search_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).Search(ctx, req.(*SearchRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_SearchStream_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SearchRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MusicFSServer).SearchStream(m, &grpc.GenericServerStream[SearchRequest, SearchResult]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_SearchStreamServer = grpc.ServerStreamingServer[SearchResult] + +func _MusicFS_GetStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).GetStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_GetStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).GetStatus(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ShutdownRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).Shutdown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_Shutdown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).Shutdown(ctx, req.(*ShutdownRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_GetCacheStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).GetCacheStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_GetCacheStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).GetCacheStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_ClearCache_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClearCacheRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).ClearCache(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_ClearCache_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).ClearCache(ctx, req.(*ClearCacheRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_Prefetch_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(PrefetchRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MusicFSServer).Prefetch(m, &grpc.GenericServerStream[PrefetchRequest, PrefetchProgress]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_PrefetchServer = grpc.ServerStreamingServer[PrefetchProgress] + +func _MusicFS_ListOrigins_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).ListOrigins(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_ListOrigins_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).ListOrigins(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_GetOriginHealth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OriginRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MusicFSServer).GetOriginHealth(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MusicFS_GetOriginHealth_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MusicFSServer).GetOriginHealth(ctx, req.(*OriginRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MusicFS_RescanOrigin_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(OriginRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MusicFSServer).RescanOrigin(m, &grpc.GenericServerStream[OriginRequest, SyncProgress]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_RescanOriginServer = grpc.ServerStreamingServer[SyncProgress] + +func _MusicFS_SubscribeEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(EventFilter) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MusicFSServer).SubscribeEvents(m, &grpc.GenericServerStream[EventFilter, Event]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MusicFS_SubscribeEventsServer = grpc.ServerStreamingServer[Event] + +// MusicFS_ServiceDesc is the grpc.ServiceDesc for MusicFS service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MusicFS_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "musicfs.v1.MusicFS", + HandlerType: (*MusicFSServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Search", + Handler: _MusicFS_Search_Handler, + }, + { + MethodName: "GetStatus", + Handler: _MusicFS_GetStatus_Handler, + }, + { + MethodName: "Shutdown", + Handler: _MusicFS_Shutdown_Handler, + }, + { + MethodName: "GetCacheStats", + Handler: _MusicFS_GetCacheStats_Handler, + }, + { + MethodName: "ClearCache", + Handler: _MusicFS_ClearCache_Handler, + }, + { + MethodName: "ListOrigins", + Handler: _MusicFS_ListOrigins_Handler, + }, + { + MethodName: "GetOriginHealth", + Handler: _MusicFS_GetOriginHealth_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "SearchStream", + Handler: _MusicFS_SearchStream_Handler, + ServerStreams: true, + }, + { + StreamName: "Prefetch", + Handler: _MusicFS_Prefetch_Handler, + ServerStreams: true, + }, + { + StreamName: "RescanOrigin", + Handler: _MusicFS_RescanOrigin_Handler, + ServerStreams: true, + }, + { + StreamName: "SubscribeEvents", + Handler: _MusicFS_SubscribeEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "musicfs.proto", +} + +const ( + MetadataService_GetMetadata_FullMethodName = "/musicfs.v1.MetadataService/GetMetadata" + MetadataService_UpdateMetadata_FullMethodName = "/musicfs.v1.MetadataService/UpdateMetadata" + MetadataService_ClearOverlay_FullMethodName = "/musicfs.v1.MetadataService/ClearOverlay" + MetadataService_BatchUpdateMetadata_FullMethodName = "/musicfs.v1.MetadataService/BatchUpdateMetadata" + MetadataService_ImportMetadata_FullMethodName = "/musicfs.v1.MetadataService/ImportMetadata" +) + +// MetadataServiceClient is the client API for MetadataService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MetadataServiceClient interface { + GetMetadata(ctx context.Context, in *GetMetadataRequest, opts ...grpc.CallOption) (*MetadataResponse, error) + UpdateMetadata(ctx context.Context, in *UpdateMetadataRequest, opts ...grpc.CallOption) (*UpdateMetadataResponse, error) + ClearOverlay(ctx context.Context, in *ClearOverlayRequest, opts ...grpc.CallOption) (*ClearOverlayResponse, error) + BatchUpdateMetadata(ctx context.Context, in *BatchUpdateRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[BatchUpdateProgress], error) + ImportMetadata(ctx context.Context, in *ImportMetadataRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ImportProgress], error) +} + +type metadataServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewMetadataServiceClient(cc grpc.ClientConnInterface) MetadataServiceClient { + return &metadataServiceClient{cc} +} + +func (c *metadataServiceClient) GetMetadata(ctx context.Context, in *GetMetadataRequest, opts ...grpc.CallOption) (*MetadataResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MetadataResponse) + err := c.cc.Invoke(ctx, MetadataService_GetMetadata_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) UpdateMetadata(ctx context.Context, in *UpdateMetadataRequest, opts ...grpc.CallOption) (*UpdateMetadataResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateMetadataResponse) + err := c.cc.Invoke(ctx, MetadataService_UpdateMetadata_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) ClearOverlay(ctx context.Context, in *ClearOverlayRequest, opts ...grpc.CallOption) (*ClearOverlayResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ClearOverlayResponse) + err := c.cc.Invoke(ctx, MetadataService_ClearOverlay_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *metadataServiceClient) BatchUpdateMetadata(ctx context.Context, in *BatchUpdateRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[BatchUpdateProgress], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MetadataService_ServiceDesc.Streams[0], MetadataService_BatchUpdateMetadata_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[BatchUpdateRequest, BatchUpdateProgress]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MetadataService_BatchUpdateMetadataClient = grpc.ServerStreamingClient[BatchUpdateProgress] + +func (c *metadataServiceClient) ImportMetadata(ctx context.Context, in *ImportMetadataRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ImportProgress], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MetadataService_ServiceDesc.Streams[1], MetadataService_ImportMetadata_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[ImportMetadataRequest, ImportProgress]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MetadataService_ImportMetadataClient = grpc.ServerStreamingClient[ImportProgress] + +// MetadataServiceServer is the server API for MetadataService service. +// All implementations must embed UnimplementedMetadataServiceServer +// for forward compatibility. +type MetadataServiceServer interface { + GetMetadata(context.Context, *GetMetadataRequest) (*MetadataResponse, error) + UpdateMetadata(context.Context, *UpdateMetadataRequest) (*UpdateMetadataResponse, error) + ClearOverlay(context.Context, *ClearOverlayRequest) (*ClearOverlayResponse, error) + BatchUpdateMetadata(*BatchUpdateRequest, grpc.ServerStreamingServer[BatchUpdateProgress]) error + ImportMetadata(*ImportMetadataRequest, grpc.ServerStreamingServer[ImportProgress]) error + mustEmbedUnimplementedMetadataServiceServer() +} + +// UnimplementedMetadataServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMetadataServiceServer struct{} + +func (UnimplementedMetadataServiceServer) GetMetadata(context.Context, *GetMetadataRequest) (*MetadataResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetMetadata not implemented") +} +func (UnimplementedMetadataServiceServer) UpdateMetadata(context.Context, *UpdateMetadataRequest) (*UpdateMetadataResponse, error) { + return nil, status.Error(codes.Unimplemented, "method UpdateMetadata not implemented") +} +func (UnimplementedMetadataServiceServer) ClearOverlay(context.Context, *ClearOverlayRequest) (*ClearOverlayResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ClearOverlay not implemented") +} +func (UnimplementedMetadataServiceServer) BatchUpdateMetadata(*BatchUpdateRequest, grpc.ServerStreamingServer[BatchUpdateProgress]) error { + return status.Error(codes.Unimplemented, "method BatchUpdateMetadata not implemented") +} +func (UnimplementedMetadataServiceServer) ImportMetadata(*ImportMetadataRequest, grpc.ServerStreamingServer[ImportProgress]) error { + return status.Error(codes.Unimplemented, "method ImportMetadata not implemented") +} +func (UnimplementedMetadataServiceServer) mustEmbedUnimplementedMetadataServiceServer() {} +func (UnimplementedMetadataServiceServer) testEmbeddedByValue() {} + +// UnsafeMetadataServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MetadataServiceServer will +// result in compilation errors. +type UnsafeMetadataServiceServer interface { + mustEmbedUnimplementedMetadataServiceServer() +} + +func RegisterMetadataServiceServer(s grpc.ServiceRegistrar, srv MetadataServiceServer) { + // If the following call panics, it indicates UnimplementedMetadataServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MetadataService_ServiceDesc, srv) +} + +func _MetadataService_GetMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMetadataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).GetMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_GetMetadata_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).GetMetadata(ctx, req.(*GetMetadataRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_UpdateMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateMetadataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).UpdateMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_UpdateMetadata_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).UpdateMetadata(ctx, req.(*UpdateMetadataRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_ClearOverlay_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ClearOverlayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MetadataServiceServer).ClearOverlay(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MetadataService_ClearOverlay_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MetadataServiceServer).ClearOverlay(ctx, req.(*ClearOverlayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MetadataService_BatchUpdateMetadata_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(BatchUpdateRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MetadataServiceServer).BatchUpdateMetadata(m, &grpc.GenericServerStream[BatchUpdateRequest, BatchUpdateProgress]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MetadataService_BatchUpdateMetadataServer = grpc.ServerStreamingServer[BatchUpdateProgress] + +func _MetadataService_ImportMetadata_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ImportMetadataRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MetadataServiceServer).ImportMetadata(m, &grpc.GenericServerStream[ImportMetadataRequest, ImportProgress]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MetadataService_ImportMetadataServer = grpc.ServerStreamingServer[ImportProgress] + +// MetadataService_ServiceDesc is the grpc.ServiceDesc for MetadataService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MetadataService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "musicfs.v1.MetadataService", + HandlerType: (*MetadataServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetMetadata", + Handler: _MetadataService_GetMetadata_Handler, + }, + { + MethodName: "UpdateMetadata", + Handler: _MetadataService_UpdateMetadata_Handler, + }, + { + MethodName: "ClearOverlay", + Handler: _MetadataService_ClearOverlay_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "BatchUpdateMetadata", + Handler: _MetadataService_BatchUpdateMetadata_Handler, + ServerStreams: true, + }, + { + StreamName: "ImportMetadata", + Handler: _MetadataService_ImportMetadata_Handler, + ServerStreams: true, + }, + }, + Metadata: "musicfs.proto", +} diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..bcb221e --- /dev/null +++ b/package.nix @@ -0,0 +1,26 @@ +{ + lib, + buildGoModule, +}: + +buildGoModule { + pname = "music-agregator"; + version = "0.1.0"; + + src = ./.; + + vendorHash = "sha256-LXzaQul2aDJakWF9fX7ZOz2uf3VxO2D54Xn7uH1hps8="; + proxyVendor = true; + + subPackages = [ "cmd/music-agregator" ]; + + ldflags = [ + "-s" + "-w" + ]; + + meta = { + description = "Music automation orchestrator — monitors albums, manages downloads, drives metadata enrichment"; + mainProgram = "music-agregator"; + }; +}