~starkingdoms/starkingdoms

45e15b1a7b0ec21cc5c6461993a4e9466e5c3447 — core 2 years ago a31f8e9
API work, add savefile data
M Cargo.lock => Cargo.lock +37 -0
@@ 1594,6 1594,7 @@ dependencies = [
 "byteorder",
 "diesel_derives",
 "itoa",
 "pq-sys",
 "serde_json",
]



@@ 1625,6 1626,17 @@ dependencies = [
]

[[package]]
name = "diesel_json"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fc50de1d729b55dfbb03e2d2db846684e3ab585f4ee9cfc3c675d236f951888"
dependencies = [
 "diesel",
 "serde",
 "serde_json",
]

[[package]]
name = "diesel_migrations"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"


@@ 3006,6 3018,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"

[[package]]
name = "pq-sys"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31c0052426df997c0cbd30789eb44ca097e3541717a7b8fa36b1c464ee7edebd"
dependencies = [
 "vcpkg",
]

[[package]]
name = "proc-macro-crate"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"


@@ 3477,6 3498,7 @@ dependencies = [
 "bb8",
 "diesel",
 "diesel-async",
 "diesel_json",
 "diesel_migrations",
 "env_logger",
 "hmac",


@@ 3488,10 3510,18 @@ dependencies = [
 "serde",
 "serde_json",
 "sha2",
 "starkingdoms-common",
 "toml 0.8.8",
]

[[package]]
name = "starkingdoms-common"
version = "0.1.0"
dependencies = [
 "serde",
]

[[package]]
name = "starkingdoms-server"
version = "0.0.1"
dependencies = [


@@ 3501,6 3531,7 @@ dependencies = [
 "rand",
 "serde",
 "serde_json",
 "starkingdoms-common",
 "tracing-subscriber",
]



@@ 3941,6 3972,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"

[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"

[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"

M Cargo.toml => Cargo.toml +2 -1
@@ 1,6 1,7 @@
[workspace]
members = [
    "server",
    "starkingdoms-api"
    "starkingdoms-api",
    "starkingdoms-common"
]
resolver = "2"

M server/Cargo.toml => server/Cargo.toml +1 -0
@@ 12,3 12,4 @@ bevy_twite = { git = "https://gitlab.com/ghostlyzsh/twite.git" }
bevy_rapier2d = "0.23.0"
rand = "0.8.5"
tracing-subscriber = "0.3"
starkingdoms-common = { version = "0.1", path = "../starkingdoms-common" }
\ No newline at end of file

M starkingdoms-api/Cargo.toml => starkingdoms-api/Cargo.toml +3 -1
@@ 26,4 26,6 @@ password-hash = "0.5"
rs-snowflake = "0.6"
jwt = "0.16"
sha2 = "0.10"
hmac = "0.12"
\ No newline at end of file
hmac = "0.12"
starkingdoms-common = { version = "0.1", path = "../starkingdoms-common" }
diesel_json = "0.2"
\ No newline at end of file

A starkingdoms-api/migrations/2023-11-30-181014_create_table_savefiles/down.sql => starkingdoms-api/migrations/2023-11-30-181014_create_table_savefiles/down.sql +1 -0
@@ 0,0 1,1 @@
DROP TABLE savefiles;
\ No newline at end of file

A starkingdoms-api/migrations/2023-11-30-181014_create_table_savefiles/up.sql => starkingdoms-api/migrations/2023-11-30-181014_create_table_savefiles/up.sql +5 -0
@@ 0,0 1,5 @@
CREATE TABLE savefiles (
    id BIGINT NOT NULL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id),
    save_data jsonb NOT NULL
);
\ No newline at end of file

A starkingdoms-api/migrations/2023-11-30-183150_alter_table_users_add_latest_savefile/down.sql => starkingdoms-api/migrations/2023-11-30-183150_alter_table_users_add_latest_savefile/down.sql +1 -0
@@ 0,0 1,1 @@
ALTER TABLE users DROP COLUMN latest_savefile;
\ No newline at end of file

A starkingdoms-api/migrations/2023-11-30-183150_alter_table_users_add_latest_savefile/up.sql => starkingdoms-api/migrations/2023-11-30-183150_alter_table_users_add_latest_savefile/up.sql +1 -0
@@ 0,0 1,1 @@
ALTER TABLE users ADD COLUMN latest_savefile BIGINT NULL REFERENCES savefiles(id);
\ No newline at end of file

M starkingdoms-api/src/models.rs => starkingdoms-api/src/models.rs +13 -0
@@ 15,6 15,8 @@
//     along with this program.  If not, see <https://www.gnu.org/licenses/>.

use diesel::{Identifiable, Insertable, Queryable, Selectable};
use diesel_json::Json;
use starkingdoms_common::PlayerSaveFile;

#[derive(Queryable, Selectable, Insertable, Identifiable, Debug, PartialEq, Clone)]
#[diesel(table_name = crate::schema::users)]


@@ 24,4 26,15 @@ pub struct User {
    pub username: String,
    pub password_hash: String,
    pub permission_level: i32,
    pub latest_savefile: Option<i64>,
}

#[derive(Queryable, Selectable, Insertable, Identifiable, Debug, PartialEq, Clone)]
#[diesel(table_name = crate::schema::savefiles)]
#[diesel(check_for_backend(diesel::pg::Pg))]
#[diesel(belongs_to(User))]
pub struct Savefile {
    pub id: i64,
    pub user_id: i64,
    pub save_data: Json<PlayerSaveFile>,
}

M starkingdoms-api/src/routes/signup.rs => starkingdoms-api/src/routes/signup.rs +1 -0
@@ 56,6 56,7 @@ pub async fn signup_req(
        username: req.username.to_string(),
        password_hash: hash.to_string(),
        permission_level: 0,
        latest_savefile: None
    };

    handle_error!(

M starkingdoms-api/src/schema.rs => starkingdoms-api/src/schema.rs +11 -0
@@ 1,10 1,21 @@
// @generated automatically by Diesel CLI.

diesel::table! {
    savefiles (id) {
        id -> Int8,
        user_id -> Int8,
        save_data -> Jsonb,
    }
}

diesel::table! {
    users (id) {
        id -> Int8,
        username -> Varchar,
        password_hash -> Varchar,
        permission_level -> Int4,
        latest_savefile -> Nullable<Int8>,
    }
}

diesel::allow_tables_to_appear_in_same_query!(savefiles, users,);

A starkingdoms-common/Cargo.toml => starkingdoms-common/Cargo.toml +9 -0
@@ 0,0 1,9 @@
[package]
name = "starkingdoms-common"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
serde = { version = "1", features = ["derive"] }
\ No newline at end of file

A starkingdoms-common/src/lib.rs => starkingdoms-common/src/lib.rs +7 -0
@@ 0,0 1,7 @@
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
#[serde(tag = "version", content = "data")]
pub enum PlayerSaveFile {
    V1 {}
}
\ No newline at end of file