Git Product home page Git Product logo

foodadvisor's Introduction

FoodAdvisor - Strapi Demo

FoodAdvisor

Welcome to FoodAdvisor, the official Strapi demo application. This repository contains the following:

  • Strapi project with existing Content-types and data (/api)
  • Next.js client ready to fetch the content of the Strapi application (/client)

Open in Gitpod

Get started

You can get started with this project locally on your machine by following the instructions below or you can request a private instance on our website.

Prerequisites

Be sure to have the correct env variables for each part:

  • Strapi (example in ./api/.env.example):

    • STRAPI_ADMIN_CLIENT_URL=<url-of-nextjs>
    • STRAPI_ADMIN_CLIENT_PREVIEW_SECRET=<a-random-token>
  • Next.js (already in ./client/.env.development):

    • NEXT_PUBLIC_API_URL=<url-of-strapi>
    • PREVIEW_SECRET=<the-same-random-token-as-for-strapi>

1. Clone FoodAdvisor

  • Clone the repository by running the following command:
git clone https://github.com/strapi/foodadvisor.git
  • Navigate to your project folder by running cd foodadvisor.

2. Start Strapi

Navigate to your ./my-projects/foodadvisor/api folder by running cd api from your command line.

  • Run the following command in your ./foodadvisor/api folder:
yarn && yarn seed && yarn develop

This will install the dependencies, fill your application with data and run your server. You can run these commands separately.

Credentials

3. Start Next.js

Navigate to your ./my-projects/foodadvisor/client folder by running cd client from your command line.

  • Run the following command in your ./foodadvisor/client folder
yarn && yarn dev

This will install the dependencies, and run your server. You can run these commands separately.

Features overview

User


An intuitive, minimal editor The editor allows you to pull in dynamic blocks of content. It’s 100% open-source, and it’s fully extensible.
Media Library Upload images, video or any files and crop and optimize their sizes, without quality loss.
Flexible content management Build any type of category, section, format or flow to adapt to your needs.
Sort and Filter Built-in sorting and filtering: you can manage thousands of entries without effort.
User-friendly interface The most user-friendly open-source interface on the market.
SEO optimized Easily manage your SEO metadata with a repeatable field and use our Media Library to add captions, notes, and custom filenames to optimize the SEO of media assets.

Global


Customizable API: Automatically build out the schema, models, controllers for your API from the editor. Get REST or GraphQL API out of the box without writing a single line of code.
Media Library: The media library allows you to store your images, videos and files in your Strapi admin panel with many ways to visualize and manage them.
Role-Based Access Control (RBAC): Role-Based Access Control is a feature available in the Administration Panel settings that let your team members have access rights only to the information they need.
Internationalization (i18n): Internationalization (i18n) lets you create many content versions, also called locales, in different languages and for different countries.
Audit LogsThe Audit Logs section provides a searchable and filterable display of all activities performed by users of the Strapi application
Data transfer Streams your data from one Strapi instance to another Strapi instance.
Review Worfklows Create and manage any desired review stages for your content, enabling your team to collaborate in the content creation flow from draft to publication.

Resources

DocsDemoNext.js StarterForumDiscordYoutubeTry Enterprise EditionStrapi Design SystemMarketplaceClou Free Trial

foodadvisor's People

Contributors

alexandrebodin avatar derrickmehaffy avatar feute avatar joaogadelha avatar lauriejim avatar malgamves avatar mcastres avatar modkaffes avatar ninogjoni avatar pierreburgy avatar sartoshi-foot-dao avatar smuriu avatar soupette avatar tuzumkuru avatar virginieky avatar yvesdo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

foodadvisor's Issues

Global > Footer includes Shared > FooterColumns but is not selectable

There appears to be a problem with your demo content type model.

You have a Shared > FooterColumns that contains a title and then a repeatable component of links (Shared > Link).

You then have a Global > Footer that appears to include this as a repeatable component, however this is not selectable as an existing component. The "Select a component" even says "Select ..." instead of the component name (e.g. "shared - footercolumn" for example.

It doesn't appear possible to create a component that includes an existing component that contains a component.

Yet somehow you've managed to force your demo to allow this. This should not be allowed if the user themselves cannot replicate it.

report “anchor-is-valid" errors

step 3,yarn start,In CardSection/index.js Line 49: and About/index.js Line 92: report “anchor-is-valid" errors ,"The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid"

Missing images in the cloned/running local instance

Hi, I will preface this issue by saying that I am not a coder (anymore). I cloned the git repo and then ran "yarn && yarn run seed && yarn develop" in the API folder. I then set up my admin account and logged in. However, when I go to the media gallery, all the images are missing.
screenshot-localhost_1337-2021 08 19-08_58_44
I have deleted everything and started over but with the exact same results. Any ideas on what I can do to fix these issues?

Start foodadvisor strapi project with "npm run develop"

Hi there,

I am new to strapi CMS and now I am trying to run the foodadvisor strapi project by using the following command.

I had run npm install before the following:

$ npm run develop

> [email protected] develop
> strapi develop

This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
Error: Cannot find module 'react-select/animated'
Require stack:
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/webpack.alias.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/webpack.config.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/utils/get-custom-webpack-config.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/utils/index.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/index.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/strapi/lib/commands/builders/admin.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/strapi/lib/commands/builders/index.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/strapi/lib/commands/develop.js
- /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/strapi/bin/strapi.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Function.resolve (node:internal/modules/cjs/helpers:108:19)
    at /Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/webpack.alias.js:51:25
    at Array.reduce (<anonymous>)
    at Object.<anonymous> (/Users/hameedbs/Projects/strapi-foodadvisor/httpdocs/api/node_modules/@strapi/admin/webpack.alias.js:50:12)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Module.require (node:internal/modules/cjs/loader:1028:19)

Any help would be highly appreciated.

Many thanks.

Live demo major issues

I think these issues are important to fix because they make Strapi seem much slower and buggier than it actually is, which is making it of limited use for demoing Strapi to clients.
Sorry I don't have much time, sorry for the messy list.

  • The app can only be initially loaded by going to https://foodadvisor.strapi.io/, any other React route gives a 404. Example: https://foodadvisor.strapi.io/2/informations
  • The images are not cached. The CSS and JS files are not gzip/br compressed. This can all be done through nginx.
  • I cannot see the About link in the header on my display due to the font-size: 12px and color contrast of 1.8 (color: hsl(0, 0%, 74.9%)). hsl(0, 0%, 55%) is clearly visible to me, and hsl(0, 0%, 45%) meets WCAG AA.
  • The server latency is very high: ping strapi.io gives about 10ms, but every request from this demo took 250-700ms.

Remove populate deep plugin

We have officially declared the populate deep plugin as not recommended and we should not use it in any public example application and have removed it from our marketplace due the performance issues it causes.

This plugin should be removed from the example and specific population should be used following our documentation and best practices.

Basic functionality

Hi

Is the demo supposed to reset when you log out?
I was using it as the skeleton to my new site, and when I stop the server and started again, everything was reset to Demo and lost my menus, etc..

Thanks
Jorge

Upgrade Frontend to Tailwind v3.

I tried upgrading to Tailwind v3 which basically works but it interferes with the button text color for example on the homepage CTA "Browse Restaurants" becomes low contrast.
image

My upgrade process was minior changes in two files according to tailwind upgrade guide:

  1. package.json
    ...
    "devDependencies": { "autoprefixer": "^10.4.2", "postcss": "^8.4.8", "tailwindcss": "^3.0.23" }

  2. tailwind.config.js
    module.exports = { // mode: 'jit', content: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'], darkMode: 'class', // or 'media' or 'class' theme: { extend: { colors: { primary: { DEFAULT: '#e27d60', light: '#e48a6f', darker: '#cb7056', text: '#FFFFFF', lightest: '#f0beaf', }, secondary: { DEFAULT: '#41b3a3', light: '#85dcb', darker: '#3aa192', text: '#FFFFFF', lightest: '#ecf7f5', }, muted: { DEFAULT: '#E5E7EB', light: '#F3F4F6', darker: '#D1D5DB', text: '#555b66', }, }, }, }, // variants: { // extend: { // // ... // ringWidth: ['hover', 'active'], // }, // }, plugins: [], };

error: select "t0".* from "scheduler_scheduler" as "t0" where ("t0"."uid" = $1 and "t0"."content_id" = $2) - invalid input syntax for type bigint: "null"

After pulled repo and go to "Global" in content manager I got this error ->
error: select "t0".* from "scheduler_scheduler" as "t0" where ("t0"."uid" = $1 and "t0"."content_id" = $2) - invalid input syntax for type bigint: "null" at TLSSocket.emit (node:events:527:28) at TLSSocket.emit (node:domain:475:12) at addChunk (node:internal/streams/readable:315:12) at readableAddChunk (node:internal/streams/readable:289:9) at TLSSocket.Readable.push (node:internal/streams/readable:228:10) at TLSWrap.onStreamRead (node:internal/stream_base_commons:190:23)
I'm using postgreSQL database

Cannot compile and first run CMS

Followed instructions to clone the repo (and made sure .env file existed with correct variables). When running yarn seed && yarn develop the following error is encountered.

Node14.18.1 // npm 6.14.5 // yarn 1.22.17 on windows 10

[5/5] Building fresh packages...
success Saved lockfile.
Done in 141.19s.
yarn run v1.22.17
$ node scripts/seed.js
Failed to move C:\Users\lack-of-gravitas\praxio\foodadvisor\cms\data\uploads to  public\uploads
Done in 0.71s.
yarn run v1.22.17
$ strapi develop
[2021-11-16T07:16:39.119Z] debug ⛔️ Server wasn't able to start properly.
[2021-11-16T07:16:39.121Z] error C:\Users\lack-of-gravitas\praxio\foodadvisor\cms\node_modules\parse5\lib\tokenizer\index.js:1
?'
^

SyntaxError: Unexpected token '?'
    at wrapSafe (internal/modules/cjs/loader.js:1001:16)
    at Module._compile (internal/modules/cjs/loader.js:1049:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at Object.<anonymous> (C:\Users\lack-of-gravitas\praxio\foodadvisor\cms\node_modules\parse5\lib\parser\index.js:3:19)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

MYSQL - "Identifier name 'components_restaurant_related_restaurants_restaurants_links_inv_fk' is too long"

Bug report

Describe the bug

"Identifier name 'components_restaurant_related_restaurants_restaurants_links_inv_fk' is too long",

Steps to reproduce the behavior

Just Change the database from sqlite to MySQL and try to start the application.

The complete error trace is the following:

code: 'ER_TOO_LONG_IDENT',
errno: 1059,
sqlMessage: "Identifier name 'components_restaurant_related_restaurants_restaurants_links_inv_fk' is too long",
sqlState: '42000',
index: 0,
sql: 'alter table components_restaurant_related_restaurants_restaurants_links add index components_restaurant_related_restaurants_restaurants_links_inv_fk(restaurant_id)'
}

System

Node.js version: 16.7.0
Strapi version: 4.10.7
Database: MYSQL 5.7
Operating system: MacOS

Trying to get in touch regarding a security issue

Hey there!

I'd like to report a security issue but cannot find contact instructions on your repository.

If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

Thank you for your consideration, and I look forward to hearing from you!

(cc @huntr-helper)

Node.js 18 - Error fetching localhost

Hello,

Not Strapi centered but I met an issue with the simple first "fetch" of the client application, eveything else was OK.

==> The responsible : Node.js v18

This is the "error" which can be logged from the Try/Catch :

TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11413:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async getServerSideProps (webpack-internal:///./pages/[[...slug]].js:61:21)
    at async Object.renderToHTML (C:\Dev\Projects\strapi-nextjs-foodadvisor-sample\foodadvisor\client\node_modules\next\dist\server\render.js:508:20)    
    at async doRender (C:\Dev\Projects\strapi-nextjs-foodadvisor-sample\foodadvisor\client\node_modules\next\dist\server\base-server.js:687:38)
    at async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate (C:\Dev\Projects\strapi-nextjs-foodadvisor-sample\foodadvisor\client\node_modules\next\dist\server\base-server.js:796:28)
    at async C:\Dev\Projects\strapi-nextjs-foodadvisor-sample\foodadvisor\client\node_modules\next\dist\server\response-cache\index.js:80:36 {
  cause: Error: connect ECONNREFUSED ::1:1337
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) {
    errno: -4078,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '::1',
    port: 1337
  }
}

Hopefully i was already victim of this issue and i want to share the simple solution (found here) :
node-fetch/node-fetch#1624

Rather than "localhost", you would prefer set up "127.0.0.1" into the API_URL config key :

# ./client/.env.development
# Rather than
NEXT_PUBLIC_API_URL=http://localhost:1337
# Prefer
NEXT_PUBLIC_API_URL=http://127.0.0.1:1337

Otherwize, thanks you for sharing this excellent demo !

Where is the v2 branch?

Am i missing something or is there supposed to be a v2 branch that I can pull and build from?
image

Preview Mode provide a example url

I was debugging through the preview mode, especially /client/pages/api/preview.js and getData(req.query.slug, req.query.locale, req.query.apiID, req.query.kind, true) but couldn't figure it out.
I am getting through the preview secret check successfully but never into preview mode.
If the preview mode is working in this project, could you please provide a working preview url with all the query parameters given there is a draft in e.g. /pages/draftpage?

seed.js: ADMIN_JWT_SECRET appended to existing line and yarn seed not copying images

Hi,

i just encountered that this line in https://github.com/strapi/foodadvisor/blob/master/api/script/seed.js#L100 (probably) causes the new variable ADMIN_JWT_SECRET to be appended in the same line as STRAPI_ADMIN_CLIENT_PREVIEW_SECRET which causes a non-working preview url.

tried it via unpublishing an article and then clicking the preview button, this was the response:

// 20220420084409
// http://localhost:3000/api/preview?secret=ARNFCb9zrC9ZHm5hZzCigWivD40icS4sADMIN_JWT_SECRET=68igkh9bvAKeIRqdFZ1lTZdldsxWBKIhVRq0lMz38SiuF5xws9i7+ZvEorNqRE9vB4FD4lro3hVfi4ozbwo+Pw==&slug=7-places-worth-visiting-for-the-food-alone&locale=en&apiID=article&kind=collectionType
{
  "message": "Invalid token"
}

Adding a & before ADMIN_JWT_SECRET or completely removing ADMIN_JWT_SECRET= and its value from the url solved the problem.

Furthermore, yarn seed seems to have problems on windows

yarn && yarn seed && yarn develop
yarn install v1.22.18
[1/5] Validating package.json...
[2/5] Resolving packages...
success Already up-to-date.
Done in 0.51s.
yarn run v1.22.18
$ node script/seed.js
Failed to move C:\strapi\foodadvisor\api\data\uploads to  public\uploads
Done in 1.27s.

My workaround was to copy the imagefiles from data.zip to public/uploads

PageNotFound error on client

Related Issue: #104
I got the same issue. Tried running yarn seed on the /api folder.
Still didn't solve the issue.
Both apps run successfully without any errors but the client fails to load content and returns a 404 error.

Client error in Foodadvisor V2

Hello,

I'm getting some errors in the client for Foodadvisor V2 when browsing restaurants via this URL / Slug (All the restaurants have the same problem) :

http://localhost:3000/restaurants/latitude-15-degrees-restaurant?lang=en

2021-08-31_11-06

Testing under Linux and normally have no problems developing in NextJS.

ENAMETOOLONG when trying to seed project

I consistently get errors when trying to seed this demo project, both using yarn and npm. After pulling this repo, I've followed the instructions as per the README.

The error I'm getting is as follows:

$ npm run seed

> [email protected] seed /home/claesenm/IdeaProjects/foodadvisor/api
> node scripts/seed.js

events.js:377
      throw er; // Unhandled 'error' event
      ^

Error: ENAMETOOLONG: name too long, open 'data/uploads/small_14567577_1598088933819868_618245593398930877_o_jpg_nc_cat_102_and_ccb_1_3_and_nc_sid_e3f864_and_nc_ohc_Wy7_N98_Cc_Nm4_AX_8fs_Rou_and_nc_ht_scontent_cdg2_1_a46e8e491a.xx&oh=035daa982eb48eef8a13d92d42f59d4d&oe=60E4E301'
Emitted 'error' event on Extract instance at:
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  errno: -36,
  code: 'ENAMETOOLONG',
  syscall: 'open',
  path: 'data/uploads/small_14567577_1598088933819868_618245593398930877_o_jpg_nc_cat_102_and_ccb_1_3_and_nc_sid_e3f864_and_nc_ohc_Wy7_N98_Cc_Nm4_AX_8fs_Rou_and_nc_ht_scontent_cdg2_1_a46e8e491a.xx&oh=035daa982eb48eef8a13d92d42f59d4d&oe=60E4E301'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] seed: `node scripts/seed.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] seed script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/claesenm/.npm/_logs/2021-11-17T10_03_15_977Z-debug.log

Environment details:

  • OS: Ubuntu 20.04
  • npm version 6.14.14
  • node version 14.17.5
  • commit 5f541df7ce7d1c0d39336c55f396c32f45ff2977

Sort restaurants by likes

Hi,

After looking through the strapi documentation, there doesn't seem to be a way to sort a query by the properties of a relationship. As an example: sorting restaurants in this demo by either total number of likes or reviews. I know I can tap into knex and send a custom query. Is this the route I should take?

Any guidance would be greatly appreciated.

Thank you for the time,

Trying to understand more about Strapi and GraphQL

Hello. I'm pretty new to Graph QL, and I've been looking into how Strapi handles the n+1 problem of loading data. I set the backend database debug: true, and I ran the following graphql query on the Foodadvisor application:

GraphQL query

query {
  restaurants(limit: 12) {
    id
    description
    district
    cover {
      url
    }
    category {
      name
    }
    name
    note
    price
    reviews {
      note
      content
    }
  }
  restaurantsConnection {
    aggregate {
      count
    }
  }
  categories {
    id
    name
  }
}

Here's part of the debug logs I see. Please keep in mind this is only for the restaurants part of the query:

Logs

{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '26914f81-24ad-4a92-92cd-1b40a0770cd2',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ee6f0427-bf2f-4140-9ba4-c78344d0fd99',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '675cd881-1690-47aa-ad14-855ce1d65bdb',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 1 ],
  __knexQueryUid: '8c02a128-5b94-4807-9b95-08fef7f03625',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 2 ],
  __knexQueryUid: '5aec981c-7e13-4508-8964-6482499ca735',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 3 ],
  __knexQueryUid: 'e4932c32-1ca0-4d27-bc15-488e6469e425',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 4 ],
  __knexQueryUid: 'a5e2a4d1-cc5c-457d-a106-0864ea3b152d',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 5 ],
  __knexQueryUid: '752310fe-ee55-4f17-b363-9665eae31c20',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 6 ],
  __knexQueryUid: '18ee0569-0d77-44d2-8920-be9ef7bd1860',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 7 ],
  __knexQueryUid: 'a9673a0f-e0a7-4306-8d25-3a266db0abac',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 9 ],
  __knexQueryUid: '5ddf848c-eccd-478f-8981-ec6ef2f2572e',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 10 ],
  __knexQueryUid: 'a7042eb5-0cec-4109-a4af-b138c4b511ae',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 11 ],
  __knexQueryUid: '9f18b66b-bc37-4ace-8b8e-877966ad61c6',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 12 ],
  __knexQueryUid: '3953a8b7-e9ea-47c9-954c-070a5fc629bf',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}

And the same thing for the views part of the query:

Logs

{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '1' ],
  __knexQueryUid: '98410d14-8716-4c63-9779-a6be3b36b66d',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '2' ],
  __knexQueryUid: '99811e9c-8eb1-45de-b4cd-5224c52fcad9',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '3' ],
  __knexQueryUid: 'bd8da4e2-a5f1-45ef-adf2-f72b3a1a9b6f',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '4' ],
  __knexQueryUid: 'fd15a99a-4b1d-4333-9ceb-fa5e4c9661c9',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '5' ],
  __knexQueryUid: '59ab6f1f-987b-4250-b0b8-127f8d9df48f',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '6' ],
  __knexQueryUid: 'a72dd187-a7a6-414d-8d85-9eef46390b26',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '7' ],
  __knexQueryUid: 'f71ae3ca-d10f-4a29-8891-bbf2947baabd',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '8' ],
  __knexQueryUid: 'f436cecf-672c-4366-b43b-2fc6f45b0600',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '9' ],
  __knexQueryUid: 'fad32e0c-a484-4ee6-9ab4-82a4d5e436ed',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '10' ],
  __knexQueryUid: 'f852b6d3-bcbd-46da-ace3-725a92f55d9a',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '11' ],
  __knexQueryUid: 'e01ef6f7-73f1-4e6c-b88b-8c43f2c13149',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '12' ],
  __knexQueryUid: 'a373630f-151c-46ae-8a01-e0a9fa111db8',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}

And the same thing for the categories part of the query:

Logs

```js

{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '1' ],
__knexQueryUid: '483c505a-bcb1-4f03-9b1a-97369bf6d3a5',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '6' ],
__knexQueryUid: '78004bc9-f200-427b-bc65-db490016c467',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '8' ],
__knexQueryUid: 'bf2bed14-71af-4663-9576-a279a1fff30f',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '9' ],
__knexQueryUid: '63172f4a-e230-4162-87a2-b608d981042d',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '12' ],
__knexQueryUid: 'd950d850-09cc-43eb-9b0d-335117447ea7',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '13' ],
__knexQueryUid: '1fdd8a51-4d7f-404c-b512-9bb0cd4bd078',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '14' ],
__knexQueryUid: 'f535b335-4146-4dad-af86-6fba60a9b444',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}
{
method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ '10' ],
__knexQueryUid: 'c4ee7022-e95b-4998-b370-76c41f240edd',
sql: 'select distinct categories.* from categories where categories.id in (?)'
}


</p>
</details>

Actually, Let me share all the queries from this database operation. Please this is just going to be a fraction of all the queries because I think I can only scroll in my terminal to a certain limit:

<details>
  <summary>GraphQL query</summary>
<p>

```js
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '2412bc11-8be3-458d-812a-edbd2fe1bd6b',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
    65, 66, 70, 72, 74, 75, 76, 78,
    80, 81, 83, 86, 67, 71, 73, 77,
    79, 82, 84, 87, 68, 85, 69
  ],
  __knexQueryUid: '93a44984-3c53-47fe-8310-1182b2192d8a',
  sql: 'select `components_opening_hours`.* from `components_opening_hours` where `id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
     1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,
    12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
    34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
    45, 46, 47, 48
  ],
  __knexQueryUid: '714b127c-2344-485a-9a1e-2e692b7b0ff6',
  sql: 'select distinct `upload_file`.* from `upload_file` where `upload_file`.`id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) order by `created_at` desc'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
    'cover',       1,  2,
    3,             4,  5,
    6,             7,  8,
    9,             10, 11,
    12,            13, 14,
    15,            16, 17,
    18,            19, 20,
    21,            22, 23,
    24,            25, 26,
    27,            28, 29,
    'restaurants'
  ],
  __knexQueryUid: 'bb9aec32-3b69-4235-b930-645610fae556',
  sql: 'select distinct `upload_file_morph`.* from `upload_file_morph` where `field` = ? and `upload_file_morph`.`related_id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) and `upload_file_morph`.`related_type` = ? order by `order` asc'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
    'opening_hours',
    'components_opening_hours',
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15,
    16,
    17,
    18,
    19,
    20,
    21,
    22,
    23,
    24,
    25,
    26,
    27,
    28,
    29
  ],
  __knexQueryUid: 'fb9549fd-cde2-4712-bee8-450fc9754892',
  sql: 'select distinct `restaurants_components`.* from `restaurants_components` where `field` = ? and `component_type` in (?) and `restaurants_components`.`restaurant_id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) order by `order` asc'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 1, 1 ],
  __knexQueryUid: '2b498ca3-c977-46cb-b8d3-d1aeff6b610d',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 2, 1 ],
  __knexQueryUid: '797673c6-327b-4768-845f-462727ff989b',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 3, 1 ],
  __knexQueryUid: 'b1e4ff4d-1c7e-459b-8ea7-8fe6c3e1eb52',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 4, 1 ],
  __knexQueryUid: '62ecd2a1-df80-4e1f-a3ec-4bd28badfa7b',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 5, 1 ],
  __knexQueryUid: '67125d46-404a-486f-9ca4-94a4f0040bc5',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 6, 1 ],
  __knexQueryUid: '5956a15a-f651-4e93-b235-26bfe73700ff',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 7, 1 ],
  __knexQueryUid: '59057bb5-7e82-47d2-bb2b-5a6d76a59430',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 8, 1 ],
  __knexQueryUid: '9481bbff-878c-4f17-8495-7da77fb395f3',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 9, 1 ],
  __knexQueryUid: '7d389a56-ba72-4a96-b6c4-a40863242731',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 10, 1 ],
  __knexQueryUid: '548b310d-0575-4732-b5a2-abcfeeefa849',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 11, 1 ],
  __knexQueryUid: '87354ad4-f7a5-498d-b55d-adc1dcb83e74',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 12, 1 ],
  __knexQueryUid: '7c4eb45d-76c6-4565-a864-d35274036793',
  sql: 'select avg(`note`) as `note` from `reviews` where `restaurant` = ? limit ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
     1,  2,  3,   4,  5,  6,  7,  8,  9, 10, 11, 12,
    13, 14, 15,  16, 17, 18, 19, 20, 21, 22, 23, 24,
    25, 26, 27,  28, 29, 30, 31, 32, 33, 34, 35, 36,
    37, 38, 39,  40, 41, 42, 43, 44, 45, 46, 47, 48,
    49, 50, 51,  52, 53, 54, 55, 56, 57, 58, 59, 60,
    61, 62, 63,  64, 65, 66, 67, 68, 69, 70, 71, 72,
    73, 74, 75,  76, 77, 78, 79, 80, 81, 82, 83, 84,
    85, 86, 87,  88, 89, 90, 91, 92, 93, 94, 95, 96,
    97, 98, 99, 100,
    ... 16 more items
  ],
  __knexQueryUid: '45badb32-9044-4bf2-a77a-e45fd464657a',
  sql: 'select distinct `upload_file`.* from `upload_file` where `upload_file`.`id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) order by `created_at` desc'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [
     65,  66,  70,  72,  74,  75,  76,  78,  80,  81,  83,
     86,  88,  89,  92,  94,  98, 101, 104, 105, 109, 113,
    116, 118, 119, 121, 124, 125, 128,  67,  71,  73,  77,
     79,  82,  84,  87,  90,  93,  95,  99, 102, 106, 110,
    114, 115, 120, 122, 126,  68,  85,  91,  96, 100, 103,
    107, 111, 117, 123, 127,  69,  97, 108, 112
  ],
  __knexQueryUid: '8a02fd3d-2606-47b9-93f5-8c9c731581f8',
  sql: 'select `components_opening_hours`.* from `components_opening_hours` where `id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '29f1be7b-e0ce-4176-812b-c792657b9c80',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '901a1bf2-115b-4cc5-9a27-08f95a1084da',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '0c8aa798-7538-4c10-9d36-2f40a22633cb',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'd53396a3-0763-400f-8414-ae540a925f29',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '609dca01-5b18-462f-bd41-3a77488ee602',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'a0a7943f-e407-42e2-be60-aa2d0531922a',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'bb237933-01c1-487b-bd84-5a3d56d6756c',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '322f78be-df12-46cc-a75c-199167630fd3',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '38fa8a78-976c-4f08-a56f-bba3449e6f70',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '3bbf708d-3a8a-41f8-a5ac-389d24f0d5b2',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '8125778d-5994-4213-b144-f3a5fab3fc3e',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'af0e8f75-e7c3-4cdb-895d-4e6353732037',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'f528a101-4d79-4362-a62d-95bc54f036c5',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '067a798b-8ba5-46c5-9426-5c35b7eea83b',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '4220bd42-0ead-4ce2-b923-54664906cf30',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ba36567a-97c0-43d9-b0d0-38de765a1fb4',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '41a5a79f-c622-4192-a1ad-e811f3be9f6f',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'bfa55640-bd47-4a28-9259-5441322e7588',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '210e0837-9921-453b-a55f-6dab525cd94e',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'f715e338-2a1b-441c-a9a1-d22b5b08d0fb',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '78975f52-cf51-46b9-924d-d2316f7d03f0',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '72c2ab9b-4250-4f8a-ab04-26f9259a1958',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'c8b8825f-871e-4e4e-9805-082718f2503c',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'd0d403c7-0d40-406a-aadd-0feaf8305bca',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '0e13d0c0-8ca3-481b-8e18-1381cf4cb65f',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '277125d3-165c-4f90-98f8-3101a0711956',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '6c393c65-adf6-4c7b-8211-7a53d0b6e771',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '125b7b8f-93c7-4e0f-bff7-7e7697b9ab7d',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '39d0cbda-3c02-4f5a-8c18-95528e2522b4',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '3b850097-bfe7-4d45-b9d9-811c99afd623',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'e92368d6-8c47-41b0-9827-584ec81ceda1',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '3819463b-c840-4fda-8ba3-aaed1e056e65',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '5698afc5-ed00-4f9b-bdf8-9cc290a65d48',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '3a841748-b653-4552-8fb3-090536569fdc',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'd97228cd-2f77-4460-aa5b-e9659b70791e',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '5133d2ae-346f-45e3-af62-e4c367fca35d',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '813bb450-6029-45a6-bbb3-140e5c0d8cbe',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '85ae499f-79e6-4c6a-b381-9be62b35377b',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '2c2b8721-331d-49ff-9bba-bf94fc082905',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '102b29c8-37dd-489f-b268-7a93a9fa5c28',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '8fde7628-12ce-47cc-b693-53fae3868815',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '4d6db60f-549c-44d2-9dda-c8b75f230111',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '26914f81-24ad-4a92-92cd-1b40a0770cd2',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '513caaf9-749e-4cb5-b9d0-3e675ba75c2d',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ffea4d6d-5049-4d48-a1fc-1f488dc02c4a',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ed37d801-fd1d-45e4-9b45-63768a7a3fd0',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '0f2eed1e-7917-4859-a54c-84763e66fdcf',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ba916499-3e49-4c65-b2aa-eabfdd3d0bfe',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '7f7814ea-013e-4810-b27e-40ad65c19adb',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '6525462f-4957-4400-a5af-f7aa43f63aeb',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'e2a3465d-43e5-446f-8c7d-37a1b04c7edc',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '0c889c2a-e681-43c8-94d7-fc3604e02feb',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'ee6f0427-bf2f-4140-9ba4-c78344d0fd99',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '03c18040-ce0e-405e-8307-3a0447a7048b',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '334a0855-f171-4bee-a2f1-1b9b37307000',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: 'c276e1c9-d852-446e-bd7f-205aef397a5d',
  sql: 'select distinct `likes`.* from `likes` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '19df4d02-a501-4110-a633-7885ef57ae81',
  sql: 'select distinct `users-permissions_user`.* from `users-permissions_user` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '675cd881-1690-47aa-ad14-855ce1d65bdb',
  sql: 'select distinct `restaurants`.* from `restaurants` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '157a9af9-89d9-4765-8f07-eb0547d5676f',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 0 ],
  __knexQueryUid: '6f2ce094-5819-4186-90be-050b15411b5b',
  sql: 'select distinct `strapi_administrator`.* from `strapi_administrator` where 1 = ?'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '1' ],
  __knexQueryUid: '483c505a-bcb1-4f03-9b1a-97369bf6d3a5',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '6' ],
  __knexQueryUid: '78004bc9-f200-427b-bc65-db490016c467',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '8' ],
  __knexQueryUid: 'bf2bed14-71af-4663-9576-a279a1fff30f',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '9' ],
  __knexQueryUid: '63172f4a-e230-4162-87a2-b608d981042d',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '12' ],
  __knexQueryUid: 'd950d850-09cc-43eb-9b0d-335117447ea7',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '13' ],
  __knexQueryUid: '1fdd8a51-4d7f-404c-b512-9bb0cd4bd078',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '14' ],
  __knexQueryUid: 'f535b335-4146-4dad-af86-6fba60a9b444',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '10' ],
  __knexQueryUid: 'c4ee7022-e95b-4998-b370-76c41f240edd',
  sql: 'select distinct `categories`.* from `categories` where `categories`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '1' ],
  __knexQueryUid: '98410d14-8716-4c63-9779-a6be3b36b66d',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '2' ],
  __knexQueryUid: '99811e9c-8eb1-45de-b4cd-5224c52fcad9',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '3' ],
  __knexQueryUid: 'bd8da4e2-a5f1-45ef-adf2-f72b3a1a9b6f',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '4' ],
  __knexQueryUid: 'fd15a99a-4b1d-4333-9ceb-fa5e4c9661c9',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '5' ],
  __knexQueryUid: '59ab6f1f-987b-4250-b0b8-127f8d9df48f',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '6' ],
  __knexQueryUid: 'a72dd187-a7a6-414d-8d85-9eef46390b26',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '7' ],
  __knexQueryUid: 'f71ae3ca-d10f-4a29-8891-bbf2947baabd',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '8' ],
  __knexQueryUid: 'f436cecf-672c-4366-b43b-2fc6f45b0600',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '9' ],
  __knexQueryUid: 'fad32e0c-a484-4ee6-9ab4-82a4d5e436ed',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '10' ],
  __knexQueryUid: 'f852b6d3-bcbd-46da-ace3-725a92f55d9a',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '11' ],
  __knexQueryUid: 'e01ef6f7-73f1-4e6c-b88b-8c43f2c13149',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ '12' ],
  __knexQueryUid: 'a373630f-151c-46ae-8a01-e0a9fa111db8',
  sql: 'select distinct `reviews`.* from `reviews` left join `main`.`restaurants` as `restaurants_1` on `restaurants_1`.`id` = `reviews`.`restaurant` where `restaurants_1`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 1 ],
  __knexQueryUid: '8c02a128-5b94-4807-9b95-08fef7f03625',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 2 ],
  __knexQueryUid: '5aec981c-7e13-4508-8964-6482499ca735',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 3 ],
  __knexQueryUid: 'e4932c32-1ca0-4d27-bc15-488e6469e425',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 4 ],
  __knexQueryUid: 'a5e2a4d1-cc5c-457d-a106-0864ea3b152d',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 5 ],
  __knexQueryUid: '752310fe-ee55-4f17-b363-9665eae31c20',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 6 ],
  __knexQueryUid: '18ee0569-0d77-44d2-8920-be9ef7bd1860',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 7 ],
  __knexQueryUid: 'a9673a0f-e0a7-4306-8d25-3a266db0abac',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 9 ],
  __knexQueryUid: '5ddf848c-eccd-478f-8981-ec6ef2f2572e',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 10 ],
  __knexQueryUid: 'a7042eb5-0cec-4109-a4af-b138c4b511ae',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 11 ],
  __knexQueryUid: '9f18b66b-bc37-4ace-8b8e-877966ad61c6',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}
{
  method: 'select',
  options: {},
  timeout: false,
  cancelOnTimeout: false,
  bindings: [ 12 ],
  __knexQueryUid: '3953a8b7-e9ea-47c9-954c-070a5fc629bf',
  sql: 'select distinct `restaurants`.* from `restaurants` where `restaurants`.`id` in (?)'
}

Looks like strapi makes a database query for every restaurant fetched from the database.

Also, please notice all the unrelated queries about components, likes, opening hours, avg notes etc.

I would love to find out if there's any way to improve this, or if this is a problem that can't be solved.

Just want to learn more about how this system works.

Thanks !

Change url from :id to :slug (custom uid field)

Hi there,

I was wondering if anyone would be able to help out with changing the :id in the url of the frontend for the restaurants to a custom field that is also unique (let's say slug). This in order to prettify the urls.

Suggested change in the containers/App/index.js file from:
<Route path="/:id/:content" component={RestaurantPage} exact />
to
<Route path="/:slug/:content" component={RestaurantPage} exact />

Any help here would be appreciated!

Regards,
Yannick

NodeJS 16 is EOL

I just checked this out to try and run it with yarn && yarn seed && yarn develop and got the following error:

[3/5] 🚚  Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=12.x.x <=16.x.x". Got "18.17.1"
error Found incompatible module.

Node 16 had end of life last week, is there a possibility of updating this example to work with the new LTS (18)?

TypeError: container is not a function

Hi

I am using macOS Catalina and Strapi food advisor version 3.0.0.
I was renaming the restaurant type to event type and when Strapi asked to restart the server, it never got back:

error TypeError: container is not a function
    at /Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/knex/lib/transaction.js:48:20
From previous event:
    at /Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/knex/lib/transaction.js:41:10
    at processImmediate (internal/timers.js:456:21)
From previous event:
    at new Transaction (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/knex/lib/transaction.js:36:39)
    at Client_SQLite3.transaction (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/knex/lib/client.js:141:12)
    at Function.transaction (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/knex/lib/util/make-knex.js:56:31)
    at migrateForBookshelf (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-plugin-i18n/config/functions/migrations/content-type/disable/migrate-for-bookshelf.js:12:30)
    at Object.before (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-plugin-i18n/config/functions/migrations/content-type/disable/index.js:22:11)
    at async MigrationManager.runBefore (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-database/lib/migration-manager.js:46:9)
    at async MigrationManager.run (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-database/lib/migration-manager.js:19:5)
    at async module.exports (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-connector-bookshelf/lib/build-database-schema.js:407:3)
    at async /Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-connector-bookshelf/lib/mount-models.js:671:11
    at async mountConnection (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-connector-bookshelf/lib/index.js:95:7)
    at async Promise.all (index 0)
    at async Object.initialize (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-database/lib/connector-registry.js:30:9)
    at async DatabaseManager.initialize (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi-database/lib/database-manager.js:43:5)
    at async Strapi.load (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi/lib/Strapi.js:354:5)
    at async Strapi.start (/Users/jorgenunes/webdev/strapi/adac/foodadvisor/api/node_modules/strapi/lib/Strapi.js:196:9)
error Command failed with exit code 1.

Cant able to login in admin panel

Hi,

I have cloned your project and installed it successfully. The front end also working fine. But in backend cant able to login the admin panel getting the An internal server error occurred error. Kindly give me any need full suggestions.

Thanks.

Missing setup script

Hi!
I love Strapi and this project seems perfect to understand how that CMS works. I just have a problem with the api installation: I have to run npm run setup --plugins, but no setup script is set in the package.json file.
I am doing something wrong? 🤔

Thanks!

Deleting the Restaurant content type breaks the app

Deleting the Restaurant content type breaks the app.

Steps to reproduce:

  • Go to the Content-Types Builder.
  • Click on the "Restaurant" Content-Type.
  • Click on the "pen" icon.
  • Delete the Content-Type.

Strapi version: 3.2.5
OS: MacOS 10.14.6
Database: SQLite (with seed data)

The server stops with the error below:

[2020-11-02T11:17:59.034Z] error Error: Cannot extend type "Restaurant" because it is not defined. Did you mean "RestaurantNote"?
    at assertValidSDLExtension (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/graphql/validation/validate.js:124:11)
    at Object.extendSchema (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/graphql/utilities/extendSchema.js:77:43)
    at Object.buildSchemaFromTypeDefinitions (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/graphql-tools/dist/generate/buildSchemaFromTypeDefinitions.js:29:28)
    at makeExecutableSchema (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/graphql-tools/dist/makeExecutableSchema.js:26:29)
    at Object.generateSchema (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/strapi-plugin-graphql/services/schema-generator.js:98:20)
    at Object.initialize (/Users/pierreburgy/Desktop/foodadvisor/api/node_modules/strapi-plugin-graphql/hooks/graphql/index.js:81:9)
    at /Users/pierreburgy/Desktop/foodadvisor/api/node_modules/strapi/lib/hooks/index.js:37:28
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.