|
@@ -90,6 +90,7 @@ export interface PageQueryOptions {
|
|
|
pageIndex: number; // 页码(从0开始)
|
|
pageIndex: number; // 页码(从0开始)
|
|
|
pageSize: number; // 每页数量
|
|
pageSize: number; // 每页数量
|
|
|
type?: number; // 媒体类型过滤
|
|
type?: number; // 媒体类型过滤
|
|
|
|
|
+ isShowFileName?: boolean; // 是否显示文件名(影响排序字段选择)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
export interface PageQueryResult {
|
|
export interface PageQueryResult {
|
|
@@ -614,12 +615,12 @@ export default class MediaTable {
|
|
|
/**
|
|
/**
|
|
|
* 按艺术家查询歌曲列表(用于艺术家详情页)
|
|
* 按艺术家查询歌曲列表(用于艺术家详情页)
|
|
|
*/
|
|
*/
|
|
|
- public async querySongsByArtist(artist: string, sortType?: number): Promise<VideoItem[]> {
|
|
|
|
|
|
|
+ public async querySongsByArtist(artist: string, sortType?: number, isShowFileName?: boolean): Promise<VideoItem[]> {
|
|
|
try {
|
|
try {
|
|
|
const predicates = new relationalStore.RdbPredicates(RdbUtils.MEDIA_TABLE.tableName);
|
|
const predicates = new relationalStore.RdbPredicates(RdbUtils.MEDIA_TABLE.tableName);
|
|
|
predicates.equalTo(DB_COLUMNS.ARTIST, artist);
|
|
predicates.equalTo(DB_COLUMNS.ARTIST, artist);
|
|
|
predicates.equalTo(DB_COLUMNS.TYPE, CommonConstants.TYPE_LOCAL);
|
|
predicates.equalTo(DB_COLUMNS.TYPE, CommonConstants.TYPE_LOCAL);
|
|
|
- this.applySortConditions(predicates, sortType);
|
|
|
|
|
|
|
+ this.applySortConditions(predicates, sortType, isShowFileName);
|
|
|
|
|
|
|
|
return await new Promise((resolve, reject) => {
|
|
return await new Promise((resolve, reject) => {
|
|
|
this.accountTable.query(predicates, (resultSet: relationalStore.ResultSet) => {
|
|
this.accountTable.query(predicates, (resultSet: relationalStore.ResultSet) => {
|
|
@@ -640,12 +641,12 @@ export default class MediaTable {
|
|
|
/**
|
|
/**
|
|
|
* 按专辑查询歌曲列表(用于专辑详情页)
|
|
* 按专辑查询歌曲列表(用于专辑详情页)
|
|
|
*/
|
|
*/
|
|
|
- public async querySongsByAlbum(album: string, sortType?: number): Promise<VideoItem[]> {
|
|
|
|
|
|
|
+ public async querySongsByAlbum(album: string, sortType?: number, isShowFileName?: boolean): Promise<VideoItem[]> {
|
|
|
try {
|
|
try {
|
|
|
const predicates = new relationalStore.RdbPredicates(RdbUtils.MEDIA_TABLE.tableName);
|
|
const predicates = new relationalStore.RdbPredicates(RdbUtils.MEDIA_TABLE.tableName);
|
|
|
predicates.equalTo(DB_COLUMNS.ALBUM, album);
|
|
predicates.equalTo(DB_COLUMNS.ALBUM, album);
|
|
|
predicates.equalTo(DB_COLUMNS.TYPE, CommonConstants.TYPE_LOCAL);
|
|
predicates.equalTo(DB_COLUMNS.TYPE, CommonConstants.TYPE_LOCAL);
|
|
|
- this.applySortConditions(predicates, sortType);
|
|
|
|
|
|
|
+ this.applySortConditions(predicates, sortType, isShowFileName);
|
|
|
|
|
|
|
|
return await new Promise((resolve, reject) => {
|
|
return await new Promise((resolve, reject) => {
|
|
|
this.accountTable.query(predicates, (resultSet: relationalStore.ResultSet) => {
|
|
this.accountTable.query(predicates, (resultSet: relationalStore.ResultSet) => {
|
|
@@ -1164,10 +1165,20 @@ export default class MediaTable {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 应用排序条件到查询谓词
|
|
* 应用排序条件到查询谓词
|
|
|
- * sortType: 0-艺术家升序 1-艺术家降序 2-专辑升序 3-专辑降序 4-名称升序 5-名称降序
|
|
|
|
|
|
|
+ * sortType: 0-艺术家升序 1-艺术家降序 2-专辑升序 3-专辑降序 4-名称升序 5-名称降序 6-时间升序 7-时间降序
|
|
|
|
|
+ * @param predicates 查询谓词
|
|
|
|
|
+ * @param sortType 排序类型
|
|
|
|
|
+ * @param isShowFileName 是否显示文件名(当sortType为4或5时,此参数决定按name还是fileName排序)
|
|
|
*/
|
|
*/
|
|
|
- private applySortConditions(predicates: relationalStore.RdbPredicates, sortType?: number): void {
|
|
|
|
|
|
|
+ private applySortConditions(predicates: relationalStore.RdbPredicates, sortType?: number, isShowFileName?: boolean): void {
|
|
|
const type = sortType !== undefined ? sortType : 4;
|
|
const type = sortType !== undefined ? sortType : 4;
|
|
|
|
|
+
|
|
|
|
|
+ // 当按名称排序时,根据isShowFileName决定使用name还是fileName字段
|
|
|
|
|
+ let nameColumn = DB_COLUMNS.NAME;
|
|
|
|
|
+ if ((type === 4 || type === 5) && isShowFileName === true) {
|
|
|
|
|
+ nameColumn = DB_COLUMNS.FILE_NAME;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
switch (type) {
|
|
switch (type) {
|
|
|
case 0:
|
|
case 0:
|
|
|
predicates.orderByAsc(DB_COLUMNS.ARTIST);
|
|
predicates.orderByAsc(DB_COLUMNS.ARTIST);
|
|
@@ -1182,13 +1193,19 @@ export default class MediaTable {
|
|
|
predicates.orderByDesc(DB_COLUMNS.ALBUM);
|
|
predicates.orderByDesc(DB_COLUMNS.ALBUM);
|
|
|
break;
|
|
break;
|
|
|
case 4:
|
|
case 4:
|
|
|
- predicates.orderByAsc(DB_COLUMNS.NAME);
|
|
|
|
|
|
|
+ predicates.orderByAsc(nameColumn);
|
|
|
break;
|
|
break;
|
|
|
case 5:
|
|
case 5:
|
|
|
- predicates.orderByDesc(DB_COLUMNS.NAME);
|
|
|
|
|
|
|
+ predicates.orderByDesc(nameColumn);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 6:
|
|
|
|
|
+ predicates.orderByAsc(DB_COLUMNS.C_TIME);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 7:
|
|
|
|
|
+ predicates.orderByDesc(DB_COLUMNS.C_TIME);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
- predicates.orderByAsc(DB_COLUMNS.NAME);
|
|
|
|
|
|
|
+ predicates.orderByAsc(nameColumn);
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1246,7 +1263,7 @@ export default class MediaTable {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 5. 应用排序
|
|
// 5. 应用排序
|
|
|
- this.applySortConditions(pagePredicates, options.sortType);
|
|
|
|
|
|
|
+ this.applySortConditions(pagePredicates, options.sortType, options.isShowFileName);
|
|
|
|
|
|
|
|
// 6. 应用分页
|
|
// 6. 应用分页
|
|
|
const offset = options.pageIndex * options.pageSize;
|
|
const offset = options.pageIndex * options.pageSize;
|
|
@@ -1302,7 +1319,7 @@ export default class MediaTable {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 5. 应用排序
|
|
// 5. 应用排序
|
|
|
- this.applySortConditions(pagePredicates, options.sortType);
|
|
|
|
|
|
|
+ this.applySortConditions(pagePredicates, options.sortType, options.isShowFileName);
|
|
|
|
|
|
|
|
// 6. 应用分页
|
|
// 6. 应用分页
|
|
|
const offset = options.pageIndex * options.pageSize;
|
|
const offset = options.pageIndex * options.pageSize;
|