adds Cargo.lock, updates gitignore, updates SCHEMA with initial table definitions for a couple of tables based on MODELS
This commit is contained in:
parent
4d5c1dda78
commit
684e6cda01
|
@ -6,7 +6,7 @@ target/
|
||||||
|
|
||||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||||
Cargo.lock
|
# Cargo.lock
|
||||||
|
|
||||||
# These are backup files generated by rustfmt
|
# These are backup files generated by rustfmt
|
||||||
**/*.rs.bk
|
**/*.rs.bk
|
||||||
|
@ -14,3 +14,5 @@ Cargo.lock
|
||||||
# MSVC Windows builds of rustc generate these, which store debugging information
|
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||||
*.pdb
|
*.pdb
|
||||||
|
|
||||||
|
# No need to store databases in the git repo
|
||||||
|
**/*.sqlite
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
54
SCHEMA.md
54
SCHEMA.md
|
@ -1 +1,53 @@
|
||||||
# TODO
|
# SCHEMA
|
||||||
|
|
||||||
|
This file represents the initial schema for the various data structures to be stored in the database.
|
||||||
|
|
||||||
|
These schema definitions target SQLite v3.
|
||||||
|
|
||||||
|
# Persons Table
|
||||||
|
The Persons table will contain data about Person entities (see MODELS.md)
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE Persons (
|
||||||
|
id TEXT(36), /* UUIDv4 */
|
||||||
|
remote_id TEXT, /* field to store an arbitrary remote identifier for this Person if they are not local */
|
||||||
|
name TEXT, /* "real" name */
|
||||||
|
handle TEXT, /* also commonly refered to as 'display_name' or 'screen_name', optional (if missing, name will be used as handle) */
|
||||||
|
is_active INTEGER DEFAULT (1), /* bool, default true */
|
||||||
|
is_blocked INTEGER DEFAULT (0), /* bool, default false */
|
||||||
|
created_at INTEGER, /* timestamp */
|
||||||
|
modified_at INTEGER, /* timestamp */
|
||||||
|
modified_by TEXT(36), /* UUIDv4 */
|
||||||
|
deleted_at INTEGER, /* timestamp */
|
||||||
|
deleted_by TEXT(36), /* UUIDv4 */
|
||||||
|
last_seen INTEGER, /* timestamp */
|
||||||
|
shipping_address TEXT, /* optional, should use \n between lines to keep localized format as needed */
|
||||||
|
CONSTRAINT Persons_PK PRIMARY KEY (id),
|
||||||
|
CONSTRAINT Persons_FK FOREIGN KEY (modified_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT Persons_FK_1 FOREIGN KEY (deleted_by) REFERENCES Persons(id)
|
||||||
|
);
|
||||||
|
CREATE UNIQUE INDEX Persons_remote_id_IDX ON Persons (remote_id);
|
||||||
|
CREATE INDEX Persons_name_IDX ON Persons (name);
|
||||||
|
CREATE INDEX Persons_handle_IDX ON Persons (handle);
|
||||||
|
CREATE INDEX Persons_is_active_IDX ON Persons (is_active);
|
||||||
|
CREATE INDEX Persons_is_blocked_IDX ON Persons (is_blocked);
|
||||||
|
CREATE INDEX Persons_deleted_at_IDX ON Persons (deleted_at);
|
||||||
|
```
|
||||||
|
|
||||||
|
# PersonEmails Table
|
||||||
|
The PersonEmails table is a one-to-many lookup table relating a Person to zero or more email addresses
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE PersonEmails (
|
||||||
|
person_id TEXT(36),
|
||||||
|
email TEXT,
|
||||||
|
is_verified INTEGER DEFAULT (0),
|
||||||
|
is_primary INTEGER DEFAULT (0),
|
||||||
|
CONSTRAINT PersonEmails_PK PRIMARY KEY (email),
|
||||||
|
CONSTRAINT PersonEmails_FK FOREIGN KEY (person_id) REFERENCES Persons(id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
CREATE INDEX PersonEmails_person_id_IDX ON PersonEmails (person_id);
|
||||||
|
CREATE INDEX PersonEmails_is_verified_IDX ON PersonEmails (is_verified);
|
||||||
|
CREATE INDEX PersonEmails_is_primary_IDX ON PersonEmails (is_primary);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue