Added parameter affiliates.

This commit is contained in:
DebaucheryLibrarian 2021-07-12 01:41:18 +02:00
parent 8967907893
commit 488d1082e4
6 changed files with 27 additions and 3 deletions

View File

@ -149,8 +149,15 @@ async function fetchEntity(scroll = true) {
this.pageTitle = entity.name;
const campaign = entity.campaigns.find(campaignX => !campaignX.banner);
this.entityUrl = campaign?.url || campaign?.affiliate?.url || entity.url;
const campaign = entity.campaigns.find(campaignX => !campaignX.banner)
|| entity.parent?.campaigns.find(campaignX => !campaignX.banner);
const affiliateParams = new URLSearchParams({
...(entity.url && Object.fromEntries(new URL(entity.url).searchParams)), // preserve any query in entity URL, e.g. ?siteId=5
...(campaign?.affiliate?.parameters && Object.fromEntries(new URLSearchParams(campaign.affiliate.parameters))), // append affiliate parameters
}).toString();
this.entityUrl = campaign?.url || campaign?.affiliate?.url || `${entity.url}${campaign?.affiliate?.parameters ? `?${affiliateParams}` : ''}`;
if (scroll && this.$refs.filter?.$el) {
this.$refs.filter.$el.scrollIntoView();

View File

@ -122,6 +122,7 @@ const campaignsFragment = `
affiliate {
id
url
parameters
}
banner {
id

View File

@ -1285,8 +1285,10 @@ exports.up = knex => Promise.resolve()
.inTable('entities');
table.text('url');
table.text('parameters');
table.unique(['entity_id', 'url']);
table.unique(['entity_id', 'parameters']);
table.text('comment');
@ -1578,6 +1580,12 @@ exports.up = knex => Promise.resolve()
CREATE FUNCTION banners_ratio(banner banners) RETURNS numeric AS $$
SELECT ROUND(banner.width::decimal / banner.height::decimal, 2);
$$ LANGUAGE SQL STABLE;
CREATE FUNCTION get_random_campaign() RETURNS SETOF campaigns AS $$
SELECT * FROM campaigns
ORDER BY random()
LIMIT 1;
$$ LANGUAGE sql STABLE;
`);
})
// POLICIES
@ -1824,6 +1832,7 @@ exports.down = (knex) => { // eslint-disable-line arrow-body-style
DROP POLICY IF EXISTS stashes_policy ON stashes_actors;
DROP FUNCTION IF EXISTS current_user_id;
DROP FUNCTION IF EXISTS get_random_campaign;
DROP TABLE IF EXISTS releases_search_results;
`);

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -7,6 +7,12 @@ const affiliates = [
url: 'https://join.archangelvideo.com/track/MzQ3LjEuMS4xLjAuMC4wLjAuMA',
comment: 'revshare',
},
{
id: 'kink_params',
network: 'kink',
parameters: 't=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
comment: '50%',
},
];
const banners = [
@ -465,7 +471,7 @@ const campaigns = [
},
{
network: 'kink',
url: 'https://www.kink.com/shoots/latest?t=eyJhZmZpbGlhdGUiOiJEZWJhdWNoZXJ5TGliIiwiY2FtcGFpZ24iOiJkZWZhdWx0IiwiYWdldmVyaWZpZWQiOiJ5In0',
affiliate: 'kink_params',
comment: '50%',
},
{
@ -673,6 +679,7 @@ exports.seed = async knex => Promise.resolve()
id: affiliate.id,
entity_id: networksBySlug[affiliate.network]?.id || channelsBySlug[affiliate.channel]?.id || null,
url: affiliate.url,
parameters: affiliate.parameters,
comment: affiliate.comment,
}));