Skip to content

Commit

Permalink
search is mostly working, but not finished being tested
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeremy Mill committed Nov 18, 2015
1 parent 1fd87b0 commit ea23b55
Show file tree
Hide file tree
Showing 4 changed files with 118 additions and 31 deletions.
11 changes: 10 additions & 1 deletion TeamDBAwesome/TeamDBAwesome/Controllers/SearchController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
Expand All @@ -7,6 +8,7 @@
using System.Text.RegularExpressions;
using System.Web.Http;
using TeamDBAwesome.Models;
using TeamDBAwesome.SqlService;

namespace TeamDBAwesome.Controllers
{
Expand Down Expand Up @@ -54,6 +56,13 @@ public HttpResponseMessage Get(string search="")
dbsearch.Composer = search;
dbsearch.Genre = search;
}

MySqlService service = new MySqlService();
SearchResult result = service.Search(dbsearch);

string serialized = JsonConvert.SerializeObject(result);
message.Content = new StringContent(serialized);

//return it
return message;
}
Expand Down
7 changes: 5 additions & 2 deletions TeamDBAwesome/TeamDBAwesome/Controllers/TestController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
Expand Down Expand Up @@ -51,11 +52,13 @@ public HttpResponseMessage Get()

MySqlService service = new MySqlService();

service.Search(search);
SearchResult result = service.Search(search);
string serialized = JsonConvert.SerializeObject(result);

//return an OK with the int of the new user
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

response.Content = new StringContent(serialized);

return response;

Expand Down
15 changes: 13 additions & 2 deletions TeamDBAwesome/TeamDBAwesome/Models/SearchResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,18 @@ public class SearchResult
public List<Artist> Artist { get; set; }
public List<Track> Track { get; set; }
//pretty sure I don't need this
//public List<Composer> Composer { get; set; }
public List<Genre> Genre { get; set; }
public List<Track> Composer { get; set; }
public List<Genre> Genre { get; set; }

public SearchResult()
{
Media = new List<Media>();
Album = new List<Album>();
Artist = new List<Artist>();
Track = new List<Track>();
Composer = new List<Track>();
Genre = new List<Genre>();
}

}
}
116 changes: 90 additions & 26 deletions TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Web;
using MySql.Data.MySqlClient;
using TeamDBAwesome.Models;
using System.Diagnostics;

namespace TeamDBAwesome.SqlService
{
Expand Down Expand Up @@ -185,46 +186,109 @@ public SearchResult Search(Search search)

//do the search
//need to write some logic to see any of the fields are blank, otherwise do each search, and add them to the lists in result
string mediaQuery = "select * from chinook.mediatype where name like \'%" + search.Media + "%\' ";
string albumQuery = "select * from chinook.album where name like \'%" + search.Album + "%\' ";
string artistQuery = "select * from chinook.artist where name like \'%" + search.Artist + "%\' ";
string trackQuery = "select * from chinook.track where name like \'%" + search.Track + "%\' ";
string composerQuery = "select * from chinook.track where composer like \'%" + search.Composer + "%\' ";
string genreQuery = "select * from chinook.genre where name like \'%" + search.Genre + "%\' ";

MySqlCommand cmd = new MySqlCommand(trackQuery, SqlConn);
MySqlDataReader reader = cmd.ExecuteReader();
Dictionary<string, string> queries = new Dictionary<string, string>();

queries.Add("Media", "select * from chinook.mediatype where name like \'%" + search.Media + "%\' ");
queries.Add("Album", "select * from chinook.album where Title like \'%" + search.Album + "%\' ");
queries.Add("Artist", "select * from chinook.artist where name like \'%" + search.Artist + "%\' ");
queries.Add("Track", "select * from chinook.track where name like \'%" + search.Track + "%\' ");
queries.Add("Composer", "select * from chinook.track where composer like \'%" + search.Composer + "%\' ");
queries.Add("Genre", "select * from chinook.genre where name like \'%" + search.Genre + "%\' ");

//declare theresult and init it
SearchResult searchresult = new SearchResult();

while(reader.Read())
//declare the cmd and the reader
//MySqlCommand cmd;


foreach (var key in queries)
{
if(search.Track != "")
{
searchresult.Track.Add(new Track
MySqlCommand cmd = new MySqlCommand(key.Value, SqlConn);
MySqlDataReader reader;
reader = cmd.ExecuteReader();

while(reader.Read())
{
if(search.GetType().GetProperty(key.Key).GetValue(search).ToString() != "")
{
if(key.Key == "Media")
{
searchresult.Media.Add(new Media
{
MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)),
Name = GetDBString("Name", reader)
});
}
else if (key.Key == "Album")
{
searchresult.Album.Add(new Album
{
AlbumId = int.Parse(GetDBString("AlbumId", reader)),
ArtistId = int.Parse(GetDBString("ArtistId", reader)),
Title = GetDBString("Title", reader)
});
}
else if( key.Key == "Artist")
{
AlbumId = int.Parse(GetDBString("AlbumID", reader)),
TrackId = int.Parse(GetDBString("TrackId", reader)),
Name = GetDBString("Name", reader),
MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)),
GenreId = int.Parse(GetDBString("GenreId", reader)),
Composer = GetDBString("Composer", reader),
Milliseconds = int.Parse(GetDBString("Milliseconds", reader)),
Bytes = int.Parse(GetDBString("Bytes", reader)),
UnitPrice = float.Parse(GetDBString("UnitPrice", reader))
});
searchresult.Artist.Add(new Artist
{
ArtistId = int.Parse(GetDBString("ArtistId", reader)),
Name = GetDBString("Name", reader)
});
}
else if (key.Key == "Track")
{
searchresult.Track.Add(new Track
{
AlbumId = int.Parse(GetDBString("AlbumID", reader)),
TrackId = int.Parse(GetDBString("TrackId", reader)),
Name = GetDBString("Name", reader),
MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)),
GenreId = int.Parse(GetDBString("GenreId", reader)),
Composer = GetDBString("Composer", reader),
Milliseconds = int.Parse(GetDBString("Milliseconds", reader)),
Bytes = int.Parse(GetDBString("Bytes", reader)),
UnitPrice = float.Parse(GetDBString("UnitPrice", reader))
});
}
else if (key.Key == "Composer")
{
searchresult.Composer.Add(new Track
{
AlbumId = int.Parse(GetDBString("AlbumID", reader)),
TrackId = int.Parse(GetDBString("TrackId", reader)),
Name = GetDBString("Name", reader),
MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)),
GenreId = int.Parse(GetDBString("GenreId", reader)),
Composer = GetDBString("Composer", reader),
Milliseconds = int.Parse(GetDBString("Milliseconds", reader)),
Bytes = int.Parse(GetDBString("Bytes", reader)),
UnitPrice = float.Parse(GetDBString("UnitPrice", reader))
});
}
else if(key.Key == "Genre")
{
searchresult.Genre.Add(new Genre
{
GenreId = int.Parse(GetDBString("GenreId", reader)),
Name = GetDBString("Name", reader)
});
}
}
}
reader.Close();
}


result = searchresult;
return result;

}
else
{
return result;
}


return result;
}
}
}

0 comments on commit ea23b55

Please sign in to comment.