Skip to content

Commit

Permalink
Merge pull request #694 from podverse/develop
Browse files Browse the repository at this point in the history
Release v4.15.0
  • Loading branch information
mitchdowney authored Nov 16, 2023
2 parents 715fe84 + 3ffe37b commit 8f8c056
Show file tree
Hide file tree
Showing 30 changed files with 614 additions and 77 deletions.
24 changes: 24 additions & 0 deletions migrations/0052_playlist_medium.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
ALTER TABLE ONLY public."playlists"
ADD COLUMN "isDefault" boolean DEFAULT false NOT NULL;

CREATE TYPE public.playlists_medium_enum AS ENUM
(
'podcast',
'music',
'video',
'film',
'audiobook',
'newsletter',
'blog',
'music-video',
'mixed'
);

ALTER TYPE public.playlists_medium_enum OWNER TO postgres;

ALTER TABLE ONLY public."playlists"
ADD COLUMN medium public.playlists_medium_enum DEFAULT 'mixed'::public.playlists_medium_enum NOT NULL;

CREATE UNIQUE INDEX playlists_owner_isDefault_medium_unique_idx
ON public."playlists" ("ownerId", "isDefault", "medium")
WHERE "playlists"."isDefault" IS TRUE;
27 changes: 27 additions & 0 deletions migrations/0053_podcast_medium_indexes.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
CREATE INDEX CONCURRENTLY "podcasts_medium_index" ON "podcasts" ("medium");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastAllTimeTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastAllTimeTotalUniquePageviews");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastHourTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastHourTotalUniquePageviews");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastDayTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastDayTotalUniquePageviews");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastWeekTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastWeekTotalUniquePageviews");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastMonthTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastMonthTotalUniquePageviews");

CREATE INDEX CONCURRENTLY "podcasts_medium_pastYearTotalUniquePageviews_index" ON public.podcasts USING btree
("medium", "pastYearTotalUniquePageviews");

--

CREATE INDEX CONCURRENTLY "playlists_medium_index" ON "playlists" ("medium");

--

ALTER TYPE podcasts_medium_enum ADD VALUE 'mixed';
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "podverse-api",
"version": "4.14.13",
"version": "4.15.0",
"description": "Data API, database migration scripts, and backend services for all Podverse models.",
"contributors": [
"Mitch Downey"
Expand Down Expand Up @@ -153,7 +153,7 @@
"archiver": "^5.3.1",
"awesome-typescript-loader": "5.2.1",
"aws-sdk": "2.814.0",
"axios": "0.21.2",
"axios": "1.6.0",
"bcryptjs": "2.4.3",
"chai": "4.2.0",
"chai-http": "4.3.0",
Expand Down Expand Up @@ -200,7 +200,7 @@
"paypal-rest-sdk": "2.0.0-rc.2",
"pg": "8.7.3",
"podcast-partytime": "4.6.2",
"podverse-shared": "^4.14.9",
"podverse-shared": "^4.14.15",
"reflect-metadata": "0.1.13",
"request": "^2.88.2",
"request-promise-native": "1.0.8",
Expand Down
4 changes: 4 additions & 0 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
podcastRouter,
podcastIndexRouter,
podpingRouter,
secondaryQueueRouter,
upDeviceRouter,
urlResolverRouter,
userHistoryItemRouter,
Expand Down Expand Up @@ -197,6 +198,9 @@ export const createApp = async (conn: Connection) => {
app.use(podpingRouter.routes())
app.use(podpingRouter.allowedMethods())

app.use(secondaryQueueRouter.routes())
app.use(secondaryQueueRouter.allowedMethods())

app.use(toolsRouter.routes())
app.use(toolsRouter.allowedMethods())

Expand Down
66 changes: 57 additions & 9 deletions src/controllers/episode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,9 @@ const generateEpisodeSelects = (
sincePubDate = '',
hasVideo,
shouldUseEpisodesMostRecent,
liveItemStatus
liveItemStatus,
isMusic,
podcastsOnly
) => {
const table = shouldUseEpisodesMostRecent ? EpisodeMostRecent : Episode

Expand Down Expand Up @@ -197,6 +199,14 @@ const generateEpisodeSelects = (
qb.andWhere(`episode."mediaType" LIKE 'video%'`)
}

if (isMusic) {
qb.andWhere(`podcast.medium = 'music'`)
}

if (podcastsOnly) {
qb.andWhere(`podcast.medium = 'podcast'`)
}

if (liveItemStatus) {
qb.andWhere('"liveItem" IS NOT null AND "liveItem".status = :liveItemStatus', { liveItemStatus })
} else if (!shouldUseEpisodesMostRecent) {
Expand Down Expand Up @@ -259,7 +269,19 @@ const getEpisodesFromSearchEngine = async (query) => {
}

const getEpisodes = async (query, isFromManticoreSearch?, totalOverride?) => {
const { episodeId, hasVideo, includePodcast, liveItemStatus, searchTitle, sincePubDate, skip, sort, take } = query
const {
episodeId,
hasVideo,
includePodcast,
isMusic,
liveItemStatus,
podcastsOnly,
searchTitle,
sincePubDate,
skip,
sort,
take
} = query
const episodeIds = (episodeId && episodeId.split(',')) || []

const shouldUseEpisodesMostRecent = false
Expand All @@ -269,7 +291,9 @@ const getEpisodes = async (query, isFromManticoreSearch?, totalOverride?) => {
sincePubDate,
hasVideo,
shouldUseEpisodesMostRecent,
liveItemStatus
liveItemStatus,
isMusic,
podcastsOnly
)
// const shouldLimit = true
// qb = limitEpisodesQuerySize(qb, shouldLimit, sort)
Expand All @@ -292,7 +316,19 @@ const getEpisodes = async (query, isFromManticoreSearch?, totalOverride?) => {
}

const getEpisodesByCategoryIds = async (query) => {
const { categories, hasVideo, includePodcast, liveItemStatus, searchTitle, sincePubDate, skip, sort, take } = query
const {
categories,
hasVideo,
includePodcast,
isMusic,
liveItemStatus,
podcastsOnly,
searchTitle,
sincePubDate,
skip,
sort,
take
} = query
const categoriesIds = (categories && categories.split(',')) || []

const shouldUseEpisodesMostRecent = sort === 'most-recent'
Expand All @@ -302,7 +338,9 @@ const getEpisodesByCategoryIds = async (query) => {
sincePubDate,
hasVideo,
shouldUseEpisodesMostRecent,
liveItemStatus
liveItemStatus,
isMusic,
podcastsOnly
)

qb.innerJoin('podcast.categories', 'categories', 'categories.id IN (:...categoriesIds)', { categoriesIds })
Expand Down Expand Up @@ -335,7 +373,9 @@ const getEpisodesByPodcastIdWithSeasons = async ({
sincePubDate,
hasVideo,
itunesFeedType,
podcastId
podcastId,
isMusic,
podcastsOnly
}) => {
const includePodcast = false
const shouldUseEpisodesMostRecent = false
Expand All @@ -346,7 +386,9 @@ const getEpisodesByPodcastIdWithSeasons = async ({
sincePubDate,
hasVideo,
shouldUseEpisodesMostRecent,
liveItemStatus
liveItemStatus,
isMusic,
podcastsOnly
)

const isSerial = itunesFeedType === 'serial'
Expand All @@ -371,9 +413,11 @@ const getEpisodesByPodcastIds = async (query) => {
const {
hasVideo,
includePodcast,
isMusic,
liveItemStatus,
maxResults,
podcastId,
podcastsOnly,
searchTitle,
sincePubDate,
skip,
Expand All @@ -389,7 +433,9 @@ const getEpisodesByPodcastIds = async (query) => {
sincePubDate,
hasVideo,
shouldUseEpisodesMostRecent,
liveItemStatus
liveItemStatus,
isMusic,
podcastsOnly
)

if (podcastIds.length === 1) {
Expand All @@ -401,7 +447,9 @@ const getEpisodesByPodcastIds = async (query) => {
sincePubDate,
hasVideo,
itunesFeedType: podcast.itunesFeedType,
podcastId
podcastId,
isMusic,
podcastsOnly
})
} else {
return getEpisodesByPodcastId(query, qb, podcastIds)
Expand Down
10 changes: 9 additions & 1 deletion src/controllers/mediaRef.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ const getMediaRefs = async (query, isFromManticoreSearch?, totalOverride?) => {
const podcastIds = (query.podcastId && query.podcastId.split(',')) || []
const episodeIds = (query.episodeId && query.episodeId.split(',')) || []
const categoriesIds = (query.categories && query.categories.split(',')) || []
const { hasVideo, includeEpisode, includePodcast, skip, take } = query
const { hasVideo, includeEpisode, includePodcast, isMusic, podcastsOnly, skip, take } = query
const repositoryName = hasVideo ? MediaRefVideos : MediaRef

const repository = getRepository(repositoryName)
Expand Down Expand Up @@ -209,6 +209,14 @@ const getMediaRefs = async (query, isFromManticoreSearch?, totalOverride?) => {
qb.andWhere('mediaRef.id IN (:...mediaRefIds)', { mediaRefIds })
}

if (isMusic) {
qb.andWhere(`podcast.medium = 'music'`)
}

if (podcastsOnly) {
qb.andWhere(`podcast.medium = 'podcast'`)
}

const allowRandom = podcastIds.length > 0 || episodeIds.length > 0
qb = addOrderByToQuery(qb, 'mediaRef', query.sort, 'createdAt', allowRandom, isFromManticoreSearch)

Expand Down
Loading

0 comments on commit 8f8c056

Please sign in to comment.