Multi service user profile support #1314

Closed
ginatrapani opened this Issue Apr 10, 2012 · 4 comments

2 participants

@ginatrapani
ThinkUp LLC member

As per Mule Design's ThinkUp 2.0 redesign, ThinkUp will support the ability to view information about multiple service users in one view.

For example, an administrator on the White House ThinkUp will see the whitehouse Twitter account, White House Facebook Page, and White House Google+ page in a single dashboard or event stream.

This requires several major database migrations. The new table list could look like this:

  • users - ThinkUp users (currently the owners table)
  • profiles - Groups of service users (new table)
  • user_profiles - Profiles users own (new table)
  • connections - ThinkUp connections to various networks (currently the instances table)
  • profile_connections - Profile connections
  • connections_twitter, connections_facebook - Plugin-specific connection data (currently instances_twitter table)
  • service_users - Currently the users table
  • service_posts - Currently the posts table
  • service_follows - Currently the follows table
  • service_favorites - Currently the favorites table

Etc.

Since this is such a major db restructuring, we will probably want to do it in phases. This temporary table can exist between releases if needed:

  • user_connections - Temporary table which directly maps to current owner_instances table. This table will be deprecated once profiles and user_profiles come into play.
@anildash
ThinkUp LLC member

So, starting from a naive question: Why does this require these db migrations? Couldn't we use a lookup to list which services a user has access to, and then merge together data from each of the services on the client side? For example, I can imagine requesting the most recent 5 posts from each service using the ThinkUp API and then interleaving those all into a display similar to Suth's timeline plugin -- couldn't we do that within the app as well, and leave the data in their current tables?

@ginatrapani
ThinkUp LLC member

The database is our default storage place for data. So the application has to know what service users are associated with what profile, and what profiles a ThinkUp user owns. Where store that data if not in the database?

@ginatrapani
ThinkUp LLC member

I should also note: many of the existing table renames listed here aren't necessary to support the new feature, but they will help developers understand the data model better, especially since we're introducing yet another term.

Right now, no one really understands what the difference between an instance and an owner and an user is, and this feature introduces profiles into the mix. So the renames are for developer clarity, and the new tables are to support the new feature.

@ginatrapani
ThinkUp LLC member

Closing due to inactivity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment