Added experimental GraphQL API.
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
export default function consentHandler(req, res, next) {
|
||||
const redirect = req.headers.referer && new URL(req.headers.referer).searchParams.get('redirect');
|
||||
|
||||
if (req.path.includes('/api')) {
|
||||
next();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Object.hasOwn(req.query, 'lgbt')) {
|
||||
const lgbtFilters = (req.tagFilter || []).filter((tag) => !['gay', 'bisexual', 'transsexual'].includes(tag));
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@ export async function curateScenesQuery(query) {
|
||||
}
|
||||
|
||||
export async function fetchScenesApi(req, res) {
|
||||
console.log('REQUEST', req.query);
|
||||
|
||||
const {
|
||||
scenes,
|
||||
aggActors,
|
||||
@@ -58,8 +56,6 @@ export async function fetchScenesApi(req, res) {
|
||||
limit: Number(req.query.limit) || 30,
|
||||
}, req.user);
|
||||
|
||||
console.log('OUTPUT', scenes.length);
|
||||
|
||||
res.send(stringify({
|
||||
scenes,
|
||||
aggActors,
|
||||
@@ -69,3 +65,33 @@ export async function fetchScenesApi(req, res) {
|
||||
total,
|
||||
}));
|
||||
}
|
||||
|
||||
export const scenesSchema = `
|
||||
type Scene {
|
||||
id: Int!
|
||||
title: String
|
||||
}
|
||||
`;
|
||||
|
||||
export async function fetchScenesGraphql(query, req) {
|
||||
const {
|
||||
scenes,
|
||||
aggActors,
|
||||
aggTags,
|
||||
aggChannels,
|
||||
limit,
|
||||
total,
|
||||
} = await fetchScenes({}, {
|
||||
page: 1,
|
||||
limit: 30,
|
||||
}, req.user);
|
||||
|
||||
return {
|
||||
scenes,
|
||||
aggActors,
|
||||
aggTags,
|
||||
aggChannels,
|
||||
limit,
|
||||
total,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -9,8 +9,6 @@ import compression from 'compression';
|
||||
import cookie from 'cookie';
|
||||
import { renderPage } from 'vike/server'; // eslint-disable-line import/extensions
|
||||
|
||||
// import root from './root.js';
|
||||
|
||||
import redis from '../redis.js';
|
||||
|
||||
import errorHandler from './error.js';
|
||||
@@ -22,6 +20,8 @@ import { fetchMoviesApi } from './movies.js';
|
||||
import { fetchEntitiesApi } from './entities.js';
|
||||
import { fetchTagsApi } from './tags.js';
|
||||
|
||||
import { graphqlApi } from './graphql.js';
|
||||
|
||||
import {
|
||||
setUserApi,
|
||||
loginApi,
|
||||
@@ -124,8 +124,6 @@ export default async function initServer() {
|
||||
router.use(viteDevMiddleware);
|
||||
}
|
||||
|
||||
router.use(consentHandler);
|
||||
|
||||
router.get('/consent', (req, res) => {
|
||||
res.sendFile(path.join(import.meta.dirname, '../../assets/consent.html'));
|
||||
});
|
||||
@@ -175,6 +173,9 @@ export default async function initServer() {
|
||||
// TAGS
|
||||
router.get('/api/tags', fetchTagsApi);
|
||||
|
||||
router.post('/graphql', graphqlApi);
|
||||
router.use(consentHandler);
|
||||
|
||||
router.use((req, res, next) => {
|
||||
/* eslint-disable no-param-reassign */
|
||||
res.set('Accept-CH', 'Sec-CH-Prefers-Color-Scheme');
|
||||
|
||||
Reference in New Issue
Block a user