start of new DB design

Maximilian Kossick mkossick at gmx.de
Wed Jun 6 11:45:40 CEST 2007


On Wednesday 06 June 2007, Maximilian Kossick wrote:
> On Wednesday 06 June 2007, Ian Monroe wrote:
> > Attached is my first crack at redesigning the database for Amarok 2.0.
> > I used the demo version of theKompany.com's Data Architect (though it
> > has no limitations that I could see) to do it. Its not the best piece
> > of software, but at least it doesn't start going wacky like
> > Umbrello...
> >
> > Known problem: currently the 'trackid' primary key is in the 'urls'
> > table, which is why everything is pointed to it. It makes more sense
> > to put it in the 'tracks' table, since thats where all the info is.
> >
> > I added a playlistcurrent table, and a set of tables to handle
> > undo/redo. There are two types of tracks that can be in a playlist,
> > those that are part of the collection and those that are not. So
> > either trackid or externalid in playcurrent goes unused (externalid is
> > a FK for the PK of playlistexternal, I just noticed the latter is
> > missing.) This creates more complications in the undo/redo system.
> >
> > Any other ideas on how to handle that?
>
> How about using commands? I don't think we have to support undo/redo across
> application restarts. That way you could simply store the changes to the
> playlist in memory ( maybe limit the number of supported undo/redo steps)
>
> There's a potential problems with tracks in the playlist that don't exist
> after a restart of amarok anymore. For example, you have a daap track in
> the playlist. What happens if you restart Amarok and the DAAP was stopped
> in the meantime. CollectionManager won't be able to create a track object
> for the url in trackForUrl in that case.

Sorry for replying to myself here, but I just figured out the solution to the 
above problem: I'm going to create a Proxy Track class, which forwards method 
calls to the real Track object if it exists, and returns default or cached 
values if it doesn't. The proxy can even connect to CollectionManager's 
collectionAdded signal, and check if the real track exists when 
CollectionManager emits the signal. yay for object oriented design:)

> > Other then that, I'm looking for some general feedback on what people
> > think of it. I left podcast stuff alone, I'm not sure if people think
> > it needs some work or not. Amazon is fine and simple as it is.
> >
> > Peace,
> > Ian Monroe
>
> Max


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/amarok-devel/attachments/20070606/0b101d71/attachment.pgp 


More information about the Amarok-devel mailing list