import 'package:terepi_seged/enums/layer_import_source_type.dart'; class ImportedLayerMeta { final String id; final String name; final LayerImportSourceType sourceType; final String localPath; // fájl elérési út final String? storagePath; // Supabase Storage (megosztáskor) final bool isVisible; final int? projectId; final DateTime importedAt; final DateTime? syncedAt; const ImportedLayerMeta({ required this.id, required this.name, required this.sourceType, required this.localPath, this.storagePath, this.isVisible = true, this.projectId, required this.importedAt, this.syncedAt, }); bool get isSynced => storagePath != null; Map toMap() => { 'id': id, 'name': name, 'source_type': sourceType.name, 'local_path': localPath, 'storage_path': storagePath, 'is_visible': isVisible ? 1 : 0, 'project_id': projectId, 'imported_at': importedAt.toIso8601String(), 'synced_at': syncedAt?.toIso8601String(), }; factory ImportedLayerMeta.fromMap(Map m) => ImportedLayerMeta( id: m['id'] as String, name: m['name'] as String, sourceType: LayerImportSourceType.values.byName(m['source_type'] as String), localPath: m['local_path'] as String, storagePath: m['storage_path'] as String?, isVisible: (m['is_visible'] as int) == 1, projectId: m['project_id'] as int?, importedAt: DateTime.parse(m['imported_at'] as String), syncedAt: m['synced_at'] != null ? DateTime.parse(m['synced_at'] as String) : null, ); ImportedLayerMeta copyWith({ bool? isVisible, String? storagePath, DateTime? syncedAt, }) => ImportedLayerMeta( id: id, name: name, sourceType: sourceType, localPath: localPath, storagePath: storagePath ?? this.storagePath, isVisible: isVisible ?? this.isVisible, projectId: projectId, importedAt: importedAt, syncedAt: syncedAt ?? this.syncedAt, ); }