use crate::types::{Family, Header, Individual, Media, Repository, Source, Submitter};
#[cfg(feature = "json")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Default)]
#[cfg_attr(feature = "json", derive(Serialize, Deserialize))]
pub struct GedcomData {
pub header: Header,
pub submitters: Vec<Submitter>,
pub individuals: Vec<Individual>,
pub families: Vec<Family>,
pub repositories: Vec<Repository>,
pub sources: Vec<Source>,
pub multimedia: Vec<Media>,
}
impl GedcomData {
pub fn add_family(&mut self, family: Family) {
self.families.push(family);
}
pub fn add_individual(&mut self, individual: Individual) {
self.individuals.push(individual);
}
pub fn add_repository(&mut self, repo: Repository) {
self.repositories.push(repo);
}
pub fn add_source(&mut self, source: Source) {
self.sources.push(source);
}
pub fn add_submitter(&mut self, submitter: Submitter) {
self.submitters.push(submitter);
}
pub fn stats(&self) {
println!("----------------------");
println!("| Gedcom Data Stats: |");
println!("----------------------");
println!(" submitters: {}", self.submitters.len());
println!(" individuals: {}", self.individuals.len());
println!(" families: {}", self.families.len());
println!(" repositories: {}", self.repositories.len());
println!(" sources: {}", self.sources.len());
println!(" multimedia: {}", self.multimedia.len());
println!("----------------------");
}
}