Sign up method.
[recipes.git] / backend / sql / version_1.sql
index 9673d25..4457863 100644 (file)
@@ -8,16 +8,38 @@ CREATE TABLE [Version] (
 CREATE TABLE [User] (
     [id] INTEGER PRIMARY KEY,
     [email] TEXT NOT NULL,
-    [password] TEXT NOT NULL, -- Hashed and salted.
-    [name] TEXT NOT NULL
+    [name] TEXT,
+    [default_servings] INTEGER DEFAULT 4,
+
+    [password] TEXT NOT NULL, -- argon2(password_plain, salt).
+
+    [creation_datetime] DATETIME NOT NULL, -- Updated when the validation email is sent.
+    [validation_token] TEXT -- If not null then the user has not validated his account yet.
 );
 
+CREATE UNIQUE INDEX [User_email_index] ON [User] ([email]);
+
+CREATE TABLE [UserLoginToken] (
+    [id] INTEGER PRIMARY KEY,
+    [user_id] INTEGER NOT NULL,
+    [last_login_datetime] DATETIME,
+    [token] TEXT NOT NULL, --  24 alphanumeric character token. Can be stored in a cookie to be able to authenticate without a password.
+
+    [ip] INTEGER,
+    [user_agent] TEXT,
+
+    FOREIGN KEY([user_id]) REFERENCES [User]([id])
+);
+
+CREATE INDEX [UserLoginToken_token_index] ON [UserLoginToken] ([token]);
+
 CREATE TABLE [Recipe] (
     [id] INTEGER PRIMARY KEY,
     [user_id] INTEGER NOT NULL,
     [title] TEXT NOT NULL,
     [estimate_time] INTEGER,
     [description] TEXT,
+    [servings] INTEGER DEFAULT 4,
 
     FOREIGN KEY([user_id]) REFERENCES [User]([id])
 );