From 1560e7ff1b794e378c3dc4fdfdc43d839521aae3 Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Sun, 4 Dec 2016 19:42:12 +0000 Subject: [PATCH] Useful programs --- get_succ | 30 ++++++++++++++++++++++++++++++ load | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100755 get_succ create mode 100755 load diff --git a/get_succ b/get_succ new file mode 100755 index 0000000..c0019bc --- /dev/null +++ b/get_succ @@ -0,0 +1,30 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; + +use Succession::Schema; +use DateTime; +use DateTime::Format::Strptime; + +my $date = shift; + +if (defined $date) { + $date = DateTime::Format::Strptime->new( + pattern => '%Y-%m-%d', + )->parse_datetime($date); +} else { + $date = DateTime->now; +} + +my $sch = Succession::Schema->get_schema; + +my ($sov) = $sch->resultset('Sovereign')->sovereign_on_date($date); + +say 'Sovereign on ', $date->strftime('%d %B %Y'), ': ', $sov->name; + +say 'Succession:'; + +my $i = 1; +say $i++, ': ', $_->name for $sov->succession_on_date($date); diff --git a/load b/load new file mode 100755 index 0000000..9ec86f0 --- /dev/null +++ b/load @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; + +use Text::ParseWords; +use DateTime::Format::Strptime; +use Succession::Schema; + +my $dt_p = DateTime::Format::Strptime->new( + pattern => '%d/%m/%Y', +); + +my $sch = Succession::Schema->get_schema; + +my $person_rs = $sch->resultset('Person'); + +<>; + +my @cols = qw[name born died parent family_order]; + +my %people; + +while (<>) { + chomp; + my %rec; + @rec{@cols} = map { length ? $_ : undef} parse_line(',', 0, $_); + + $rec{born} = $dt_p->parse_datetime($rec{born}); + $rec{died} = $dt_p->parse_datetime($rec{died}) if $rec{died}; + + if ($rec{parent}) { + if (exists $people{$rec{parent}}) { + $rec{parent} = $people{$rec{parent}}->id; + } else { + warn "Can't find parent for $rec{name} ($rec{parent})\n"; + next; + } + } + $people{$rec{name}} = $person_rs->create(\%rec); +}