DROP TABLE IF EXISTS exlog_old;

ALTER TABLE exlog RENAME TO exlog_old;

CREATE TABLE exlog (
  dt FLOAT NOT NULL,
  movenum INTEGER NOT NULL,
  ex INTEGER NOT NULL, 
  unit INTEGER NOT NULL, 
  descr TEXT NOT NULL, 
  orm FLOAT NOT NULL DEFAULT 0,
  ttlwgt FLOAT NOT NULL DEFAULT 0,
  maxwgt FLOAT NOT NULL DEFAULT 0,
  ttlrep INTEGER NOT NULL DEFAULT 0,
  maxrep INTEGER NOT NULL DEFAULT 0,
  ttldst FLOAT NOT NULL DEFAULT 0,
  ttltm INTEGER NOT NULL DEFAULT 0,
  tmstart FLOAT NOT NULL DEFAULT 0,
  tmend FLOAT NOT NULL DEFAULT 0,
  ttlcal FLOAT NOT NULL DEFAULT 0,
  hravg INTEGER NOT NULL DEFAULT 0,
  hrmax INTEGER NOT NULL DEFAULT 0, 
  PRIMARY KEY (dt, movenum)
);

INSERT OR IGNORE INTO exlog (dt, movenum, ex, unit, descr, orm, ttlwgt, maxwgt, ttldst, ttltm, tmstart, tmend, ttlcal, hravg, hrmax) SELECT dt, movenum, ex, unit, descr, orm, ttlwgt, maxwgt, ttldst, ttltm, tmstart, tmend, ttlcal, hravg, hrmax FROM exlog_old;

CREATE INDEX exlog_idx_ex_dt ON exlog (ex,dt);

DROP TABLE IF EXISTS exlog_old;

DROP TABLE IF EXISTS exlogset_old;

ALTER TABLE exlogset RENAME TO exlogset_old;

CREATE TABLE exlogset (
  dt FLOAT NOT NULL,
  movenum INTEGER NOT NULL,
  setnum INTEGER NOT NULL,
  reps INTEGER NOT NULL,
  weight FLOAT NOT NULL,
  PRIMARY KEY (dt, movenum, setnum)
);

INSERT OR IGNORE INTO exlogset (dt, movenum, setnum, reps, weight) SELECT s.dt, e.movenum, s.setnum, s.reps, s.weight FROM exlogset_old AS s, exlog AS e WHERE e.dt=s.dt AND e.ex=s.ex;

DROP TABLE IF EXISTS exlogset_old;

UPDATE exlog SET maxrep = (SELECT MAX(s.reps) FROM exlogset AS s WHERE s.dt=exlog.dt AND s.movenum=exlog.movenum) WHERE EXISTS(SELECT s.reps FROM exlogset AS s WHERE s.dt=exlog.dt AND s.movenum=exlog.movenum AND s.reps NOT NULL);

UPDATE exlog SET ttlrep = (SELECT SUM(s.reps) FROM exlogset AS s WHERE s.dt=exlog.dt AND s.movenum=exlog.movenum) WHERE EXISTS(SELECT s.reps FROM exlogset AS s WHERE s.dt=exlog.dt AND s.movenum=exlog.movenum AND s.reps NOT NULL);
