Define table schema and CSVs to populate the database
TL;DR: - Created src/init.sql, which defines the tables - Created a data/ directory to house .csv data to populate our db - Updated the README with usage instructions
This commit is contained in:
parent
722205b081
commit
df13b761ff
5 changed files with 82 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
*.db
|
||||
*.sqlite3
|
||||
*.db-shm
|
||||
*.db-wal
|
44
README.md
44
README.md
|
@ -0,0 +1,44 @@
|
|||
# TopTal take-home #2
|
||||
|
||||
All of the commands defined herein should be run from the top-level directory of
|
||||
this repository (i.e. the directory in which this file exists).
|
||||
|
||||
## Database
|
||||
|
||||
Create a new database named `db.sqlite3` with:
|
||||
|
||||
```shell
|
||||
$ sqlite3 db.sqlite3
|
||||
```
|
||||
|
||||
Initialize the schema with:
|
||||
|
||||
```
|
||||
sqlite> .read src/init.sql
|
||||
```
|
||||
|
||||
You can verify that you successfully initialized the database by running:
|
||||
|
||||
```
|
||||
sqlite> .tables
|
||||
sqlite> .schema Accounts
|
||||
sqlite> .schema Trips
|
||||
```
|
||||
|
||||
Populate the database with some dummy values using the following:
|
||||
|
||||
```
|
||||
sqlite> PRAGMA foreign_keys = on;
|
||||
sqlite> .mode csv
|
||||
sqlite> .import data/accounts.csv Accounts
|
||||
sqlite> .import data/trips.csv Trips
|
||||
```
|
||||
|
||||
You can verify you successfully populated the tables with:
|
||||
|
||||
```
|
||||
sqlite> .mode columns
|
||||
sqlite> .headers on
|
||||
sqlite> SELECT * FROM Accounts;
|
||||
sqlite> SELECT * FROM Trips;
|
||||
```
|
3
data/accounts.csv
Normal file
3
data/accounts.csv
Normal file
|
@ -0,0 +1,3 @@
|
|||
mimi,testing,miriamwright@google.com,user,
|
||||
bill,testing,wpcarro@gmail.com,manager,
|
||||
wpcarro,testing,wpcarro@google.com,admin,
|
|
3
data/trips.csv
Normal file
3
data/trips.csv
Normal file
|
@ -0,0 +1,3 @@
|
|||
mimi,Rome,2020-08-10,2020-15-30,Heading home before the upcoming trip with Panarea.
|
||||
mimi,Panarea,2020-08-15,2020-05-30,Exciting upcoming trip with Matt and Sarah!
|
||||
mimi,London,2020-08-30,2020-08-30,Heading back to London...
|
|
31
src/init.sql
Normal file
31
src/init.sql
Normal file
|
@ -0,0 +1,31 @@
|
|||
-- Run `.read init.sql` from within a SQLite3 REPL to initialize the tables we
|
||||
-- need for this application. This will erase all current entries, so use with
|
||||
-- caution.
|
||||
-- Make sure to set `PRAGMA foreign_keys = on;` when transacting with the
|
||||
-- database.
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DROP TABLE IF EXISTS Accounts;
|
||||
DROP TABLE IF EXISTS Trips;
|
||||
|
||||
CREATE TABLE Accounts (
|
||||
username TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
email TEXT NOT NULL UNIQUE,
|
||||
role TEXT NOT NULL,
|
||||
profilePicture BLOB,
|
||||
PRIMARY KEY (username)
|
||||
);
|
||||
|
||||
CREATE TABLE Trips (
|
||||
username TEXT NOT NULL,
|
||||
destination TEXT NOT NULL,
|
||||
startDate TEXT NOT NULL, -- YYYY-MM-DD
|
||||
endDate TEXT NOT NULL, -- YYYY-MM-DD
|
||||
comment TEXT NOT NULL,
|
||||
PRIMARY KEY (username, destination, startDate),
|
||||
FOREIGN KEY (username) REFERENCES Accounts ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMIT;
|
Loading…
Reference in a new issue