Added effective date column. Changed warning page theme.
|  | @ -67,12 +67,13 @@ export default { | |||
| 	justify-content: center; | ||||
| 	position: absolute; | ||||
| 	z-index: 10; | ||||
| 	background: var(--darken-censor); | ||||
| 	background: var(--background-censor); | ||||
| 	backdrop-filter: blur(.25rem); | ||||
| 	overflow-y: auto; | ||||
| } | ||||
| 
 | ||||
| .warning { | ||||
| 	color: var(--text-light); | ||||
| 	color: var(--text); | ||||
| 	width: 50rem; | ||||
| 	max-height: 100%; | ||||
| 	max-width: 100%; | ||||
|  | @ -87,8 +88,8 @@ export default { | |||
| .title { | ||||
| 	display: block; | ||||
| 	font-size: 2rem; | ||||
| 	margin: 1rem 0 0 0; | ||||
| 	color: var(--text-light); | ||||
| 	margin: 1rem 0; | ||||
| 	color: var(--text); | ||||
| 	text-align: center; | ||||
| } | ||||
| 
 | ||||
|  | @ -113,7 +114,7 @@ export default { | |||
| .rules { | ||||
| 	margin: 0 0 0 1rem; | ||||
| 	text-align: left; | ||||
| 	text-shadow: 0 0 3px var(--darken-extreme); | ||||
| 	text-shadow: 0 0 3px var(--highlight-strong); | ||||
| } | ||||
| 
 | ||||
| .rule { | ||||
|  | @ -134,16 +135,16 @@ export default { | |||
| 	align-items: center; | ||||
| 	justify-content: center; | ||||
| 	border: none; | ||||
| 	border-radius: .25rem; | ||||
| 	padding: 0; | ||||
| 	position: relative; | ||||
| 	border-radius: 1rem; | ||||
| 	color: var(--lighten-strong); | ||||
| 	cursor: pointer; | ||||
| 	font-size: 1.5rem; | ||||
| 	text-decoration: none; | ||||
| 	transition: border .5s ease; | ||||
| 	transition: border-radius .2s ease; | ||||
| 
 | ||||
| 	&.leave { | ||||
| 		color: var(--shadow-strong); | ||||
| 		flex-direction: row; | ||||
| 		padding: 1rem; | ||||
| 
 | ||||
|  | @ -151,7 +152,11 @@ export default { | |||
| 			width: 1.5rem; | ||||
| 			height: 1.5rem; | ||||
| 			margin: 0 1rem 0 0; | ||||
| 			fill: var(--lighten); | ||||
| 			fill: var(--shadow); | ||||
| 		} | ||||
| 
 | ||||
| 		&:hover { | ||||
| 			color: var(--text); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -161,6 +166,7 @@ export default { | |||
| 
 | ||||
| 	&.straight, | ||||
| 	&.queer { | ||||
| 		color: var(--lighten-strong); | ||||
| 		background: var(--darken-censor); | ||||
| 
 | ||||
| 		&:before { | ||||
|  | @ -169,10 +175,18 @@ export default { | |||
| 			height: calc(100% + .25rem); | ||||
| 			position: absolute; | ||||
| 			z-index: -1; | ||||
| 			border-radius: 1.1rem; | ||||
| 			filter: blur(.25rem); | ||||
| 			transition: filter .2s ease; | ||||
| 		} | ||||
| 
 | ||||
| 		&:hover { | ||||
| 			color: var(--text-light); | ||||
| 			border-radius: 0; | ||||
| 
 | ||||
| 			.button-sub { | ||||
| 				color: var(--text-light); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	&.straight:before { | ||||
|  | @ -188,14 +202,8 @@ export default { | |||
| 	} | ||||
| 
 | ||||
| 	&:hover { | ||||
| 		color: var(--text-light); | ||||
| 
 | ||||
| 		.button-sub { | ||||
| 			color: var(--lighten-strong); | ||||
| 		} | ||||
| 
 | ||||
| 		.icon { | ||||
| 			fill: var(--text-light); | ||||
| 			fill: var(--text); | ||||
| 		} | ||||
| 
 | ||||
| 		&.straight:before, | ||||
|  | @ -225,7 +233,7 @@ export default { | |||
| } | ||||
| 
 | ||||
| .preferences { | ||||
| 	color: var(--lighten); | ||||
| 	color: var(--shadow); | ||||
| 	display: block; | ||||
| 	padding: .5rem 0 1rem 0; | ||||
| 	text-align: center; | ||||
|  | @ -234,11 +242,11 @@ export default { | |||
| 
 | ||||
| @media(max-width: $breakpoint) { | ||||
| 	.title { | ||||
| 		font-size: 1.5rem; | ||||
| 		font-size: 1.75rem; | ||||
| 	} | ||||
| 
 | ||||
| 	.logo { | ||||
| 		width: 5rem; | ||||
| 		width: 5.75rem; | ||||
| 		margin: 0 .5rem 0 0; | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -21,16 +21,17 @@ $breakpoint4: 1500px; | |||
|     --background-dark: #222; | ||||
| 
 | ||||
|     --darken: rgba(0, 0, 0, .5); | ||||
|     --darken-strong: rgba(0, 0, 0, .7); | ||||
|     --darken-extreme: rgba(0, 0, 0, .9); | ||||
|     --darken-censor: rgba(0, 0, 0, .95); | ||||
|     --darken-extreme: rgba(0, 0, 0, .9); | ||||
|     --darken-strong: rgba(0, 0, 0, .7); | ||||
|     --darken-weak: rgba(0, 0, 0, .2); | ||||
|     --darken-hint: rgba(0, 0, 0, .1); | ||||
|     --darken-touch: rgba(0, 0, 0, .05); | ||||
| 
 | ||||
|     --lighten: rgba(255, 255, 255, .5); | ||||
|     --lighten-strong: rgba(255, 255, 255, .7); | ||||
|     --lighten-censor: rgba(255, 255, 255, .95); | ||||
|     --lighten-extreme: rgba(255, 255, 255, .9); | ||||
|     --lighten-strong: rgba(255, 255, 255, .7); | ||||
|     --lighten: rgba(255, 255, 255, .5); | ||||
|     --lighten-weak: rgba(255, 255, 255, .2); | ||||
|     --lighten-hint: rgba(255, 255, 255, .05); | ||||
|     --lighten-touch: rgba(255, 255, 255, .03); | ||||
|  | @ -58,6 +59,7 @@ $breakpoint4: 1500px; | |||
|     --text-contrast: #fff; | ||||
| 
 | ||||
|     --background: var(--background-light); | ||||
|     --background-censor: rgba(255, 255, 255, .95); | ||||
|     --background-dim: #f5f5f5; | ||||
|     --background-soft: #fdfdfd; | ||||
| 
 | ||||
|  | @ -71,6 +73,7 @@ $breakpoint4: 1500px; | |||
| 	--crease: #eaeaea; | ||||
| 
 | ||||
|     --shadow: rgba(0, 0, 0, .5); | ||||
|     --shadow-censor: rgba(0, 0, 0, .95); | ||||
|     --shadow-extreme: rgba(0, 0, 0, .9); | ||||
|     --shadow-strong: rgba(0, 0, 0, .7); | ||||
|     --shadow-modest: rgba(0, 0, 0, .3); | ||||
|  | @ -91,6 +94,7 @@ $breakpoint4: 1500px; | |||
|     --text-contrast: #222; | ||||
| 
 | ||||
|     --background: #181818; | ||||
|     --background-censor: rgba(0, 0, 0, .95); | ||||
|     --background-dim: #111; | ||||
|     --background-soft: #000; | ||||
| 
 | ||||
|  |  | |||
|  | @ -26,6 +26,31 @@ const dateRanges = { | |||
| 	}), | ||||
| }; | ||||
| 
 | ||||
| /* requires PostgreSQL 12.x> not available in production yet | ||||
| const dateRanges = { | ||||
| 	latest: () => ({ | ||||
| 		after: '1900-01-01', | ||||
| 		before: dayjs.utc().toDate(), | ||||
| 		orderBy: ['EFFECTIVE_DATE_DESC'], | ||||
| 	}), | ||||
| 	upcoming: () => ({ | ||||
| 		after: dayjs.utc().toDate(), | ||||
| 		before: '2100-01-01', | ||||
| 		orderBy: ['EFFECTIVE_DATE_DESC'], | ||||
| 	}), | ||||
| 	new: () => ({ | ||||
| 		after: '1900-01-01 00:00:00', | ||||
| 		before: '2100-01-01', | ||||
| 		orderBy: ['CREATED_AT_DESC', 'EFFECTIVE_DATE_ASC'], | ||||
| 	}), | ||||
| 	all: () => ({ | ||||
| 		after: '1900-01-01', | ||||
| 		before: '2100-01-01', | ||||
| 		orderBy: ['EFFECTIVE_DATE_DESC'], | ||||
| 	}), | ||||
| }; | ||||
| */ | ||||
| 
 | ||||
| function getDateRange(range) { | ||||
| 	return (dateRanges[range] || dateRanges.all)(); | ||||
| } | ||||
|  |  | |||
|  | @ -1274,11 +1274,16 @@ exports.up = knex => Promise.resolve() | |||
| 			.notNullable() | ||||
| 			.defaultTo(knex.fn.now()); | ||||
| 	})) | ||||
| 	// SEARCH
 | ||||
| 	// SEARCH AND SORT
 | ||||
| 	.then(() => { // eslint-disable-line arrow-body-style
 | ||||
| 		// allow vim fold
 | ||||
| 		return knex.raw(` | ||||
| 			ALTER TABLE releases_search ADD COLUMN document tsvector; | ||||
| 
 | ||||
| 			/* allow scenes without dates to be mixed inbetween scenes with dates */ | ||||
| 			ALTER TABLE releases | ||||
| 			ADD COLUMN effective_date timestamptz | ||||
| 			GENERATED ALWAYS AS (COALESCE(date, created_at)) STORED; | ||||
| 		`);
 | ||||
| 	}) | ||||
| 	// INDEXES
 | ||||
|  |  | |||
| After Width: | Height: | Size: 148 KiB | 
| After Width: | Height: | Size: 6.9 KiB | 
| After Width: | Height: | Size: 3.7 MiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 6.0 MiB | 
| After Width: | Height: | Size: 5.1 MiB | 
| After Width: | Height: | Size: 3.9 MiB | 
| After Width: | Height: | Size: 6.8 KiB | 
| After Width: | Height: | Size: 6.4 KiB | 
| After Width: | Height: | Size: 7.1 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 31 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 5.9 MiB | 
| After Width: | Height: | Size: 2.5 MiB | 
| After Width: | Height: | Size: 4.1 MiB | 
| After Width: | Height: | Size: 2.0 MiB | 
| After Width: | Height: | Size: 3.9 MiB | 
| After Width: | Height: | Size: 3.2 MiB | 
| After Width: | Height: | Size: 4.3 MiB | 
| After Width: | Height: | Size: 6.4 KiB | 
| After Width: | Height: | Size: 7.0 KiB | 
| After Width: | Height: | Size: 6.5 KiB | 
| After Width: | Height: | Size: 6.9 KiB | 
| After Width: | Height: | Size: 7.1 KiB | 
| After Width: | Height: | Size: 6.9 KiB | 
| After Width: | Height: | Size: 7.0 KiB | 
| After Width: | Height: | Size: 28 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 30 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 31 KiB | 
|  | @ -594,15 +594,15 @@ const tagMedia = [ | |||
| 	['69', 0, 'Abby Lee Brazil and Ramon Nomar', 'wicked'], | ||||
| 	['69', 4, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'], | ||||
| 	['69', 2, 'Abigail Mac and Kissa Sins in "Lesbian Anal Workout"', 'hardx'], | ||||
| 	['airtight', 2, 'Dakota Skye in "Dakota Goes Nuts"', 'archangel'], | ||||
| 	['airtight', 7, 'Lana Rhoades in "Gangbang Me 3"', 'hardx'], | ||||
| 	['airtight', 6, 'Remy Lacroix in "Ass Worship 14"', 'julesjordan'], | ||||
| 	['airtight', 11, 'Malena Nazionale in "Rocco\'s Perverted Secretaries 2: Italian Edition"', 'roccosiffredi'], | ||||
| 	['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang"', 'handsonhardcore'], | ||||
| 	['airtight', 'venera_maxima_legalporno', 'Venera Maxima in LegalPorno SZ2645', 'legalporno'], | ||||
| 	['airtight', 'mina_ddfnetwork', 'Remy Lacroix in "Ass Worship 14"', 'julesjordan'], | ||||
| 	['airtight', 1, 'Jynx Maze in "Pump My Ass Full of Cum 3"', 'julesjordan'], | ||||
| 	['airtight', 10, 'Asa Akira in "Asa Akira To The Limit"', 'julesjordan'], | ||||
| 	['airtight', 8, 'Veronica Leal in SZ2520'], | ||||
| 	['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang"', 'handsonhardcore'], | ||||
| 	['airtight', 5, 'Chloe Amour in "DP Masters 4"', 'julesjordan'], | ||||
| 	['airtight', 9, 'Cindy Shine in GP1658'], | ||||
| 	['anal', 5, 'Abella Danger', 'hardx'], | ||||
|  | @ -651,10 +651,11 @@ const tagMedia = [ | |||
| 	['blowbang', 0, 'Lacy Lennon in "Lacy Lennon\'s First Blowbang"', 'hardx'], | ||||
| 	['blowbang', 'zaawaadi_roccosiffredi_1', 'Zaawaadi in "My Name Is Zaawaadi"', 'roccosiffredi'], | ||||
| 	['blowbang', 1, 'Nicole Black in GIO1680', 'legalporno'], | ||||
| 	['blowjob', 1, 'Kylie Page in "Stepsis Gives Soapy Handjob In Shower"', 'spyfam'], | ||||
| 	['blowjob', 'clanddi_jinkcego_ddfbusty_1', 'Clanddi Jinkcego', 'ddfbusty'], | ||||
| 	['blowjob', 4, 'Chloe Cherry in "Chloe\'s Big Anal"', 'darkx'], | ||||
| 	['blowjob', 'cecilia_lion_wefuckblackgirls', 'Cecilia Lion in "Cecilia Lion\'s Second Appearance"', 'wefuckblackgirls'], | ||||
| 	['blowjob', 1, 'Kylie Page in "Stepsis Gives Soapy Handjob In Shower"', 'spyfam'], | ||||
| 	['blowjob', 'jane_wilde_evilangel', 'Jane Wilde and Brock Cooper in "The Cock Hungry Chronicles"', 'evilangel'], | ||||
| 	['blowjob', 'cecilia_lion_wefuckblackgirls', 'Cecilia Lion in "Cecilia Lion\'s Second Appearance"', 'wefuckblackgirls'], | ||||
| 	['blowjob', 0, 'Adriana Chechik in "The Dinner Party"', 'realwifestories'], | ||||
| 	['blowjob', 5, 'Kaylynn', 'mommyblowsbest'], | ||||
| 	['blowjob', 'azul_hermosa_realitykings', 'Azul Hermosa and Scott Nails in "Diva For A Day"', 'brazzers'], | ||||
|  | @ -717,8 +718,8 @@ const tagMedia = [ | |||
| 	['double-dildo', 0, 'Kali Roses in "Double Dildo Party"'], | ||||
| 	['double-dildo', 4, 'Claudia Macc and Victoria Pure', 'eurogirlsongirls'], | ||||
| 	['double-dildo', 8, 'Harmony Wonder, Katie Kush and Jewelz Blu in "Pick Your Pleasure"', 'realitykings'], | ||||
| 	['double-dildo', 6, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'], | ||||
| 	['double-dildo', 5, 'Kimber Woods and Mandy Muse in "Big Oiled Asses"', 'naughtyamerica'], | ||||
| 	['double-dildo', 6, 'Abella Danger and Karma Rx in "Neon Dreaming"', 'brazzers'], | ||||
| 	['double-dildo-anal', 0, 'Vina Sky and Kenzie Reeves in "Vina Sky\'s 1st Lesbian Anal"', 'hardx'], | ||||
| 	['double-dildo-anal', 1, 'Sammie Rhodes and Ainsley Addision in "Tickle Me Pink"', 'welivetogether'], | ||||
| 	['double-dildo-anal', 6, 'Anikka Albrite, Jenna Sativa and Tori Black in "Tori Black\'s Lesbian Gangbang"', 'lesbianx'], | ||||
|  | @ -787,7 +788,8 @@ const tagMedia = [ | |||
| 	['enhanced-boobs', 17, 'Felina in "With Flowers On The Floor"', 'louisdemirabert'], | ||||
| 	['enhanced-boobs', 1, 'Lela Star in "Thick"', 'julesjordan'], | ||||
| 	['enhanced-boobs', 18, 'Ebony Godess', 'actiongirls'], | ||||
| 	['enhanced-boobs', 'hunter_bryce_penthouse', 'Hunter Bryce in "On The Bed"', 'Penthouse'], | ||||
| 	['enhanced-boobs', 'hunter_bryce_penthouse', 'Hunter Bryce in "On The Bed"', 'penthouse'], | ||||
| 	['enhanced-boobs', 'clanddi_jinkcego_ddfbusty_5', 'Clanddi Jinkcego & Rebecca Jessop', 'ddfbusty'], | ||||
| 	['enhanced-boobs', 'trudy_photodromm_1', 'Trudy', 'photodromm'], | ||||
| 	['enhanced-boobs', 'kenzie_anne_playboy', 'Miss Kenzie Anne in "Supercharged"', 'playboy'], | ||||
| 	['enhanced-boobs', 9, 'Putri Cinta', 'watch4beauty'], | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ const { makeExtendSchemaPlugin, gql } = require('graphile-utils'); | |||
| const schemaExtender = makeExtendSchemaPlugin(_build => ({ | ||||
| 	typeDefs: gql` | ||||
| 	  extend type Release { | ||||
| 		isFavorited: Boolean @requires(columns: ["stashesScenesBySceneId"]) | ||||
| 		isStashed(includeFavorites: Boolean = false): Boolean @requires(columns: ["stashesScenesBySceneId"]) | ||||
| 		  isFavorited: Boolean @requires(columns: ["stashesScenesBySceneId"]) | ||||
| 		  isStashed(includeFavorites: Boolean = false): Boolean @requires(columns: ["stashesScenesBySceneId"]) | ||||
| 	  } | ||||
|     `,
 | ||||
| 	resolvers: { | ||||
|  |  | |||