Files
plezy/lib/models/plex_library.dart
T

82 lines
2.1 KiB
Dart
Raw Normal View History

2025-10-18 00:05:20 +02:00
import 'package:json_annotation/json_annotation.dart';
import 'mixins/multi_server_fields.dart';
import '../utils/global_key_utils.dart';
2025-10-18 00:05:20 +02:00
part 'plex_library.g.dart';
@JsonSerializable()
class PlexLibrary with MultiServerFields {
2025-10-18 00:05:20 +02:00
final String key;
final String title;
final String type;
final String? agent;
final String? scanner;
final String? language;
final String? uuid;
final int? updatedAt;
final int? createdAt;
2025-11-10 11:08:36 +01:00
final int? hidden;
2025-10-18 00:05:20 +02:00
// Multi-server support fields (from MultiServerFields mixin)
@override
2025-11-21 23:59:39 +01:00
@JsonKey(includeFromJson: false, includeToJson: false)
final String? serverId;
@override
2025-11-21 23:59:39 +01:00
@JsonKey(includeFromJson: false, includeToJson: false)
final String? serverName;
2025-11-21 23:59:39 +01:00
/// Global unique identifier across all servers (serverId:key)
String get globalKey => serverId != null ? buildGlobalKey(serverId!, key) : key;
2025-11-21 23:59:39 +01:00
2025-10-18 00:05:20 +02:00
PlexLibrary({
required this.key,
required this.title,
required this.type,
this.agent,
this.scanner,
this.language,
this.uuid,
this.updatedAt,
this.createdAt,
2025-11-10 11:08:36 +01:00
this.hidden,
2025-11-21 23:59:39 +01:00
this.serverId,
this.serverName,
2025-10-18 00:05:20 +02:00
});
2025-12-15 02:29:03 +01:00
factory PlexLibrary.fromJson(Map<String, dynamic> json) => _$PlexLibraryFromJson(json);
2025-10-18 00:05:20 +02:00
Map<String, dynamic> toJson() => _$PlexLibraryToJson(this);
2025-11-23 05:10:42 +01:00
/// Create a copy of this library with optional field overrides
PlexLibrary copyWith({
String? key,
String? title,
String? type,
String? agent,
String? scanner,
String? language,
String? uuid,
int? updatedAt,
int? createdAt,
int? hidden,
String? serverId,
String? serverName,
}) {
return PlexLibrary(
key: key ?? this.key,
title: title ?? this.title,
type: type ?? this.type,
agent: agent ?? this.agent,
scanner: scanner ?? this.scanner,
language: language ?? this.language,
uuid: uuid ?? this.uuid,
updatedAt: updatedAt ?? this.updatedAt,
createdAt: createdAt ?? this.createdAt,
hidden: hidden ?? this.hidden,
serverId: serverId ?? this.serverId,
serverName: serverName ?? this.serverName,
);
}
2025-10-18 00:05:20 +02:00
}