func walkthroughDBErrorConverter(err *pq.Error) ab.VerboseError {
	ve := ab.NewVerboseError(err.Message, err.Detail)

	// HOOK: convertWalkthroughDBError()

	return ve
}
func userDBErrorConverter(err *pq.Error) ab.VerboseError {
	ve := ab.NewVerboseError(err.Message, err.Detail)

	// HOOK: convertUserDBError()

	return ve
}
func validateWalkthrough(e *Walkthrough) (_err error) {
	if e.Severity != "tour" && e.Severity != "content" && e.Severity != "configuration" {
		return ab.NewVerboseError("", "invalid severity")
	}

	if e.Name == "" {
		return ab.NewVerboseError("", "name must not be empty")
	}

	if e.UID == "" {
		return ab.NewVerboseError("", "uid must not be empty")
	}

	if len(e.Steps) == 0 {
		return ab.NewVerboseError("", "a walkthrough must have at least one step")
	}

	return nil
}