chiark / gitweb /
Store Unix timestamps in the database, rather than SQL ones.
[odin-cgi] / bin / shorturl.userv
CommitLineData
be24e9af
MW
1#! /usr/bin/perl
2
3use lib "lib";
4
5use Odin;
6use DBI;
7use POSIX;
8
9Odin::cmdline_who;
10
11my $op = shift(@ARGV) // "help";
12if ($op eq "help") {
13 print <<EOF;
14Commands available:
15
16 del TAG ...
17 get TAG ...
18 help
19 list
20 new URL
21EOF
22} elsif ($op eq "list") {
23 @ARGV == 0 or Odin::fail "usage: list";
24 my $db = Odin::open_db;
25 for my $r (@{$db->selectall_arrayref
3300e9a2 26 ("SELECT tag, stamp, url
be24e9af
MW
27 FROM odin_shorturl WHERE owner = ?
28 ORDER BY stamp", undef, $Odin::WHO)}) {
3300e9a2 29 my ($tag, $stamp, $url) = @$r;
be24e9af
MW
30 my $t = strftime "%Y-%m-%d %H:%M:%S %z", localtime $stamp;
31 printf "%-25s %-12s %s\n", $t, $tag, $url;
32 }
33} elsif ($op eq "new") {
34 @ARGV == 1 or Odin::fail "usage: new URL";
35 my ($url) = @ARGV;
36 my $tag = Odin::new_shorturl $url;
37 print "$Odin::SHORTURL/$tag\n";
38} elsif ($op eq "get") {
39 @ARGV >= 0 or Odin::fail "usage: get TAG ...";
40 if (@ARGV == 1) { print Odin::get_shorturl $ARGV[0], "\n"; }
41 else {
42 for my $tag (@ARGV)
43 { printf "%-12s %s\n", $tag, Odin::get_shorturl $tag; }
44 }
45} elsif ($op eq "del") {
46 @ARGV >= 0 or Odin::fail "usage: del TAG ...";
47 Odin::delete_shorturl @ARGV;
48} else {
49 Odin::fail "unknown operation `$op'";
50}