Skip to content

Library Rewrite Using Sqlite

Albert Santoni edited this page Aug 14, 2009 · 32 revisions

Library Rewrite Using SQLite

Summary and Rationale

Status: This specification is in drafting. Feel free to add ideas to this page.

This project is already in progress! Check it out on launchpad in the lp:~mixxxdevelopers/mixxx/features_sqlite branch.

Use Cases

  • DJ Bill wants DJ software that has a good library. He's tried Mixxx but its library does not scale to his large collection of music. It is also buggy, and often gets corrupted so he cannot build up quality metadata about his music.
  • Your use case here

Design

Stuff

Database Schemas

Party

Work Breakdown

This work breakdown structure (WBS) will become more detailed as the design above becomes more thorough and complete.

Current Progress

The meat of the project is done. There's still a solid body of work left, but much of it is polish and restoring old features.

From the Mixxx 1.8.0 developer meeting, what Albert has done is:

  • Deleted track.cpp, the source of much pain and misery in our codebase. In other words, I complete ripped out everything to do with the old library code. I also took a sledge hammer to TrackInfoObject, though much of it survived. TIO should be cleaned up an renamed to something sane (like a new Track class) now.
  • Written a new WTrackTableView widget from scratch.
  • Written a new TrackCollection class from scratch, which talks to SQLite through Qt. This class should be renamed TrackDatabase for clarity.
  • Written a new LibraryTableModel class which subclasses QSqlTableModel, which talks to our database. This let's us display our track library using model-view without writing very much code.
  • A bunch of other little things like having the columns resize persistently, making the columns rearrangeable, etc.

From the Mixxx 1.8.0 developer meeting, some of the remaining issues are:

  • rewrite the track editor (right click->properties dialog)
  • searches still block the GUI, make them asynchronous by making introducing some threading into the data models somehow.
  • Library rescanning needs work - Wes Idel sent Albert half a patch to do this in a really nice way. Status of his project is currently unknown though.
  • Playlist support
  • Crate support
  • Browse mode
  • tagging
  • abstraction of track sources (e.g. to allow for ipod source)
  • browse mode
  • Cue/loop storage in the DB
  • bling-bling delegates
  • XML migration strategy (is this even worth it?)
  • bulk BPM detection and other library-wide things

Team

If you're interested in helping to code this feature, sign up your name below:

  • Albert Santoni
  • RJ Ryan
  • Sean Pappalardo
Clone this wiki locally