Giter Club home page Giter Club logo

foodadvisor's Introduction

Strapi logo Strapi logo

Open-source headless CMS, self-hosted or Cloud you’re in control.

The leading open-source headless CMS, 100% JavaScript/TypeScript, flexible and fully customizable.

Cloud · Try live demo · Strapi 5 (coming soon)


NPM Version Tests Strapi on Discord Strapi Nightly Release Build Status


Administration panel


Strapi Community Edition is a free and open-source headless CMS enabling you to manage any content, anywhere.

  • Self-hosted or Cloud: You can host and scale Strapi projects the way you want. You can save time by deploying to Strapi Cloud or deploy to the hosting platform you want**: AWS, Azure, Google Cloud, DigitalOcean.
  • Modern Admin Panel: Elegant, entirely customizable and a fully extensible admin panel.
  • Multi-database support: You can choose the database you prefer: PostgreSQL, MySQL, MariaDB, and SQLite.
  • Customizable: You can quickly build your logic by fully customizing APIs, routes, or plugins to fit your needs perfectly.
  • Blazing Fast and Robust: Built on top of Node.js and TypeScript, Strapi delivers reliable and solid performance.
  • Front-end Agnostic: Use any front-end framework (React, Next.js, Vue, Angular, etc.), mobile apps or even IoT.
  • Secure by default: Reusable policies, CORS, CSP, P3P, Xframe, XSS, and more.
  • Powerful CLI: Scaffold projects and APIs on the fly.

Getting Started

Read the Getting Started tutorial or follow the steps below:

⏳ Installation

Install Strapi with this Quickstart command to create a Strapi project instantly:

yarn create strapi-app my-project --quickstart

or

  • (Use npm/npx to install the Strapi project.)
npx create-strapi-app my-project --quickstart

This command generates a brand new project with the default features (authentication, permissions, content management, content type builder & file upload). The Quickstart command installs Strapi using a SQLite database which is used for prototyping in development.

Enjoy 🎉

🖐 Requirements

Complete installation requirements can be found in the documentation under Installation Requirements.

Supported operating systems:

  • Ubuntu LTS/Debian 9.x
  • CentOS/RHEL 8
  • macOS Mojave
  • Windows 10
  • Docker

(Please note that Strapi may work on other operating systems, but these are not tested nor officially supported at this time.)

Node:

Strapi only supports maintenance and LTS versions of Node.js. Please refer to the Node.js release schedule for more information. NPM versions installed by default with Node.js are supported. Generally it's recommended to use yarn over npm where possible.

Strapi Version Recommended Minimum
4.14.5 and up 20.x 18.x
4.11.0 and up 18.x 16.x
4.3.9 to 4.10.x 18.x 14.x
4.0.x to 4.3.8 16.x 14.x

Database:

Database Recommended Minimum
MySQL 8.0 5.7.8
MariaDB 10.6 10.3
PostgreSQL 14.0 11.0
SQLite 3 3

We recommend always using the latest version of Strapi stable to start your new projects.

Features

  • Content Types Builder: Build the most flexible publishing experience for your content managers, by giving them the freedom to create any page on the go with fields, components and Dynamic Zones.
  • Media Library: Upload your images, videos, audio or documents to the media library. Easily find the right asset, edit and reuse it.
  • Internationalization: The Internationalization (i18n) plugin allows Strapi users to create, manage and distribute localized content in different languages, called "locales"
  • Role Based Access Control: Create an unlimited number of custom roles and permissions for admin and end users.
  • GraphQL or REST: Consume the API using REST or GraphQL

You can unlock additional features such as SSO, Audit Logs, Review Workflows in Strapi Cloud or Strapi Enterprise.

See more on our website.

Contributing

Please read our Contributing Guide before submitting a Pull Request to the project.

Community support

For general help using Strapi, please refer to the official Strapi documentation. For additional help, you can use one of these channels to ask a question:

Migration

Follow our migration guides on the documentation to keep your projects up-to-date.

Roadmap

Check out our roadmap to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.

Documentation

See our dedicated repository for the Strapi documentation, or view our documentation live:

Try live demo

See for yourself what's under the hood by getting access to a hosted Strapi project with sample data.

License

See the LICENSE file for licensing information.

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

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.

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

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!

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

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

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 !

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.

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)?

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

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: [], };

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.

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"

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,

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.

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

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.

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

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.

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.

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?

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 !

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.

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?

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.

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)

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

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.