Skip to content

Commit

Permalink
remaining not sounds like
Browse files Browse the repository at this point in the history
  • Loading branch information
lachlan-00 committed Mar 19, 2024
1 parent daab0a0 commit 2d38c07
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 17 deletions.
32 changes: 23 additions & 9 deletions src/Module/Playlist/Search/AlbumDiskSearch.php
Expand Up @@ -75,13 +75,19 @@ public function getSql(
}
$parameters = array_merge($parameters, array($input, $input));
break;
case 'catalog':
case 'year':
case 'release_type':
case 'release_status':
case 'barcode':
case 'catalog_number':
case 'version':
case 'release_type':
case 'release_status':
case 'barcode':
case 'catalog_number':
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`album`.`" . $rule[0] . "` SOUNDS LIKE ?)";
} else {
$where[] = "`album`.`" . $rule[0] . "` $operator_sql ?";
}
break;
case 'catalog':
case 'year':
case 'version':
$where[] = "`album`.`" . $rule[0] . "` $operator_sql ?";
$parameters[] = $input;
break;
Expand All @@ -101,7 +107,11 @@ public function getSql(
$table['average'] = "LEFT JOIN (SELECT `object_id`, ROUND(AVG(IFNULL(`rating`.`rating`,0))) AS `avg` FROM `rating` WHERE `rating`.`object_type`='album' GROUP BY `object_id`) AS `average_rating` ON `average_rating`.`object_id` = `album`.`id` ";
break;
case 'favorite':
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album'";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT ((`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album')";
} else {
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album'";
}
$parameters = array_merge($parameters, array($input, $input));
// flag once per user
if (!array_key_exists('favorite', $table)) {
Expand Down Expand Up @@ -336,7 +346,11 @@ public function getSql(
$join['album_map'] = true;
break;
case 'song':
$where[] = "`song`.`title` $operator_sql ?";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`song`.`title` SOUNDS LIKE ?)";
} else {
$where[] = "`song`.`title` $operator_sql ?";
}
$parameters = array_merge($parameters, array($input));
$join['song'] = true;
break;
Expand Down
22 changes: 18 additions & 4 deletions src/Module/Playlist/Search/AlbumSearch.php
Expand Up @@ -75,12 +75,18 @@ public function getSql(
}
$parameters = array_merge($parameters, array($input, $input));
break;
case 'catalog':
case 'year':
case 'release_type':
case 'release_status':
case 'barcode':
case 'catalog_number':
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`album`.`" . $rule[0] . "` SOUNDS LIKE ?)";
} else {
$where[] = "`album`.`" . $rule[0] . "` $operator_sql ?";
}
break;
case 'catalog':
case 'year':
case 'version':
$where[] = "`album`.`" . $rule[0] . "` $operator_sql ?";
$parameters[] = $input;
Expand All @@ -101,7 +107,11 @@ public function getSql(
$table['average'] = "LEFT JOIN (SELECT `object_id`, ROUND(AVG(IFNULL(`rating`.`rating`,0))) AS `avg` FROM `rating` WHERE `rating`.`object_type`='album' GROUP BY `object_id`) AS `average_rating` ON `average_rating`.`object_id` = `album`.`id` ";
break;
case 'favorite':
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album'";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT ((`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album')";
} else {
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `favorite_album_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_album_" . $search_user_id . "`.`object_type` = 'album'";
}
$parameters = array_merge($parameters, array($input, $input));
// flag once per user
if (!array_key_exists('favorite', $table)) {
Expand Down Expand Up @@ -348,7 +358,11 @@ public function getSql(
$join['album_map'] = true;
break;
case 'song':
$where[] = "`song`.`title` $operator_sql ?";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`song`.`title` SOUNDS LIKE ?)";
} else {
$where[] = "`song`.`title` $operator_sql ?";
}
$parameters = array_merge($parameters, array($input));
$join['song'] = true;
break;
Expand Down
25 changes: 22 additions & 3 deletions src/Module/Playlist/Search/ArtistSearch.php
Expand Up @@ -90,6 +90,13 @@ public function getSql(
break;
case 'placeformed':
case 'summary':
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`artist`.`" . $rule[0] . "` SOUNDS LIKE ?)";
} else {
$where[] = "`artist`.`" . $rule[0] . "` $operator_sql ?";
}
$parameters[] = $input;
break;
case 'yearformed':
$where[] = "`artist`.`$rule[0]` $operator_sql ?";
$parameters[] = $input;
Expand Down Expand Up @@ -134,7 +141,11 @@ public function getSql(
$table['average'] = "LEFT JOIN (SELECT `object_id`, ROUND(AVG(IFNULL(`rating`.`rating`,0))) AS `avg` FROM `rating` WHERE `rating`.`object_type`='artist' GROUP BY `object_id`) AS `average_rating` ON `average_rating`.`object_id` = `artist`.`id` ";
break;
case 'favorite':
$where[] = "(`artist`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?) AND `favorite_artist_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_artist_" . $search_user_id . "`.`object_type` = 'artist'";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT ((`artist`.`name` SOUNDS LIKE ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?) AND `favorite_artist_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_artist_" . $search_user_id . "`.`object_type` = 'artist')";
} else {
$where[] = "(`artist`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?) AND `favorite_artist_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_artist_" . $search_user_id . "`.`object_type` = 'artist'";
}
$parameters = array_merge($parameters, array($input, $input));
// flag once per user
if (!array_key_exists('favorite', $table)) {
Expand Down Expand Up @@ -301,12 +312,20 @@ public function getSql(
$parameters[] = $input;
break;
case 'album':
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `artist_map`.`artist_id` IS NOT NULL";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT ((`album`.`name` SOUNDS LIKE ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `artist_map`.`artist_id` IS NOT NULL)";
} else {
$where[] = "(`album`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`album`.`prefix`, ''), ' ', `album`.`name`)) $operator_sql ?) AND `artist_map`.`artist_id` IS NOT NULL";
}
$parameters = array_merge($parameters, array($input, $input));
$join['album'] = true;
break;
case 'song':
$where[] = "`song`.`title` $operator_sql ?";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`song`.`title` SOUNDS LIKE ?)";
} else {
$where[] = "`song`.`title` $operator_sql ?";
}
$parameters = array_merge($parameters, array($input));
$join['song'] = true;
break;
Expand Down
18 changes: 17 additions & 1 deletion src/Module/Playlist/Search/SongSearch.php
Expand Up @@ -144,6 +144,11 @@ public function getSql(
$table['album'] = "LEFT JOIN `album` ON `song`.`album` = `album`.`id`";
break;
case 'artist':
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT ((`artist`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?))";
} else {
$where[] = "(`artist`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?)";
}
$where[] = "(`artist`.`name` $operator_sql ? OR LTRIM(CONCAT(COALESCE(`artist`.`prefix`, ''), ' ', `artist`.`name`)) $operator_sql ?)";
$parameters = array_merge($parameters, array($input, $input));
$join['artist'] = true;
Expand Down Expand Up @@ -172,6 +177,13 @@ public function getSql(
}
break;
case 'composer':
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`song`.`" . $rule[0] . "` SOUNDS LIKE ?)";
} else {
$where[] = "`song`.`" . $rule[0] . "` $operator_sql ?";
}
$parameters[] = $input;
break;
case 'year':
case 'track':
case 'catalog':
Expand Down Expand Up @@ -314,7 +326,11 @@ public function getSql(
$table['average'] = "LEFT JOIN (SELECT `object_id`, ROUND(AVG(IFNULL(`rating`.`rating`,0))) AS `avg` FROM `rating` WHERE `rating`.`object_type`='song' GROUP BY `object_id`) AS `average_rating` ON `average_rating`.`object_id` = `song`.`id` ";
break;
case 'favorite':
$where[] = "`song`.`title` $operator_sql ? AND `favorite_song_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_song_" . $search_user_id . "`.`object_type` = 'song'";
if ($operator_sql === 'NOT SOUNDS LIKE') {
$where[] = "NOT (`song`.`title` SOUNDS LIKE ? AND `favorite_song_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_song_" . $search_user_id . "`.`object_type` = 'song')";
} else {
$where[] = "`song`.`title` $operator_sql ? AND `favorite_song_" . $search_user_id . "`.`user` = " . $search_user_id . " AND `favorite_song_" . $search_user_id . "`.`object_type` = 'song'";
}
$parameters[] = $input;
// flag once per user
if (!array_key_exists('favorite', $table)) {
Expand Down

0 comments on commit 2d38c07

Please sign in to comment.