diff options
-rw-r--r-- | src/gracha.go | 34 | ||||
-rw-r--r-- | tests/gracha.go | 26 | ||||
-rw-r--r-- | tests/queries.sql | 15 |
3 files changed, 10 insertions, 65 deletions
diff --git a/src/gracha.go b/src/gracha.go index c240dd3..e41c20b 100644 --- a/src/gracha.go +++ b/src/gracha.go @@ -76,7 +76,6 @@ type userT struct{ email string salt []byte pwhash []byte - metadata map[string]interface{} confirmed bool } @@ -87,7 +86,6 @@ type sessionT struct{ userID guuid.UUID // type_ string revoked_at *time.Time - metadata map[string]interface{} } type consumerT struct{ @@ -161,8 +159,7 @@ func createTablesSQL(prefix string) queryT { uuid BLOB NOT NULL UNIQUE, email TEXT NOT NULL UNIQUE, salt BLOB NOT NULL UNIQUE, - pwhash BLOB NOT NULL, - metadata TEXT + pwhash BLOB NOT NULL ); CREATE TABLE IF NOT EXISTS "%s_confirmation_attempts" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, @@ -197,7 +194,6 @@ func createTablesSQL(prefix string) queryT { id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL REFERENCES "%s_users"(id), role TEXT NOT NULL, - metadata TEXT, UNIQUE (user_id, role) ); CREATE TABLE IF NOT EXISTS "%s_role_changes" ( @@ -211,19 +207,17 @@ func createTablesSQL(prefix string) queryT { id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL DEFAULT (%s), uuid BLOB NOT NULL UNIQUE, - user_id INTEGER NOT NULL REFERENCES "%s_users"(id), + user_id INTEGER NOT NULL REFERENCES "%s_users"(id) -- type TEXT NOT NULL, -- revoked_at TEXT, -- revoker_id INTEGER REFERENCES "%s_users"(id), -- FIXME: add provenance: login, refresh, confirmation, etc. - metadata TEXT ); CREATE TABLE IF NOT EXISTS "%s_attempts" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL DEFAULT (%s), user_id INTEGER REFERENCES "%s_users"(id), - session_id INTEGER REFERENCES "%s_sessions"(id), - metadata TEXT + session_id INTEGER REFERENCES "%s_sessions"(id) ); CREATE TABLE IF NOT EXISTS "%s_audit" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, @@ -231,8 +225,7 @@ func createTablesSQL(prefix string) queryT { uuid BLOB NOT NULL UNIQUE, attribute TEXT NOT NULL, value TEXT NOT NULL, - op BOOLEAN NOT NULL, - metadata TEXT + op BOOLEAN NOT NULL ); ` return queryT{ @@ -506,7 +499,7 @@ func confirmStmt( func byEmailSQL(prefix string) queryT { // FIXME: rewrite as LEFT JOIN? const tmpl_read = ` - SELECT id, timestamp, uuid, salt, pwhash, metadata, ( + SELECT id, timestamp, uuid, salt, pwhash, ( CASE WHEN EXISTS ( SELECT id FROM "%s_user_confirmations" WHERE user_id = ( @@ -543,7 +536,6 @@ func byEmailStmt( var ( timestr string user_id_bytes []byte - metadatastr sql.NullString ) err := readStmt.QueryRow(email, email).Scan( &user.id, @@ -551,7 +543,6 @@ func byEmailStmt( &user_id_bytes, &user.salt, &user.pwhash, - &metadatastr, &user.confirmed, ) if err != nil { @@ -564,21 +555,6 @@ func byEmailStmt( return userT{}, err } - if metadatastr.Valid { - err := json.Unmarshal( - []byte(metadatastr.String), - &user.metadata, - ) - if err != nil { - g.Warning( - "failed to parse metadata field", - "sqlite-json-unmarshal-error", - "userID", user.uuid.String(), - "error", err, - ) - } - } - return user, nil } diff --git a/tests/gracha.go b/tests/gracha.go index 3c834ef..6991e56 100644 --- a/tests/gracha.go +++ b/tests/gracha.go @@ -432,32 +432,6 @@ func test_byEmailStmt() { user2.confirmed = true g.TAssertEqual(user2, user3) }) - - g.Testing("if there is metadata content it is included", func() { - u := newUser() - - _, err := register(u.userID, u.email, u.salt, u.pwhash) - g.TErrorIf(err) - - user1, err := byEmail(u.email) - g.TErrorIf(err) - g.TAssertEqual(user1.metadata == nil, true) - - const tmpl_write = ` - UPDATE "%s_users" - SET METADATA = '{ "key": "value" }' - WHERE uuid = ?; - ` - qWrite := fmt.Sprintf(tmpl_write, prefix) - _, err = db.Exec(qWrite, u.userID[:]) - g.TErrorIf(err) - - expected := map[string]interface{}{"key": "value"} - - user2, err := byEmail(u.email) - g.TErrorIf(err) - g.TAssertEqual(user2.metadata, expected) - }) } func test_loginStmt() { diff --git a/tests/queries.sql b/tests/queries.sql index c44a6c5..7e20ae9 100644 --- a/tests/queries.sql +++ b/tests/queries.sql @@ -7,8 +7,7 @@ uuid BLOB NOT NULL UNIQUE, email TEXT NOT NULL UNIQUE, salt BLOB NOT NULL UNIQUE, - pwhash BLOB NOT NULL, - metadata TEXT + pwhash BLOB NOT NULL ); CREATE TABLE IF NOT EXISTS "gracha_confirmation_attempts" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, @@ -43,7 +42,6 @@ id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL REFERENCES "gracha_users"(id), role TEXT NOT NULL, - metadata TEXT, UNIQUE (user_id, role) ); CREATE TABLE IF NOT EXISTS "gracha_role_changes" ( @@ -57,19 +55,17 @@ id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')), uuid BLOB NOT NULL UNIQUE, - user_id INTEGER NOT NULL REFERENCES "gracha_users"(id), + user_id INTEGER NOT NULL REFERENCES "gracha_users"(id) -- type TEXT NOT NULL, -- revoked_at TEXT, -- revoker_id INTEGER REFERENCES "gracha_users"(id), -- FIXME: add provenance: login, refresh, confirmation, etc. - metadata TEXT ); CREATE TABLE IF NOT EXISTS "gracha_attempts" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, timestamp TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')), user_id INTEGER REFERENCES "gracha_users"(id), - session_id INTEGER REFERENCES "gracha_sessions"(id), - metadata TEXT + session_id INTEGER REFERENCES "gracha_sessions"(id) ); CREATE TABLE IF NOT EXISTS "gracha_audit" ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, @@ -77,8 +73,7 @@ uuid BLOB NOT NULL UNIQUE, attribute TEXT NOT NULL, value TEXT NOT NULL, - op BOOLEAN NOT NULL, - metadata TEXT + op BOOLEAN NOT NULL ); @@ -88,7 +83,7 @@ -- write: -- read: - SELECT id, timestamp, uuid, salt, pwhash, metadata, ( + SELECT id, timestamp, uuid, salt, pwhash, ( CASE WHEN EXISTS ( SELECT id FROM "gracha_user_confirmations" WHERE user_id = ( |