@@ -1043,209 +1043,6 @@ limit ?limit;
10431043 return result , nil
10441044}
10451045
1046- func (o operationRepositoryImpl ) FullTextSearchForOperations (searchQuery * entity.OperationSearchQuery ) ([]entity.OperationSearchResult , error ) {
1047-
1048- searchQuery .TextFilter = strings .TrimPrefix (searchQuery .TextFilter , "_" )
1049- searchQuery .OriginalTextInput = strings .TrimPrefix (searchQuery .OriginalTextInput , "_" )
1050-
1051- _ , err := o .cp .GetConnection ().Exec ("select phraseto_tsquery(?)" , searchQuery .SearchString )
1052- if err != nil {
1053- return nil , fmt .Errorf ("invalid search string: %v" , err .Error ())
1054- }
1055- searchQuery .TextFilter = "%" + utils .LikeEscaped (searchQuery .TextFilter ) + "%"
1056- var result []entity.OperationSearchResult
1057-
1058- operationsSearchQuery := `
1059- with
1060- maxrev as
1061- (
1062- select package_id, version, pg.name as package_name, max(revision) as revision
1063- from published_version pv
1064- inner join package_group pg
1065- on pg.id = pv.package_id
1066- and pg.exclude_from_search = false
1067- --where (?packages = '{}' or package_id = ANY(?packages))
1068- /*
1069- for now packages list serves as a list of parents and packages,
1070- after adding new parents list need to uncomment line above and change condition below to use parents list
1071- */
1072- where (?packages = '{}' or package_id like ANY(
1073- select id from unnest(?packages::text[]) id
1074- union
1075- select id||'.%' from unnest(?packages::text[]) id))
1076- and (?versions = '{}' or version = ANY(?versions))
1077- group by package_id, version, pg.name
1078- ),
1079- versions as
1080- (
1081- select pv.package_id, pv.version, pv.revision, pv.published_at, pv.status, maxrev.package_name
1082- from published_version pv
1083- inner join maxrev
1084- on pv.package_id = maxrev.package_id
1085- and pv.version = maxrev.version
1086- and pv.revision = maxrev.revision
1087- where pv.deleted_at is null
1088- and (?statuses = '{}' or pv.status = ANY(?statuses))
1089- and pv.published_at >= ?start_date
1090- and pv.published_at <= ?end_date
1091- ),
1092- operations as
1093- (
1094- select o.*, v.status version_status, v.package_name, v.published_at version_published_at
1095- from operation o
1096- inner join versions v
1097- on v.package_id = o.package_id
1098- and v.version = o.version
1099- and v.revision = o.revision
1100- and (?api_type = '' or o.type = ?api_type)
1101- and (?methods = '{}' or o.metadata->>'method' = ANY(?methods))
1102- and (?operation_types = '{}' or o.metadata->>'type' = ANY(?operation_types))
1103- )
1104- select
1105- o.package_id,
1106- o.package_name name,
1107- o.version,
1108- o.revision,
1109- o.version_status status,
1110- o.operation_id,
1111- o.title,
1112- o.data_hash,
1113- o.deprecated,
1114- o.kind,
1115- o.type,
1116- o.metadata,
1117- parent_package_names(o.package_id) parent_names,
1118-
1119- --debug
1120- coalesce(?scope_weight) scope_weight,
1121- coalesce(?open_count_weight) open_count_weight,
1122- scope_tf,
1123- title_tf,
1124- version_status_tf,
1125- operation_open_count
1126- from operations o
1127-
1128- left join (
1129- select ts.data_hash, max(rank) as rank from (
1130- with filtered as (select data_hash from operations)
1131- select
1132- ts.data_hash,
1133- ts_rank(data_vector, search_query) rank
1134- from
1135- fts_operation_data ts,
1136- filtered f,
1137- phraseto_tsquery(?original_text_input) search_query
1138- where ts.data_hash = f.data_hash
1139- and search_query @@ data_vector
1140- ) ts
1141- group by ts.data_hash
1142- order by max(rank) desc
1143- limit ?limit
1144- offset ?offset
1145- ) all_ts
1146- on all_ts.data_hash = o.data_hash,
1147-
1148- coalesce(?title_weight * (o.title ilike ?text_filter)::int, 0) title_tf,
1149- coalesce(?scope_weight * (coalesce(all_ts.rank, 0)), 0) scope_tf,
1150- coalesce(title_tf + scope_tf, 0) init_rank,
1151- coalesce(
1152- ?version_status_release_weight * (o.version_status = ?version_status_release)::int +
1153- ?version_status_draft_weight * (o.version_status = ?version_status_draft)::int +
1154- ?version_status_archived_weight * (o.version_status = ?version_status_archived)::int) version_status_tf,
1155- coalesce(?open_count_weight * 0, 0) operation_open_count
1156- where all_ts.rank > 0
1157- order by all_ts.rank desc, o.version_published_at desc, o.operation_id
1158- limit ?limit;`
1159-
1160- _ , err = o .cp .GetConnection ().Model (searchQuery ).Query (& result , operationsSearchQuery )
1161- if err != nil {
1162- if err == pg .ErrNoRows {
1163- return nil , nil
1164- }
1165- return nil , err
1166- }
1167-
1168- return result , nil
1169-
1170- }
1171-
1172- func (o operationRepositoryImpl ) LiteSearchForOperations (searchQuery * entity.OperationSearchQuery ) ([]entity.OperationSearchResult , error ) {
1173-
1174- searchQuery .TextFilter = strings .TrimPrefix (searchQuery .TextFilter , "_" )
1175- searchQuery .OriginalTextInput = strings .TrimPrefix (searchQuery .OriginalTextInput , "_" )
1176-
1177- _ , err := o .cp .GetConnection ().Exec ("select websearch_to_tsquery(?)" , searchQuery .OriginalTextInput )
1178- if err != nil {
1179- return nil , fmt .Errorf ("invalid search string: %v" , err .Error ())
1180- }
1181- searchQuery .TextFilter = "%" + utils .LikeEscaped (searchQuery .TextFilter ) + "%"
1182- var result []entity.OperationSearchResult
1183-
1184- operationsSearchQuery := `
1185- select
1186- o.package_id,
1187- pg.name,
1188- o.version,
1189- o.revision,
1190- pv.status,
1191- o.operation_id,
1192- o.title,
1193- o.data_hash,
1194- o.deprecated,
1195- o.kind,
1196- o.type,
1197- o.metadata,
1198- parent_package_names(o.package_id) parent_names
1199- from operation o
1200- inner join (
1201- SELECT DISTINCT ON (rank, package_id, operation_id)
1202- ts_rank(data_vector, search_query) as rank,
1203- ts.package_id as package_id,
1204- ts.operation_id as operation_id,
1205- ts.version as version,
1206- ts.revision as revision
1207-
1208- FROM fts_latest_release_operation_data ts,
1209- websearch_to_tsquery(?original_text_input) search_query
1210- WHERE (?versions = '{}' or version like ANY(
1211- select id from unnest(?versions::text[]) id)) and
1212- (?packages = '{}' or package_id like ANY(
1213- select id from unnest(?packages::text[]) id
1214- union
1215- select id||'.%' from unnest(?packages::text[]) id)) and
1216- (?api_type = '' or ts.api_type = ?api_type) and search_query @@ data_vector
1217- ORDER BY ts_rank(data_vector, search_query) DESC,
1218- package_id,
1219- operation_id desc,
1220- version DESC,
1221- revision DESC
1222- LIMIT ?limit OFFSET ?offset
1223- ) all_ts
1224- on all_ts.package_id = o.package_id and
1225- all_ts.version = o.version and
1226- all_ts.revision = o.revision and
1227- all_ts.operation_id = o.operation_id
1228-
1229- inner join published_version pv on o.package_id=pv.package_id and o.version=pv.version and o.revision=pv.revision
1230- inner join package_group pg on o.package_id=pg.id
1231-
1232- where all_ts.rank > 0
1233- and pv.deleted_at is null
1234- order by all_ts.rank desc, o.operation_id
1235- limit ?limit;
1236- `
1237-
1238- _ , err = o .cp .GetConnection ().Model (searchQuery ).Query (& result , operationsSearchQuery )
1239- if err != nil {
1240- if err == pg .ErrNoRows {
1241- return nil , nil
1242- }
1243- return nil , err
1244- }
1245-
1246- return result , nil
1247- }
1248-
12491046func (o operationRepositoryImpl ) GetOperationsTypeCount (packageId string , version string , revision int , showOnlyDeleted bool ) ([]entity.OperationsTypeCountEntity , error ) {
12501047 var result []entity.OperationsTypeCountEntity
12511048 notCondition := ""
0 commit comments