Commit Graph

92 Commits

Author SHA1 Message Date
projectmoon b042a32f82 RPC-ify update attribute API. 2021-01-02 22:11:58 +00:00
projectmoon f2edd91a72 Update skill value as rpc API (though not grpc) 2021-01-02 22:11:58 +00:00
projectmoon ee8f7e58e8 Implement updating skills. 2021-01-02 22:11:58 +00:00
projectmoon 0ca23b46c6 Switch to oneof field for game-specific information and values.
Having specific protobuf types for different game systems using the
same rule set (e.g. all the Chronicles of Darkness games) is untenable
because protobuf does not have inheritance or mixins.

Instead, we have one generic character sheet type, with a oneof field
for the game specifics. This will be used in conjunction with the
character's game system (stored in db) to render different stuff on
the character templates.

Without this, we'd wind up having duplicate templates, a lot more code
for handling specifics of each game system, and so on.
2021-01-01 23:34:50 +00:00
projectmoon 149b843927 Remove versioning from data type enum members 2021-01-01 22:56:41 +00:00
projectmoon 7a71d5ad0a Implement updating skills on the backend. 2021-01-01 00:40:48 +00:00
projectmoon 0b899293ca Update cargo dependencies. 2020-12-31 22:32:32 +00:00
projectmoon c35ac19060 Add ability to edit changeling characters. 2020-12-31 22:28:00 +00:00
projectmoon 255b55c8de Add skills to the character editor. 2020-12-31 22:21:05 +00:00
projectmoon 6156bba34d Skip loading owner of character for API. 2020-12-31 20:19:45 +00:00
projectmoon 2e2cf30755 Update readme for SQLx. 2020-12-31 14:11:28 +00:00
projectmoon ce4e02594d Add ability to pass in custom database path. 2020-12-31 14:11:28 +00:00
projectmoon 62f05060c0 Move migrations to refinery + barrel, enable 'offline' sqlx query checking 2020-12-31 14:11:28 +00:00
projectmoon e148b45edd Convert load user queries to compile-checked 2020-12-31 14:11:28 +00:00
projectmoon fb1c21d710 Clear out unused imports in db.rs 2020-12-31 14:11:28 +00:00
projectmoon 6f9d1e00bc Use sqlx result in db.rs 2020-12-31 14:11:28 +00:00
projectmoon 53501c3747 Convert character db methods to compile-checked queries 2020-12-31 14:11:28 +00:00
projectmoon 5ea07b8953 Rip out Diesel in favor of SQLx.
The primary benefit of this is to avoid Rocket's database integration,
which has become problematic in this codebase with the update to the
new async style. Because the async database API is actually
synchronous under the hood, this introduces some annoying lifetime
requirements that basically force us to use owned data everywhere.

The original pattern was to have a separate data layer that could
invoke queries from `self` (the db connection). By using a true async
database driver, we can get this back, because the lifetimes are once
again flexible instead of the ones forced by Rocket.
2020-12-31 14:11:28 +00:00
projectmoon bf2f49f68a Load character in API as common function. Fix attribute editing. 2020-12-29 14:01:07 +00:00
projectmoon 1f6f6432e1 Implement editing of attributes. 2020-12-27 21:49:08 +00:00
projectmoon 4023bdc08a Start of adding protobuf-based editable character sheet. 2020-12-27 21:03:10 +00:00
projectmoon 0c613cacda Update cargo.lock 2020-12-14 23:21:09 +00:00
projectmoon 2e8197eedc Change global databases to debug (for development) 2020-12-14 19:06:21 +00:00
projectmoon 8c8ed4f6ef Migrate to Rocket 0.5.
Rocket 0.5 is a major uprade, rewriting most of Rocket to be async.
Required many changes through the code, especially the database layer.
The new Rocket async database calls require Futures with 'static
lifetimes.

General:
 - Move to stable rust.
 - Most of codebase is now async.
 - Rocket migrations (e.g. Cookies to CookieJar).

Database:
 - Switched to owned data (&str -> String) for inserts because of the
   'static lifetime requirement on Rocket's DB future.
 - All database methods now asynchronous.

Pages:
 - Changed various routes to async.
 - Needed to add clone calls to some places because we need to use
   owned data multiple times (registration).
2020-12-13 21:58:39 +00:00
projectmoon 4024f32621 Serve protobuf files statically. 2020-12-09 22:21:52 +00:00
projectmoon b40b0b3a5c Super basic readme. 2020-12-09 21:45:56 +00:00
projectmoon 5d7d8054e2 Finished and mostly clean new character flow.
Lots of changes and reorganization to support the ability to create
new characters.
2020-12-09 21:25:31 +00:00
projectmoon f34383d0c0 Clearer function names in new character flow. 2020-12-09 08:58:49 +00:00
projectmoon 7b4ffc3a02 Basic albeit mostly broken flow for creating new character. 2020-12-08 22:28:27 +00:00
projectmoon 1f07856e66 Dynamically deserialize character data. 2020-12-08 22:28:27 +00:00
projectmoon 245bd4f2cc Switch character data type to an enum, including schema patch.
Schema patch required because the diesel enum derive crate does not
seem to deal with print-schema for sqlite.
2020-12-08 22:28:27 +00:00
projectmoon 0c09a3fdef Add serde serialization suppor to proto types. 2020-12-08 08:47:34 +00:00
projectmoon 8b3e8c70ae Serialize characters as protobufs. Skeletal character creation.
Implements the absolute basics of the character creation flow, AKA
most things are missing. Integrates a method of storing character
data, support for that in the database, and a working character
creation page.

The only thing the page does at the moment is create a hardcoded basic
CofD character sheet and save it to the database. There is no ability
to change game system, fill in extra details, etc. There's also no
ability to edit anything.

Also added basic links to the registration and create new character
pages.
2020-12-07 22:37:18 +00:00
projectmoon 8638c1d598 Clean up 'TemplateContext', handle character visibility. 2020-12-05 20:15:14 +00:00
projectmoon 10d5f30e5a User accounts, DAO trait, registration.
Not very thorough, but it does work.
2020-12-05 19:50:11 +00:00
projectmoon 5968f6458d Remove example text on the logged-in index page. 2020-12-03 23:40:34 +00:00
projectmoon 07ebf7233e Load a (non existing) character list on the home page 2020-12-03 23:39:55 +00:00
projectmoon 1262308bf6 New character route, and login cleanup. 2020-12-03 19:45:56 +00:00
projectmoon 42ff4c0b31 Better name for main login route. Remove unused feature from main. 2020-12-03 19:35:45 +00:00
projectmoon 3dac266478 Remove development cookie key from rocket.toml 2020-12-03 19:30:09 +00:00
projectmoon 21e149e0ed Add license. 2020-12-03 19:21:09 +00:00
projectmoon 092da7490f First commit; prototype state. 2020-12-03 19:21:09 +00:00