From e0d6417e36aa8a6c6c705e186ffa81ab3ca2d141 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Sun, 15 Aug 2010 12:14:04 +0200 Subject: [PATCH] IMDb SQLite database: add get_cast method --- src/imdb/imdb-sqlite.vala | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/imdb/imdb-sqlite.vala b/src/imdb/imdb-sqlite.vala index a49160c..ff9edcb 100644 --- a/src/imdb/imdb-sqlite.vala +++ b/src/imdb/imdb-sqlite.vala @@ -406,6 +406,36 @@ class IMDbSqlite : Object { return ""; } + public List get_cast (string title) { + int rowid; + string sql = "SELECT Name,Character FROM Actors,People WHERE TitleID IN (SELECT rowid FROM Movies WHERE Title=\"%s\") AND ActorID=People.rowid AND Number>0 ORDER BY NUMBER LIMIT 3".printf (title); + Statement stmt; + int rc; + int count = 0; + var cast = new List (); + + if (!movie_exists (title, out rowid)) + return null; + + rc = db.prepare_v2 (sql, -1, out stmt); + if (rc != Sqlite.OK) { + stderr.printf ("SQL error: %d, %s\n", rc, db.errmsg ()); + return null; + } + + do { + rc = stmt.step (); + if (rc == Sqlite.ROW) { + var role = new Role (); + role.actor_name = stmt.column_text (0); + role.character = stmt.column_text (1); + cast.append (role); + } + } while (rc == Sqlite.ROW); + + return cast; + } + public int clear () { int rc; -- 1.7.9.5