Changes
3 changed files (+14/-21)
-
-
@@ -9,5 +9,6 @@ -- SPDX-License-Identifier: 0BSDCREATE TABLE user_events ( seq INTEGER PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT, event_name TEXT NOT NULL ON CONFLICT ROLLBACK, payload BLOB );
-
-
-
@@ -27,21 +27,23 @@ return fmt.Errorf("Failed to begin transaction for events insertion: %s", err)} defer tx.Rollback() // TODO: Add event name column to events table stmt, err := tx.Prepare("INSERT OR ABORT INTO user_events (payload) VALUES (?)") stmt, err := tx.Prepare("INSERT OR ABORT INTO user_events (payload, event_name) VALUES (?, ?)") if err != nil { return fmt.Errorf("Failed to prepare INSERT statement for event insertion: %s", err) } for _, event := range events { eventName := reflect.TypeOf(event).Name() // event is proto.Message, which is interface type. So we have to // get the type of the one it points to. Without "Indirect()", we get // something like "*event.UserCreated" eventName := reflect.Indirect(reflect.ValueOf(event)).Type().Name() data, err := proto.Marshal(event) if err != nil { return fmt.Errorf("Serializing of %s failed: %s", eventName, err) } if _, err := stmt.Exec(data); err != nil { if _, err := stmt.Exec(data, eventName); err != nil { return fmt.Errorf("Failed to INSERT %s: %s", eventName, err) } }
-
-
-
@@ -28,23 +28,13 @@ password := rand.Text()passwordHash, salt := hashPassword(password) ev := &event.InitialAdminCreationPasswordCreated{ PasswordHash: passwordHash, Salt: salt, } data, err := proto.Marshal(ev) if err != nil { return "", fmt.Errorf("Failed to encode InitialAdminCreationPasswordCreated message: %s", err) } stmt, err := db.Prepare("INSERT OR ABORT INTO user_events (payload) VALUES (?)") if err != nil { return "", fmt.Errorf("Failed to prepare INSERT query: %s", err) } if _, err := stmt.Exec(data); err != nil { return "", fmt.Errorf("Failed to INSERT InitialAdminCreationPasswordCreated: %s", err) if err := insertEvents(db, []proto.Message{ &event.InitialAdminCreationPasswordCreated{ PasswordHash: passwordHash, Salt: salt, }, }); err != nil { return "", fmt.Errorf("Unable to create initial admin creation password: %s", err) } return password, nil
-