Newer
Older
jstrr / inittbl.sh
@HIROSE Yuuji HIROSE Yuuji on 20 Nov 2021 1 KB jsTrr Initial Commit
#!/bin/sh

DB=${1:-users.sq3}
CSV=${2:-teams.csv}
sqlite3 ${DB} <<-EOF
	.mode csv
	PRAGMA foreign_keys=on;
	CREATE TABLE IF NOT EXISTS teams(team primary key);
	CREATE TEMPORARY TABLE guest(team);
	INSERT INTO guest VALUES('guest');
	INSERT INTO teams SELECT team FROM GUEST
			  WHERE team NOT IN (SELECT team FROM teams);

	CREATE TABLE IF NOT EXISTS users(
	  user primary key, gecos, email, team,
	  FOREIGN KEY(team) REFERENCES teams(team)
	  	ON DELETE CASCADE ON UPDATE CASCADE);
	CREATE TEMPORARY TABLE teamcsv(teamno,teamname,uid,name);
	.import $CSV teamcsv
	DELETE FROM teamcsv WHERE teamno NOT GLOB '[0-9]*';
	INSERT INTO teams SELECT distinct teamname FROM teamcsv
			  WHERE teamname NOT IN (SELECT team FROM teams);
	INSERT INTO users SELECT uid, name, uid||'@itl.koeki-u.ac.jp', teamname
			 FROM teamcsv WHERE uid NOT IN (SELECT user FROM users);

	CREATE TABLE IF NOT EXISTS skey(
	  user, skey, expire,
	  UNIQUE(user, skey),
	  FOREIGN KEY(user) REFERENCES users(user)
	  	ON DELETE CASCADE ON UPDATE CASCADE);
	CREATE TABLE IF NOT EXISTS tmpkey(
	  user, tmpkey, token, expire,
	  UNIQUE(user, tmpkey),
	  FOREIGN KEY(user) REFERENCES users(user)
	  	ON DELETE CASCADE ON UPDATE CASCADE);
EOF