Reduce cyclomatic complexity

This commit is contained in:
Neil Alexander 2020-03-17 12:26:56 +00:00
parent 13743919d3
commit 47c1ef2b49
2 changed files with 48 additions and 24 deletions

View file

@ -77,18 +77,9 @@ func (d *Database) StoreEvent(
// Note that the below logic depends on the m.room.create event being the
// first event that is persisted to the database when creating or joining a
// room.
roomVersion := roomserverVersion.DefaultRoomVersion()
// Look for m.room.create events.
if event.Type() == gomatrixserverlib.MRoomCreate {
var createContent gomatrixserverlib.CreateContent
// The m.room.create event contains an optional "room_version" key in
// the event content, so we need to unmarshal that first.
if err = json.Unmarshal(event.Content(), &createContent); err == nil {
if createContent.RoomVersion != nil {
// A room version was specified in the event content.
roomVersion = *createContent.RoomVersion
}
}
var roomVersion gomatrixserverlib.RoomVersion
if roomVersion, err = extractRoomVersionFromCreateEvent(event); err != nil {
return 0, types.StateAtEvent{}, err
}
if roomNID, err = d.assignRoomNID(ctx, nil, event.RoomID(), roomVersion); err != nil {
@ -143,6 +134,27 @@ func (d *Database) StoreEvent(
}, nil
}
func extractRoomVersionFromCreateEvent(event gomatrixserverlib.Event) (
roomVersion gomatrixserverlib.RoomVersion, err error,
) {
// Look for m.room.create events.
if event.Type() != gomatrixserverlib.MRoomCreate {
return
}
roomVersion = roomserverVersion.DefaultRoomVersion()
var createContent gomatrixserverlib.CreateContent
// The m.room.create event contains an optional "room_version" key in
// the event content, so we need to unmarshal that first.
if err = json.Unmarshal(event.Content(), &createContent); err != nil {
return
}
// A room version was specified in the event content?
if createContent.RoomVersion != nil {
roomVersion = *createContent.RoomVersion
}
return
}
func (d *Database) assignRoomNID(
ctx context.Context, txn *sql.Tx,
roomID string, roomVersion gomatrixserverlib.RoomVersion,

View file

@ -99,18 +99,9 @@ func (d *Database) StoreEvent(
// Note that the below logic depends on the m.room.create event being the
// first event that is persisted to the database when creating or joining a
// room.
roomVersion := roomserverVersion.DefaultRoomVersion()
// Look for m.room.create events.
if event.Type() == gomatrixserverlib.MRoomCreate {
var createContent gomatrixserverlib.CreateContent
// The m.room.create event contains an optional "room_version" key in
// the event content, so we need to unmarshal that first.
if err = json.Unmarshal(event.Content(), &createContent); err == nil {
if createContent.RoomVersion != nil {
// A room version was specified in the event content.
roomVersion = *createContent.RoomVersion
}
}
var roomVersion gomatrixserverlib.RoomVersion
if roomVersion, err = extractRoomVersionFromCreateEvent(event); err != nil {
return err
}
if roomNID, err = d.assignRoomNID(ctx, txn, event.RoomID(), roomVersion); err != nil {
@ -172,6 +163,27 @@ func (d *Database) StoreEvent(
}, nil
}
func extractRoomVersionFromCreateEvent(event gomatrixserverlib.Event) (
roomVersion gomatrixserverlib.RoomVersion, err error,
) {
// Look for m.room.create events.
if event.Type() != gomatrixserverlib.MRoomCreate {
return
}
roomVersion = roomserverVersion.DefaultRoomVersion()
var createContent gomatrixserverlib.CreateContent
// The m.room.create event contains an optional "room_version" key in
// the event content, so we need to unmarshal that first.
if err = json.Unmarshal(event.Content(), &createContent); err != nil {
return
}
// A room version was specified in the event content?
if createContent.RoomVersion != nil {
roomVersion = *createContent.RoomVersion
}
return
}
func (d *Database) assignRoomNID(
ctx context.Context, txn *sql.Tx,
roomID string, roomVersion gomatrixserverlib.RoomVersion,