Prechádzať zdrojové kódy

a sqlite3 version for debugging

clementinecomputing 6 rokov pred
rodič
commit
e3738f35ff
1 zmenil súbory, kde vykonal 705 pridanie a 0 odobranie
  1. 705 0
      server/sql_schema/create_tables.sqlite

+ 705 - 0
server/sql_schema/create_tables.sqlite

@@ -0,0 +1,705 @@
+--
+-- Copyright (c) 2019 Clementine Computing LLC.
+--
+-- This file is part of PopuFare.
+--
+-- PopuFare is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- PopuFare is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with PopuFare.  If not, see <https://www.gnu.org/licenses/>.
+--
+
+-- AVLS data table receives all AVLS chirps and stores them for later reference
+-- DROP TABLE IF EXISTS `avls_data`;
+CREATE TABLE IF NOT EXISTS avls_data (
+  id INTEGER PRIMARY KEY,
+
+  equip_num INTEGER,
+  driver INTEGER,
+  paddle INTEGER,
+  route  INTEGER,
+  trip  INTEGER,
+  stop  INTEGER,
+  chirp_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  latitude REAL,
+  longitude REAL,
+  heading REAL,
+  velocity REAL
+
+);
+
+-- Bus Pass Table holds all bus pass holders
+-- DROP TABLE IF EXISTS `active_rider_table`;
+CREATE TABLE IF NOT EXISTS active_rider_table (
+
+  -- The following entries are stored on the client as well and kept in sync
+  seq_num INTEGER UNIQUE PRIMARY KEY ,
+
+  logical_card_id INTEGER NOT NULL,
+  rfid_token VARCHAR(32),
+  mag_token VARCHAR(32),
+  rule_name VARCHAR(24),
+  rule_param VARCHAR(24),
+
+  -- The rest are for server-side recordkeeping...
+
+  deleted BOOLEAN DEFAULT '0',
+  parent_entity VARCHAR(32),
+  notes  VARCHAR(64)
+
+) ;
+
+create INDEX id_idx on active_rider_table (logical_card_id);
+create INDEX id_and_seq on active_rider_table (logical_card_id, seq_num);
+
+
+-- Billing Log Table
+
+-- DROP TABLE IF EXISTS `billing_log`;
+CREATE TABLE IF NOT EXISTS billing_log (
+  id INTEGER PRIMARY KEY,
+
+  -- MD5 sum of the orignal record as sent by the client, used to confirm storing the record
+  conf_checksum VARCHAR(32) UNIQUE,
+
+  -- Contents of the billing log entry coming from the client
+  equip_num     INTEGER,
+  driver        INTEGER,
+  paddle        INTEGER,
+  route         INTEGER,
+  trip          INTEGER,
+  stop          INTEGER,
+  ride_time TIMESTAMP,
+  latitude      REAL,
+  longitude     REAL,
+  action VARCHAR(16),
+  rule  VARCHAR(24),
+  ruleparam VARCHAR(24),
+  reason VARCHAR(64),
+  credential VARCHAR(32),
+  logical_card_id INTEGER NOT NULL,
+  cash_value INTEGER,
+  stop_name VARCHAR(64)
+
+) ;
+
+
+-- DROP TABLE IF EXISTS `diagnostic_log`;
+CREATE TABLE IF NOT EXISTS diagnostic_log (
+  id INTEGER PRIMARY KEY,
+
+  servertime TIMESTAMP NOT NULL,
+  loglvl VARCHAR(8),
+  message VARCHAR(256)
+
+  -- And some additional index data
+
+) ;
+create INDEX servertime_idx on diagnostic_log (servertime);
+create INDEX lvl_msg_idx on diagnostic_log (servertime, loglvl);
+
+
+-- DROP TABLE IF EXISTS `pass_option`;
+create table pass_option(
+  id INTEGER PRIMARY KEY,
+  group_id    INTEGER,
+  param       INTEGER,
+  name        varchar(255),
+  rule        varchar(255),
+  db_rule     varchar(255),
+  type        varchar(255),
+  description varchar(255),
+  num_opt     INTEGER   default 0,
+  option0     varchar(255),
+  option1     varchar(255),
+  option2     varchar(255),
+  option3     varchar(255),
+
+  active      INTEGER default 0
+
+) ;
+
+
+-- DROP TABLE IF EXISTS rule_class;
+CREATE TABLE IF NOT EXISTS rule_class (
+  id INTEGER PRIMARY KEY,
+  rulename VARCHAR(24),
+  ruleclass VARCHAR(24)
+) ;
+
+-- DROP TABLE IF EXISTS update_level;
+CREATE TABLE IF NOT EXISTS update_level (
+  id INTEGER PRIMARY KEY,
+  equip_num INTEGER NOT NULL DEFAULT 0,
+  client_file VARCHAR(32) NOT NULL,
+  checksum VARCHAR(32) NOT NULL,
+  file_size INTEGER NOT NULL,
+  file_path VARCHAR(512) NOT NULL,
+  fileversion VARCHAR(32),
+
+  -- The following field is never manually set and is used only to pull the latest value
+  serial INTEGER NOT NULL
+
+  -- These indicies should make the operation of "give me the latest of each update for bus number X" fast
+
+);
+create INDEX ul_equip_num_idx on update_level (equip_num);
+create INDEX client_file_idx on update_level (client_file);
+create INDEX serial_idx on update_level (serial);
+create INDEX file_eqip_idx on update_level (client_file, equip_num);
+
+
+CREATE TABLE IF NOT EXISTS bus_checkin_log (
+  id INTEGER PRIMARY KEY,
+  checkin_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  busunit_num INTEGER NOT NULL DEFAULT 0,
+  equip_num INTEGER NOT NULL DEFAULT 0,
+  eth0_mac VARCHAR(17),
+  cell_imei VARCHAR(15),
+  cell_imsi VARCHAR(15),
+  version_data VARCHAR(256)
+
+) ;
+
+create INDEX time_index on bus_checkin_log (checkin_time); 
+create INDEX bcl_equip_num_idx on bus_checkin_log (equip_num);
+create INDEX busunit_num_idx on bus_checkin_log (busunit_num);
+
+DROP TABLE IF EXISTS `user_pass`;
+CREATE TABLE `user_pass` (
+  user_pass_id INTEGER PRIMARY KEY,
+  logical_card_id INTEGER default NULL,
+
+  issued datetime default NULL,
+  activated datetime default NULL,
+  deactivated datetime default NULL,
+
+  firstused datetime default NULL,
+  lastused datetime default NULL,
+
+  nrides_orig int(11) default NULL,
+  nrides_remain int(11) default NULL,
+
+  nday_orig int(11) default NULL,
+  nday_expiration datetime default NULL,
+
+  active tinyint(1) default 0,
+  expired tinyint(1) default 0,
+
+  rule varchar(255) default NULL,
+  queue_order int(11) default NULL,
+
+  comment varchar(255) default NULL,
+  paytype varchar(255) default NULL
+
+) ;
+
+
+DROP TABLE IF EXISTS `user_card`;
+CREATE TABLE `user_card` (
+  logical_card_id INTEGER PRIMARY KEY,
+
+  -- legacy, will remove in final phase2
+  -- card_number varchar(128) UNIQUE default NULL,
+  -- rfsite int(127) default NULL,
+  -- rfid int(127) default NULL,
+  --
+
+  mag_token varchar(255) default null,
+  rfid_token varchar(255) default null,
+
+  comment varchar(255) default NULL,
+  userid int(11) default NULL,
+
+  issued datetime default NULL,
+  active tinyint(1) default 1,
+  deactivated datetime default NULL,
+
+  lastused datetime default NULL,
+  firstused datetime default NULL,
+
+  group_id int(11) default NULL,
+  issuetype varchar(255) default NULL
+
+) ;
+
+
+DROP TABLE IF EXISTS `groups`;
+CREATE TABLE `groups` (
+  group_id INTEGER PRIMARY KEY,
+  group_name varchar(255) default NULL
+) ;
+
+
+DROP TABLE IF EXISTS `audit_user_pass`;
+CREATE TABLE `audit_user_pass` (
+  `audit_user_pass_id` INTEGER PRIMARY KEY,
+  `old_user_pass_id` INTEGER default NULL,
+  `old_logical_card_id` INTEGER default NULL,
+  `old_issued` datetime default NULL,
+  `old_firstused` datetime default NULL,
+  `old_lastused` datetime default NULL,
+  `old_nrides_orig` INTEGER default NULL,
+  `old_nrides_remain` INTEGER default NULL,
+  `old_nday_orig` INTEGER default NULL,
+  `old_nday_expiration` datetime default NULL,
+  `old_active` INTEGER default NULL,
+  `old_rule` char(255) default NULL,
+  `old_queue_order` INTEGER default NULL,
+  `old_log_id` INTEGER default NULL,
+  `old_comment` varchar(255) default NULL,
+  `new_user_pass_id` INTEGER default NULL,
+  `new_logical_card_id` INTEGER default NULL,
+  `new_issued` datetime default NULL,
+  `new_firstused` datetime default NULL,
+  `new_lastused` datetime default NULL,
+  `new_nrides_orig` INTEGER default NULL,
+  `new_nrides_remain` INTEGER default NULL,
+  `new_nday_orig` INTEGER default NULL,
+  `new_nday_expiration` datetime default NULL,
+  `new_active` INTEGER default NULL,
+  `new_rule` char(255) default NULL,
+  `new_queue_order` INTEGER default NULL,
+  `new_log_id` INTEGER default NULL,
+  `new_comment` varchar(255) default NULL,
+  `comment` varchar(255) default NULL,
+  `owner_id` INTEGER default NULL,
+  --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+  `old_expired` INTEGER default NULL,
+  `new_expired` INTEGER default NULL,
+  `old_paytype` varchar(255) default NULL,
+  `new_paytype` varchar(255) default NULL
+
+) ;
+create INDEX audit_user_pass_id_idx on audit_user_pass (audit_user_pass_id);
+create INDEX audit_user_pass_timestamp_idx on audit_user_pass (timestamp);
+create INDEX audit_user_pass_new_user_pass_id_idx on audit_user_pass (new_user_pass_id);
+create INDEX audit_user_pass_old_user_pass_id_idx on audit_user_pass (old_user_pass_id);
+
+
+
+DROP TABLE IF EXISTS `audit_user_card`;
+CREATE TABLE `audit_user_card` (
+  `audit_user_card_id` INTEGER PRIMARY KEY,
+  `old_logical_card_id` INTEGER default NULL,
+  `old_comment` varchar(255) default NULL,
+  `old_lastused` datetime default NULL,
+  `old_userid` INTEGER default NULL,
+  `old_issued` datetime default NULL,
+  `old_firstused` datetime default NULL,
+  `old_group_id` INTEGER default NULL,
+  `old_issuetype` varchar(255) default NULL,
+  `new_logical_card_id` INTEGER default NULL,
+  `new_comment` varchar(255) default NULL,
+  `new_lastused` datetime default NULL,
+  `new_userid` INTEGER default NULL,
+  `new_issued` datetime default NULL,
+  `new_firstused` datetime default NULL,
+  `new_group_id` INTEGER default NULL,
+  `new_issuetype` varchar(255) default NULL,
+  --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+  `comment` varchar(255) default NULL,
+  `old_mag_token` varchar(31) default NULL,
+  `new_mag_token` varchar(31) default NULL,
+  `old_rfid_token` varchar(31) default NULL,
+  `new_rfid_token` varchar(31) default NULL,
+  `old_active` INTEGER default NULL,
+  `new_active` INTEGER default NULL,
+  `old_deactivated` datetime default null,
+  `new_deactivated` datetime default null
+
+) ;
+create INDEX audit_user_card_id_idx on audit_user_card (audit_user_card_id);
+create INDEX audit_user_card_timestampe_idx on audit_user_card (timestamp);
+
+create INDEX audit_user_card_new_logical_card_id_idx on audit_user_card (new_logical_card_id);
+create INDEX audit_user_card_old_logical_card_id_idx on audit_user_card (old_logical_card_id);
+
+create INDEX audit_user_card_new_mag_token_idx on audit_user_card (new_mag_token);
+create INDEX audit_user_card_old_mag_token_idx on audit_user_card (old_mag_token);
+
+create INDEX audit_user_card_new_rfid_token_idx on audit_user_card (new_rfid_token);
+create INDEX audit_user_card_old_rfid_token_idx on audit_user_card (old_rfid_token);
+
+
+DROP TABLE IF EXISTS `users`;
+CREATE TABLE `users` (
+          `userid` INTEGER PRIMARY KEY,
+          `username` char(255) default NULL,
+          `comment` char(255) default NULL,
+          `first_name` char(128) default NULL,
+          `last_name` char(128) default NULL,
+          `phone` char(31) default NULL,
+          `email` char(128) default NULL,
+          `address` char(255) default NULL,
+          `city` char(127) default NULL,
+          `state` char(127) default NULL,
+          `zip` char(31) default NULL,
+          `created` datetime default NULL,
+          `active` INTEGER default NULL,
+          `passwordhash` varchar(255) default NULL,
+          `shipping_address` varchar(255) default NULL,
+          `shipping_city` varchar(255) default NULL,
+          `shipping_state` varchar(255) default NULL,
+          `shipping_zip` varchar(255) default NULL,
+          `shipping_name` varchar(255) default NULL,
+          `shipping_country_code` varchar(32) default NULL,
+          `shipping_country_name` varchar(255) default NULL,
+          `reset_attempts` INTEGER default '0'
+) ;
+
+
+DROP TABLE IF EXISTS `audit_users`;
+CREATE TABLE `audit_users` (
+          `audit_users_id` INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `comment` varchar(255) default NULL,
+          `old_username` char(255) default NULL,
+          `old_userid` INTEGER default NULL,
+          `old_comment` char(255) default NULL,
+          `old_first_name` char(128) default NULL,
+          `old_last_name` char(128) default NULL,
+          `old_phone` char(31) default NULL,
+          `old_email` char(128) default NULL,
+          `old_address` char(255) default NULL,
+          `old_city` char(127) default NULL,
+          `old_state` char(127) default NULL,
+          `old_zip` char(31) default NULL,
+          `old_created` datetime default NULL,
+          `old_active` INTEGER default NULL,
+          `old_passwordhash` varchar(255) default NULL,
+          `new_username` char(255) default NULL,
+          `new_userid` INTEGER default NULL,
+          `new_comment` char(255) default NULL,
+          `new_first_name` char(128) default NULL,
+          `new_last_name` char(128) default NULL,
+          `new_phone` char(31) default NULL,
+          `new_email` char(128) default NULL,
+          `new_address` char(255) default NULL,
+          `new_city` char(127) default NULL,
+          `new_state` char(127) default NULL,
+          `new_zip` char(31) default NULL,
+          `new_created` datetime default NULL,
+          `new_active` INTEGER default NULL,
+          `new_passwordhash` varchar(255) default NULL,
+          `old_shipping_address` varchar(255) default NULL,
+          `old_shipping_city` varchar(255) default NULL,
+          `old_shipping_state` varchar(255) default NULL,
+          `old_shipping_zip` varchar(255) default NULL,
+          `old_shipping_name` varchar(255) default NULL,
+          `old_shipping_country_code` varchar(255) default NULL,
+          `old_shipping_country_name` varchar(32) default NULL,
+          `old_reset_attempts` varchar(255) default NULL,
+          `new_shipping_address` varchar(255) default NULL,
+          `new_shipping_city` varchar(255) default NULL,
+          `new_shipping_state` varchar(255) default NULL,
+          `new_shipping_zip` varchar(255) default NULL,
+          `new_shipping_name` varchar(255) default NULL,
+          `new_shipping_country_code` varchar(255) default NULL,
+          `new_shipping_country_name` varchar(32) default NULL,
+          `new_reset_attempts` varchar(255) default NULL
+) ;
+
+
+-- Admin Web UI tables
+
+DROP TABLE IF EXISTS `admins`;
+CREATE TABLE `admins` (
+          `userid` INTEGER PRIMARY KEY,
+          `group_id` INTEGER default NULL,
+          `username` char(255) default NULL,
+          `password` char(255) default NULL,
+          `active` INTEGER default 1,
+          `comment` varchar(255) default null
+) ;
+
+DROP TABLE IF EXISTS `audit_admins`;
+CREATE TABLE `audit_admins` (
+          `audit_admins_id` INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `comment` varchar(255) default NULL,
+          `old_userid` INTEGER default NULL,
+          `old_username` varchar(255) default NULL,
+          `old_password` varchar(255) default NULL,
+          `new_userid` INTEGER default NULL,
+          `new_username` varchar(255) default NULL,
+          `new_password` varchar(255) default NULL
+) ;
+
+
+DROP TABLE IF EXISTS `admins_session_info`;
+CREATE TABLE `admins_session_info` (
+ `id` INTEGER PRIMARY KEY,
+          `userid` INTEGER default NULL,
+          `sessionid` char(255) default NULL,
+          `lastactive` datetime default NULL
+) ;
+
+DROP TABLE IF EXISTS `admin_groups`;
+CREATE TABLE `admin_groups` (
+  id INTEGER PRIMARY KEY,
+          `userid` INTEGER default NULL,
+          `group_id` INTEGER default NULL,
+          `permissions` INTEGER default NULL
+) ;
+
+DROP TABLE IF EXISTS `rule_mappings`;
+CREATE TABLE `rule_mappings` (
+  id INTEGER PRIMARY KEY,
+          `rule` char(255) NOT NULL default '',
+          `rule_text` char(255) default NULL,
+          `group_id` INTEGER default NULL
+) ;
+
+DROP TABLE IF EXISTS `org_default_pass_value`;
+CREATE TABLE `org_default_pass_value` (
+          `id` INTEGER PRIMARY KEY,
+          `name` varchar(255) default NULL,
+          `nday` INTEGER default NULL,
+          `nride` INTEGER default NULL,
+          `description` varchar(255) default NULL,
+          `start` datetime default NULL,
+          `end` datetime default NULL
+) ;
+
+DROP TABLE IF EXISTS `org_default_card_value`;
+CREATE TABLE `org_default_card_value` (
+          `id` INTEGER PRIMARY KEY,
+          `group_id` INTEGER default NULL,
+          `mag_track` INTEGER default NULL,
+          `rf_length` INTEGER default NULL,
+          `rf_site` INTEGER default NULL
+) ;
+
+
+-- WEB API tables
+
+DROP TABLE IF EXISTS `authorization_log`;
+CREATE TABLE `authorization_log` (
+          `authorization_log_id` INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `authorization_type` varchar(255) default NULL,
+          `authorization_code` varchar(255) default NULL,
+          `user_id` INTEGER default NULL,
+          `logical_card_id` INTEGER default NULL,
+          `user_pass_id` INTEGER default NULL,
+          `comment` varchar(255) default NULL
+) ;
+
+DROP TABLE IF EXISTS `org_card_order_queue`;
+CREATE TABLE `org_card_order_queue` (
+          `org_card_order_queue_id` INTEGER PRIMARY KEY,
+          `userid` INTEGER default NULL,
+          `logical_card_id` INTEGER default NULL,
+          `created` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `processed` timestamp NULL default NULL,
+          `comment` varchar(255) default NULL,
+          `pending` INTEGER default NULL
+) ;
+
+
+DROP TABLE IF EXISTS `org_api_session`;
+CREATE TABLE `org_api_session` (
+  id INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `ip` varchar(15) default NULL,
+          `active` INTEGER default NULL,
+          `server_token` varchar(255) default NULL,
+          `user_token` varchar(255) default NULL
+) ;
+
+DROP TABLE IF EXISTS `org_api_log`;
+CREATE TABLE `org_api_log` (
+          `log_id` INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `log` blob
+) ;
+
+DROP TABLE IF EXISTS `org_api_password_reset`;
+CREATE TABLE `org_api_password_reset` (
+  id INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `token` varchar(255) default NULL,
+          `userid` INTEGER default NULL,
+          `email` varchar(255) default NULL,
+          `active` INTEGER default NULL
+) ;
+
+DROP TABLE IF EXISTS `org_api_register_email`;
+CREATE TABLE `org_api_register_email` (
+  id INTEGER PRIMARY KEY,
+          --`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
+          `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
+          `token` varchar(255) default NULL,
+          `active` INTEGER default NULL,
+          `email` varchar(255) default NULL
+) ;
+
+
+
+-- drivers, stops and paddles + misc
+
+DROP TABLE IF EXISTS `drivers`;
+
+
+CREATE TABLE `drivers` (
+  `id` INTEGER PRIMARY KEY,
+  `pin` varchar(8) NOT NULL default '',
+  `name` varchar(32) default NULL
+) ;
+
+
+--
+-- Table structure for table `stops`
+--
+
+DROP TABLE IF EXISTS `stops`;
+
+
+CREATE TABLE `stops` (
+  `id` INTEGER PRIMARY KEY,
+  `latitude` double NOT NULL default '0',
+  `longitude` double NOT NULL default '0',
+  `name` varchar(32) default NULL
+) ;
+
+
+--
+-- Table structure for table `paddles`
+--
+
+DROP TABLE IF EXISTS `paddles`;
+
+
+CREATE TABLE `paddles` (
+  `id` INTEGER PRIMARY KEY,
+  `slot` INTEGER NOT NULL default '0',
+  `arrival` time default NULL,
+  `route` INTEGER default NULL,
+  `trip` INTEGER default NULL,
+  `stage` INTEGER default NULL,
+  `stop` INTEGER default NULL,
+  `stopid` INTEGER NOT NULL default '0'
+) ;
+
+
+--
+-- Table structure for table `old_stops`
+--
+
+DROP TABLE IF EXISTS `old_stops`;
+
+
+CREATE TABLE `old_stops` (
+  `id` INTEGER PRIMARY KEY,
+  `verstring` text,
+  `latitude` double NOT NULL default '0',
+  `longitude` double NOT NULL default '0',
+  `name` varchar(32) default NULL
+) ;
+
+
+--
+-- Table structure for table `old_paddles`
+--
+
+DROP TABLE IF EXISTS `old_paddles`;
+
+
+CREATE TABLE `old_paddles` (
+  `id` INTEGER PRIMARY KEY,
+  `verstring` text,
+  `slot` INTEGER NOT NULL default '0',
+  `arrival` time default NULL,
+  `route` INTEGER default NULL,
+  `trip` INTEGER default NULL,
+  `stage` INTEGER default NULL,
+  `stop` INTEGER default NULL,
+  `stopid` INTEGER NOT NULL default '0'
+) ;
+
+
+--
+-- Table structure for table `live_stops`
+--
+
+DROP TABLE IF EXISTS `live_stops`;
+
+
+CREATE TABLE `live_stops` (
+  `id` INTEGER PRIMARY KEY,
+  `latitude` double NOT NULL default '0',
+  `longitude` double NOT NULL default '0',
+  `name` varchar(32) default NULL
+) ;
+
+
+--
+-- Table structure for table `live_paddles`
+--
+
+DROP TABLE IF EXISTS `live_paddles`;
+
+
+CREATE TABLE `live_paddles` (
+  `id` INTEGER PRIMARY KEY,
+  `slot` INTEGER NOT NULL default '0',
+  `arrival` time default NULL,
+  `route` INTEGER default NULL,
+  `trip` INTEGER default NULL,
+  `stage` INTEGER default NULL,
+  `stop` INTEGER default NULL,
+  `stopid` INTEGER NOT NULL default '0'
+) ;
+
+
+
+DROP TABLE IF EXISTS `price_point`;
+CREATE TABLE `price_point` (
+  `id` INTEGER PRIMARY KEY,
+  `price` double default NULL,
+  `param` INTEGER default NULL,
+  `name` varchar(255) default NULL,
+  `rule` varchar(32) default NULL,
+  `db_rule` varchar(32) default NULL,
+  `group_id` INTEGER default NULL,
+  `type` varchar(255) default NULL,
+  `description` varchar(1024) default NULL,
+  `num_opt` INTEGER default 0,
+  `price_option0` varchar(255) default null,
+  `price_option1` varchar(255) default null,
+  `price_option2` varchar(255) default null,
+  `price_option3` varchar(255) default null,
+  `active` INTEGER default 0
+) ;
+
+
+drop table if exists billing_log_annotation;
+create table if not exists billing_log_annotation (
+  id INTEGER PRIMARY KEY,
+  seq_num INTEGER not null,
+  rule varchar(24),
+  ruleparam varchar(24),
+  reason varchar(64),
+  credential varchar(32),
+  note varchar(512),
+  timestamp timestamp default current_timestamp
+) ;
+
+