소스 검색

Separated static and user data. Installed modified accordingly.

Iñigo Valentin 6 년 전
부모
커밋
410f6eef2e
7개의 변경된 파일826개의 추가작업 그리고 26658개의 파일을 삭제
  1. 1 3
      .gitignore
  2. 2 1
      application/config.php
  3. 2 1
      application/helper/db.php
  4. BIN
      application/sw.sqlite
  5. 34 11
      install
  6. 514 26642
      install_data/install_base.sql
  7. 273 0
      install_data/install_data.sql

+ 1 - 3
.gitignore

@@ -1,9 +1,7 @@
 # Private files
-public/img/content/
 application/config/auth.php_*
-application/*.sqlite
-private.sql
 util/
+data/*.sqlite
 
 # Autogenerated files
 .php_pid

+ 2 - 1
application/config.php

@@ -39,7 +39,8 @@
         "handler" => "$base_dir../application/handler/",
         "view" => "$base_dir../application/view/",
         "helper" => "$base_dir../application/helper/",
-        "db" => "$base_dir../application/sw.sqlite",
+        "db_key" => "$base_dir../application/sw.sqlite",
+        "db_data" => "$base_dir../data/sw.sqlite",
     ];
 
 ?>

+ 2 - 1
application/helper/db.php

@@ -14,11 +14,12 @@
                 $this->open($file);
             }
         }
-        $db = new SQLite3($path["db"]);
+        $db = new SQLite3($path["db_key"]);
         if(!$db) {
             error_log($db->lastErrorMsg());
         }
         else {
+            $db->query("attach '" . $path["db_data"] . "' as data");
             return $db;
         }
     }

BIN
application/sw.sqlite


+ 34 - 11
install

@@ -1,3 +1,4 @@
+#!/bin/bash
 SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
 
 if [ "$(command -v sqlite3)" == "" ]
@@ -24,11 +25,12 @@ then
     exit -4
 fi
 
-if ! node -r requireg /dev/null 2> /dev/null
-then
-    echo "NODE.js module requireg is not installed. Install it and try again."
-    exit -5
-fi
+# TODO: FIX, not working for this module
+#if ! node -r requireg /dev/null 2> /dev/null
+#then
+#    echo "NODE.js module requireg is not installed. Install it and try again."
+#    exit -5
+#fi
 
 
 if ! node -r dateformat /dev/null 2> /dev/null
@@ -61,13 +63,34 @@ then
     exit -9
 fi
 
+clear_keys=0
+clear_data=0
+for i in "$@"
+do
+    if [[ $i == "--clear-keys" ]] ; then
+        clear_keys=1;
+    elif [[ $i == "--clear-data" ]] ; then
+        clear_data=1;
+    fi
+done
+
+
+if [ -f $SCRIPTPATH/application/sw.sqlite ] && [ $clear_keys == 0 ]
+then
+    echo "Key database exist. It will not be overwritten. Use the --clear-keys argument to override."
+else
+    echo "Setting up keys..."
+    #rm $SCRIPTPATH/application/sw.sqlite
+    #sqlite3 $SCRIPTPATH/application/sw.sqlite < $SCRIPTPATH/install_data/install_base.sql
+fi
 
-if [ -f $SCRIPTPATH/application/sw3.sqlite ]
+if [ -f $SCRIPTPATH/data/sw.sqlite ] && [ $clear_data == 0 ]
 then
-    echo "Database exists! Not overwritting. Use the --clean argument to force."
-    exit -10
+    echo "User data database exist. It will not be overwritten. Use the --clear-data argument to override."
+else
+    echo "Setting up user tables..."
+    #rm $SCRIPTPATH/data/sw.sqlite
+    #sqlite3 $SCRIPTPATH/data/sw.sqlite < $SCRIPTPATH/install_data/install_data.sql
 fi
 
-echo "Configuring database..."
-sqlite3 $SCRIPTPATH/application/sw.sqlite < $SCRIPTPATH/install_data/setup.sql
-echo "Done. You can start the web server by typing ./start_server or edit the config file for the server options"
+echo "All done. You can start the web server by typing ./start_server or edit the config file for the server options"

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 514 - 26642
install_data/install_base.sql


+ 273 - 0
install_data/install_data.sql

@@ -0,0 +1,273 @@
+CREATE TABLE player(
+    uid INT PRIMARY KEY NOT NULL,
+    name TEXT NOT NULL UNIQUE,
+    mail TEXT NOT NULL UNIQUE,
+    password TEXT NOT NULL,
+    api_key TEXT NOT NULL UNIQUE,
+    mana INT NOT NULL CHECK (mana >= 0),
+    crystal INT NOT NULL CHECK (crystal >= 0),
+    country TEXT,
+    lang TEXT,
+    level INT NOT NULL CHECK (level BETWEEN 1 AND 50),
+    experience INT NOT NULL CHECK (experience >= 0),
+    energy INT NOT NULL CHECK (energy >= 0),
+    energy_max INT NOT NULL CHECK (energy_max >= 0),
+    energy_per_min INT NOT NULL CHECK (energy_per_min >= 0),
+    arena_energy INT NOT NULL CHECK (arena_energy >= 0),
+    arena_energy_max INT NOT NULL CHECK (arena_energy_max >= 0),
+    rep INT REFERENCES unit(id),
+    social_point INT NOT NULL CHECK (social_point >= 0),
+    honor_point INT NOT NULL CHECK (honor_point >= 0),
+    guild_point INT NOT NULL CHECK (guild_point >= 0),
+    darkportal_energy INT NOT NULL CHECK (darkportal_energy >= 0),
+    darkportal_energy_max INT NOT NULL CHECK (darkportal_energy_max >= 0),
+    dimension_energy INT NOT NULL CHECK (dimension_energy >= 0),
+    dimension_energy_max INT NOT NULL CHECK (dimension_energy_max >= 0),
+    costume_point INT NOT NULL CHECK (costume_point >= 0),
+    costume_point_max INT NOT NULL CHECK (costume_point_max >= 0),
+    honor_medal INT NOT NULL CHECK (honor_medal >= 0),
+    honor_mark INT NOT NULL CHECK (honor_mark >= 0),
+    event_coin INT NOT NULL CHECK (event_coin >= 0),
+    storage_slots INT NOT NULL CHECK (storage_slots >= 0),
+    island INT NOT NULL CHECK (island >= 0)
+);
+CREATE TABLE scenario(
+    uid INT NOT NULL REFERENCES player(id),
+    region INT NOT NULL REFERENCES k_area(id),
+    difficulty INT NOT NULL REFERENCES k_difficulty(id),
+    cleared INT CHECK(cleared IN (0, 1)),
+    max_cleared INT CHECK(cleared BETWEEN 0 AND 6),
+    PRIMARY KEY (uid, region, difficulty, max_cleared)
+);
+CREATE TABLE defense(
+    uid INT NOT NULL REFERENCES player(id),
+    unit INT NOT NULL REFERENCES unit(id),
+    position INT NOT NULL CHECK(position BETWEEN 1 AND 4),
+    PRIMARY KEY (uid, unit)
+);
+CREATE TABLE unit(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT PRIMARY KEY NOT NULL,
+    building TEXT, -- TODO
+    unit INT NOT NULL REFERENCES unit(id),
+    level INT NOT NULL CHECK(level BETWEEN 1 AND 40),
+    stars INT INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
+    hp INT NOT NULL CHECK(hp >= 0),
+    attack INT NOT NULL CHECK(attack >= 0),
+    defense INT NOT NULL CHECK(defense >= 0),
+    speed INT NOT NULL CHECK(speed >= 0),
+    crit_rate INT NOT NULL CHECK(crit_rate >= 0),
+    crit_damage INT NOT NULL CHECK(crit_damage >= 0),
+    resistance INT NOT NULL CHECK(resistance >= 0),
+    accuracy INT NOT NULL CHECK(accuracy >= 0),
+    experience INT NOT NULL CHECK(experience >= 0),
+    exp_gained INT NOT NULL CHECK(exp_gained >= 0),
+    exp_gain_rate INT NOT NULL CHECK(exp_gain_rate >= 0),
+    costume INT,
+    attribute INT, -- TODO: Element?
+    source INT REFERENCES k_source(id),
+    create_time DATETIME NOT NULL,
+    homunculus INT NOT NULL CHECK(homunculus IN (0, 1)),
+    homunculus_name TEXT,
+    lock INT NOT NULL CHECK(homunculus IN (0, 1))
+);
+CREATE TABLE unit_skill(
+    unit INT NOT NULL REFERENCES unit(id),
+    skill INT NOT NULL REFERENCES k_skill(id),
+    level INT NOT NULL CHECK(level > 0),
+    PRIMARY KEY (unit, skill)
+);
+CREATE TABLE rune(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT PRIMARY KEY NOT NULL,
+    assigned_to INT REFERENCES unit(id),
+    type INT REFERENCES k_rune_set(id),
+    slot INT NOT NULL CHECK(slot BETWEEN 1 AND 6),
+    stars INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
+    ancient INT NOT NULL CHECK(ancient IN (0, 1)),
+    level INT NOT NULL CHECK(level BETWEEN 0 AND 15),
+    quality INT NOT NULL REFERENCES k_quality(id),
+    original_quality INT NOT NULL REFERENCES k_quality(id),
+    value INT NOT NULL CHECK(value > 0),
+    efficiency FLOAT NOT NULL CHECK(efficiency BETWEEN 0 AND 100),
+    max_efficiency FLOAT NOT NULL CHECK(max_efficiency BETWEEN 0 AND 100),
+    main_stat INT NOT NULL REFERENCES k_rune_stat(id),
+    main_stat_value INT NOT NULL CHECK(value > 0),
+    innate_stat INT REFERENCES k_rune_stat(id),
+    innate_stat_value INT CHECK(innate_stat_value >= 0),
+    substat_1 INT REFERENCES k_rune_stat(id),
+    substat_1_value INT CHECK(substat_1_value >= 0),
+    substat_1_enchant INT CHECK(substat_1_enchant IN (0, 1)),
+    substat_1_grind INT CHECK(substat_1_grind >= 0),
+    substat_2 INT REFERENCES k_rune_stat(id),
+    substat_2_value INT CHECK(substat_2_value >= 0),
+    substat_2_enchant INT CHECK(substat_2_enchant IN (0, 1)),
+    substat_2_grind INT CHECK(substat_2_grind >= 0),
+    substat_3 INT REFERENCES k_rune_stat(id),
+    substat_3_value INT CHECK(substat_3_value >= 0),
+    substat_3_enchant INT CHECK(substat_3_enchant IN (0, 1)),
+    substat_3_grind INT CHECK(substat_3_grind >= 0),
+    substat_4 INT REFERENCES k_rune_stat(id),
+    substat_4_value INT CHECK(substat_4_value >= 0),
+    substat_4_enchant INT CHECK(substat_4_enchant IN (0, 1)),
+    substat_4_grind INT CHECK(substat_4_grind >= 0)
+);
+CREATE TABLE inventory(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL REFERENCES k_inventory(id),
+    type INT NOT NULL REFERENCES k_inventory_type(id),
+    amount INT NOT NULL CHECK(amount >= 0)
+);
+CREATE TABLE summon_special(
+    week DATETIME NOT NULL,
+    unit INT NOT NULL REFERENCES k_unit(id),
+    PRIMARY KEY (week, unit)
+);
+CREATE TABLE guild(
+    id INT NOT NULL PRIMARY KEY,
+    name TEXT NOT NULL,
+    level INT NOT NULL CHECK(level BETWEEN 0 AND 100),
+    experience NOT NULL CHECK(experience >= 0),
+    recruiting NOT NULL CHECK(recruiting IN (0, 1)),
+    members INT NOT NULL CHECK(level BETWEEN 0 AND 30),
+    leader INT REFERENCES guild_member(id),
+    comment TEXT,
+    notice TEXT
+);
+CREATE TABLE guild_member(
+    id INT NOT NULL PRIMARY KEY,
+    guild INT NOT NULL REFERENCES guild(id),
+    grade INT NOT NULL CHECK(grade BETWEEN 1 AND 3),
+    name TEXT NOT NULL,
+    level INT NOT NULL CHECK(level BETWEEN 1 AND 50),
+    rating INT NOT NULL CHECK(rating >= 0),
+    arena_score INT NOT NULL CHECK(arena_score >= 0),
+    joined TIMESTAMP NOT NULL,
+    last_login TIMESTAMP NOT NULL,
+    in_war INT NOT NULL CHECK(in_war IN (0, 1)),
+    has_defense INT NOT NULL CHECK(has_defense IN (0, 1))
+);
+CREATE TABLE rune_craft(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL PRIMARY KEY,
+    type INT NOT NULL CHECK(type BETWEEN 1 AND 4),
+    quality INT NOT NULL REFERENCES k_quality(id),
+    rune INT NOT NULL REFERENCES k_rune_set(id),
+    stat INT NOT NULL REFERENCES k_rune_stat(id),
+    value INT NOT NULL CHECK(value >= 0)
+);
+CREATE TABLE run_party(
+    run INT NOT NULL REFERENCES run(id),
+    unit INT NOT NULL REFERENCES unit(id),
+    k_unit INT NOT NULL REFERENCES k_unit(id),
+    PRIMARY KEY (run, unit)
+);
+CREATE TABLE run_drop_rune_craft(
+    run INT NOT NULL REFERENCES run(id),
+    id INT NOT NULL PRIMARY KEY,
+    type INT NOT NULL REFERENCES k_rune_craft_type(id), -- TODO: Duplicated??
+    quality INT NOT NULL REFERENCES k_quality(id),
+    rune INT NOT NULL REFERENCES k_rune_set(id),
+    stat INT NOT NULL REFERENCES k_rune_stat(id),
+    value INT NOT NULL CHECK(value >= 0)
+);
+CREATE TABLE run_drop_unit(
+    run INT NOT NULL REFERENCES run(id),
+    unit INT NOT NULL REFERENCES kunit(id),
+    PRIMARY KEY (run, unit)
+);
+CREATE TABLE run_drop_sd(
+    run INT NOT NULL REFERENCES run(id),
+    unit INT NOT NULL REFERENCES kunit(id),
+    PRIMARY KEY (run, unit)
+);
+CREATE TABLE run_drop_unit_pieces(
+    run INT NOT NULL REFERENCES run(id),
+    unit INT NOT NULL REFERENCES kunit(id),
+    amount INT NOT NULL CHECK(amount > 0),
+    PRIMARY KEY (run, unit)
+);
+CREATE TABLE run_drop_shapeshifting(
+    run INT NOT NULL PRIMARY KEY REFERENCES run(id),
+    amount INT NOT NULL CHECK(amount > 0)
+);
+CREATE TABLE team_unit(
+    team INT NOT NULL REFERENCES team(id),
+    unit INT NOT NULL REFERENCES unit(id),
+    PRIMARY KEY(team, unit)
+);
+CREATE TABLE run(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL PRIMARY KEY,
+    dtime TIMESTAMP NOT NULL,
+    area INT NOT NULL REFERENCES k_area,
+    stage INT CHECK(stage > 0),
+    difficulty INT REFERENCES k_difficulty(id),
+    win INT NOT NULL CHECK(win IN (0, 1)),
+    time INT NOT NULL CHECK(time > 0),
+    mana INT NOT NULL CHECK(mana >= 0),
+    energy INT NOT NULL CHECK(energy >= 0),
+    crystal INT NOT NULL CHECK(crystal >= 0),
+    helper INT NOT NULL CHECK(helper IN (0, 1))
+);
+CREATE TABLE run_drop_rune(
+    run INT NOT NULL REFERENCES run(id),
+    id INT NOT NULL PRIMARY KEY REFERENCES rune(id),
+    type INT REFERENCES k_rune_set(id),
+    slot INT NOT NULL CHECK(slot BETWEEN 1 AND 6),
+    stars INT NOT NULL CHECK(stars BETWEEN 1 AND 6),
+    ancient INT NOT NULL CHECK(ancient IN (0, 1)),
+    quality INT NOT NULL REFERENCES k_quality(id),
+    value INT NOT NULL CHECK(value > 0),
+    efficiency FLOAT NOT NULL CHECK(efficiency BETWEEN 0 AND 100),
+    main_stat INT NOT NULL REFERENCES k_rune_stat(id),
+    main_stat_value INT NOT NULL CHECK(value > 0),
+    innate_stat INT REFERENCES k_rune_stat(id),
+    innate_stat_value INT CHECK(innate_stat_value >= 0),
+    substat_1 INT REFERENCES k_rune_stat(id),
+    substat_1_value INT CHECK(substat_1_value >= 0),
+    substat_2 INT REFERENCES k_rune_stat(id),
+    substat_2_value INT CHECK(substat_2_value >= 0),
+    substat_3 INT REFERENCES k_rune_stat(id),
+    substat_3_value INT CHECK(substat_3_value >= 0),
+    substat_4 INT REFERENCES k_rune_stat(id),
+    substat_4_value INT CHECK(substat_4_value >= 0)
+);
+CREATE TABLE run_drop_item(
+    run INT NOT NULL REFERENCES run(id),
+    item INT NOT NULL REFERENCES k_inventory(id),
+    amount INT NOT NULL CHECK(amount > 0),
+    PRIMARY KEY (run, item)
+);
+CREATE TABLE filter(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL PRIMARY KEY,
+    page TEXT NOT NULL,
+    name INT NOT NULL,
+    description TEXT,
+    condition TEXT NOT NULL
+);
+CREATE TABLE team(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL PRIMARY KEY,
+    name INT NOT NULL,
+    description TEXT,
+    area_type INT NOT NULL REFERENCES k_area_type(id),
+    area INT REFERENCES k_area(id),
+    stage INT,
+    difficulty INT REFERENCES k_difficulty(id)
+);
+CREATE TABLE building(
+    -- No primary key, can have multiple towers
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL,
+    building INT NOT NULL REFERENCES k_building(id),
+    gain INT NOT NULL CHECK(gain >= 0)
+);
+CREATE TABLE decoration(
+    uid INT NOT NULL REFERENCES player(id),
+    id INT NOT NULL,
+    decoration INT NOT NULL REFERENCES k_decoration(id),
+    level INT NOT NULL CHECK(level > 0),
+    PRIMARY KEY (uid, decoration)
+);

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.