diff --git a/.env b/.env new file mode 100644 index 0000000000000000000000000000000000000000..8c34a326a40015c9cdede0156064122ce291bc5f --- /dev/null +++ b/.env @@ -0,0 +1,46 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# https://symfony.com/doc/current/configuration/secrets.html +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=ea3ebbf899855d483050e0d1aad6a759 +###< symfony/framework-bundle ### + +###> doctrine/doctrine-bundle ### +# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# +# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" +# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" +# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" +DATABASE_URL="postgresql://postgres:12345@127.0.0.1:5433/postgres?serverVersion=16&charset=utf8" +###< doctrine/doctrine-bundle ### + +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 +###< symfony/messenger ### + +###> symfony/mailer ### +# MAILER_DSN=null://null +###< symfony/mailer ### +DATABASE_PORT="5433" +NGINX_PORT="80" +APP_BASE_DIR="./" +POSTGRES_USER="postgres" +POSTGRES_PASSWORD="12345" \ No newline at end of file diff --git a/composer.json b/composer.json index e4fcbc19e56f2220a6b384ae8cc1b588f96b40a5..b4e8fa85c17abe252ced221ed44e24f84c416c69 100644 --- a/composer.json +++ b/composer.json @@ -38,6 +38,7 @@ "symfony/string": "7.0.*", "symfony/translation": "7.0.*", "symfony/twig-bundle": "7.0.*", + "symfony/uid": "7.0.*", "symfony/ux-turbo": "^2.16", "symfony/validator": "6.4.*", "symfony/web-link": "7.0.*", diff --git a/composer.lock b/composer.lock index 8a0131f764178aba4c80592c54804f9a5f3f9f08..45f3c979bd82b3a193fdf2cb0843b2728db3ba31 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "82e62585d889ab4827bf4bf460016802", + "content-hash": "b1f7459f48c910e2a39af6ee5a9b80eb", "packages": [ { "name": "composer/semver", @@ -5241,6 +5241,85 @@ ], "time": "2024-01-29T20:11:03+00:00" }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, { "name": "symfony/process", "version": "v7.0.4", @@ -6729,6 +6808,80 @@ ], "time": "2024-02-15T11:33:06+00:00" }, + { + "name": "symfony/uid", + "version": "v7.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b", + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.0.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T15:02:46+00:00" + }, { "name": "symfony/ux-turbo", "version": "v2.16.0", diff --git a/migrations/Version20240502094853.php b/migrations/Version20240502094853.php new file mode 100644 index 0000000000000000000000000000000000000000..1727aac28652f702d54ae004523e5a31bec461cd --- /dev/null +++ b/migrations/Version20240502094853.php @@ -0,0 +1,166 @@ +addSql('DROP SEQUENCE gallery_id_seq CASCADE'); + $this->addSql('DROP SEQUENCE seo_id_seq CASCADE'); + $this->addSql('CREATE TABLE file (id UUID NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(255) NOT NULL, size INT NOT NULL, type VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN file.id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE gallery (id UUID NOT NULL, restaurant_id UUID NOT NULL, file_id UUID NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_472B783AB1E7706E ON gallery (restaurant_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_472B783A93CB796C ON gallery (file_id)'); + $this->addSql('COMMENT ON COLUMN gallery.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN gallery.restaurant_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN gallery.file_id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE kitchen (id UUID NOT NULL, restaurant_id UUID NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_EAA3CE34B1E7706E ON kitchen (restaurant_id)'); + $this->addSql('COMMENT ON COLUMN kitchen.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN kitchen.restaurant_id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE news (id UUID NOT NULL, type_id UUID NOT NULL, seo_id UUID NOT NULL, file_id UUID NOT NULL, code VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, sort INT NOT NULL, preview_image VARCHAR(255) NOT NULL, detail_image VARCHAR(255) NOT NULL, preview_text TEXT NOT NULL, detail_text TEXT NOT NULL, main_page_render BOOLEAN NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_1DD39950C54C8C93 ON news (type_id)'); + $this->addSql('CREATE INDEX IDX_1DD3995097E3DD86 ON news (seo_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_1DD3995093CB796C ON news (file_id)'); + $this->addSql('COMMENT ON COLUMN news.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news.type_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news.seo_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news.file_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news.create_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN news.update_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('CREATE TABLE news_news_category (news_id UUID NOT NULL, news_category_id UUID NOT NULL, PRIMARY KEY(news_id, news_category_id))'); + $this->addSql('CREATE INDEX IDX_1A91D6D6B5A459A0 ON news_news_category (news_id)'); + $this->addSql('CREATE INDEX IDX_1A91D6D63B732BAD ON news_news_category (news_category_id)'); + $this->addSql('COMMENT ON COLUMN news_news_category.news_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news_news_category.news_category_id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE news_category (id UUID NOT NULL, name VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN news_category.id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE news_comment (id UUID NOT NULL, news_id_id UUID NOT NULL, moderator_id_id UUID NOT NULL, user_id_id UUID NOT NULL, moderated BOOLEAN NOT NULL, user_name VARCHAR(255) NOT NULL, text VARCHAR(255) NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_C3904E8A5FB1909 ON news_comment (news_id_id)'); + $this->addSql('CREATE INDEX IDX_C3904E8ACEB712DF ON news_comment (moderator_id_id)'); + $this->addSql('CREATE INDEX IDX_C3904E8A9D86650F ON news_comment (user_id_id)'); + $this->addSql('COMMENT ON COLUMN news_comment.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news_comment.news_id_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news_comment.moderator_id_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news_comment.user_id_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN news_comment.create_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN news_comment.update_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('CREATE TABLE news_type (id UUID NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN news_type.id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE restaurant (id UUID NOT NULL, type_id_id UUID NOT NULL, settlement_id_id UUID NOT NULL, seo_id UUID NOT NULL, file_id UUID NOT NULL, name VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL, active BOOLEAN NOT NULL, sort INT NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, coordinates TEXT NOT NULL, description TEXT NOT NULL, check_price VARCHAR(255) NOT NULL, check_info TEXT NOT NULL, phone JSON NOT NULL, email JSON NOT NULL, address JSON NOT NULL, site VARCHAR(255) NOT NULL, preview_image VARCHAR(255) NOT NULL, detail_image VARCHAR(255) NOT NULL, how_to_find TEXT NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_EB95123F714819A0 ON restaurant (type_id_id)'); + $this->addSql('CREATE INDEX IDX_EB95123F45EC589B ON restaurant (settlement_id_id)'); + $this->addSql('CREATE INDEX IDX_EB95123F97E3DD86 ON restaurant (seo_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_EB95123F93CB796C ON restaurant (file_id)'); + $this->addSql('COMMENT ON COLUMN restaurant.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN restaurant.type_id_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN restaurant.settlement_id_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN restaurant.seo_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN restaurant.file_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN restaurant.create_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN restaurant.update_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN restaurant.coordinates IS \'(DC2Type:simple_array)\''); + $this->addSql('CREATE TABLE restaurant_type (id UUID NOT NULL, name VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN restaurant_type.id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE seo (id UUID NOT NULL, title VARCHAR(255) NOT NULL, description VARCHAR(255) NOT NULL, keywords VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN seo.id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE settlement (id UUID NOT NULL, name VARCHAR(255) NOT NULL, code VARCHAR(255) NOT NULL, coordinates TEXT NOT NULL, create_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, update_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN settlement.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN settlement.coordinates IS \'(DC2Type:array)\''); + $this->addSql('COMMENT ON COLUMN settlement.create_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN settlement.update_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('CREATE TABLE tags (id UUID NOT NULL, restaurant_id UUID NOT NULL, name VARCHAR(255) NOT NULL, list TEXT NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_6FBC9426B1E7706E ON tags (restaurant_id)'); + $this->addSql('COMMENT ON COLUMN tags.id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN tags.restaurant_id IS \'(DC2Type:uuid)\''); + $this->addSql('COMMENT ON COLUMN tags.list IS \'(DC2Type:simple_array)\''); + $this->addSql('CREATE TABLE "user" (id UUID NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('COMMENT ON COLUMN "user".id IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)'); + $this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)'); + $this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)'); + $this->addSql('COMMENT ON COLUMN messenger_messages.created_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN messenger_messages.available_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN messenger_messages.delivered_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('CREATE OR REPLACE FUNCTION notify_messenger_messages() RETURNS TRIGGER AS $$ + BEGIN + PERFORM pg_notify(\'messenger_messages\', NEW.queue_name::text); + RETURN NEW; + END; + $$ LANGUAGE plpgsql;'); + $this->addSql('DROP TRIGGER IF EXISTS notify_trigger ON messenger_messages;'); + $this->addSql('CREATE TRIGGER notify_trigger AFTER INSERT OR UPDATE ON messenger_messages FOR EACH ROW EXECUTE PROCEDURE notify_messenger_messages();'); + $this->addSql('ALTER TABLE gallery ADD CONSTRAINT FK_472B783AB1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE gallery ADD CONSTRAINT FK_472B783A93CB796C FOREIGN KEY (file_id) REFERENCES file (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE kitchen ADD CONSTRAINT FK_EAA3CE34B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news ADD CONSTRAINT FK_1DD39950C54C8C93 FOREIGN KEY (type_id) REFERENCES news_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news ADD CONSTRAINT FK_1DD3995097E3DD86 FOREIGN KEY (seo_id) REFERENCES seo (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news ADD CONSTRAINT FK_1DD3995093CB796C FOREIGN KEY (file_id) REFERENCES file (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news_news_category ADD CONSTRAINT FK_1A91D6D6B5A459A0 FOREIGN KEY (news_id) REFERENCES news (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news_news_category ADD CONSTRAINT FK_1A91D6D63B732BAD FOREIGN KEY (news_category_id) REFERENCES news_category (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8A5FB1909 FOREIGN KEY (news_id_id) REFERENCES news (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8ACEB712DF FOREIGN KEY (moderator_id_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE news_comment ADD CONSTRAINT FK_C3904E8A9D86650F FOREIGN KEY (user_id_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F714819A0 FOREIGN KEY (type_id_id) REFERENCES restaurant_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F45EC589B FOREIGN KEY (settlement_id_id) REFERENCES settlement (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F97E3DD86 FOREIGN KEY (seo_id) REFERENCES seo (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE restaurant ADD CONSTRAINT FK_EB95123F93CB796C FOREIGN KEY (file_id) REFERENCES file (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE tags ADD CONSTRAINT FK_6FBC9426B1E7706E FOREIGN KEY (restaurant_id) REFERENCES restaurant (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('CREATE SEQUENCE gallery_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('CREATE SEQUENCE seo_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('ALTER TABLE gallery DROP CONSTRAINT FK_472B783AB1E7706E'); + $this->addSql('ALTER TABLE gallery DROP CONSTRAINT FK_472B783A93CB796C'); + $this->addSql('ALTER TABLE kitchen DROP CONSTRAINT FK_EAA3CE34B1E7706E'); + $this->addSql('ALTER TABLE news DROP CONSTRAINT FK_1DD39950C54C8C93'); + $this->addSql('ALTER TABLE news DROP CONSTRAINT FK_1DD3995097E3DD86'); + $this->addSql('ALTER TABLE news DROP CONSTRAINT FK_1DD3995093CB796C'); + $this->addSql('ALTER TABLE news_news_category DROP CONSTRAINT FK_1A91D6D6B5A459A0'); + $this->addSql('ALTER TABLE news_news_category DROP CONSTRAINT FK_1A91D6D63B732BAD'); + $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8A5FB1909'); + $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8ACEB712DF'); + $this->addSql('ALTER TABLE news_comment DROP CONSTRAINT FK_C3904E8A9D86650F'); + $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F714819A0'); + $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F45EC589B'); + $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F97E3DD86'); + $this->addSql('ALTER TABLE restaurant DROP CONSTRAINT FK_EB95123F93CB796C'); + $this->addSql('ALTER TABLE tags DROP CONSTRAINT FK_6FBC9426B1E7706E'); + $this->addSql('DROP TABLE file'); + $this->addSql('DROP TABLE gallery'); + $this->addSql('DROP TABLE kitchen'); + $this->addSql('DROP TABLE news'); + $this->addSql('DROP TABLE news_news_category'); + $this->addSql('DROP TABLE news_category'); + $this->addSql('DROP TABLE news_comment'); + $this->addSql('DROP TABLE news_type'); + $this->addSql('DROP TABLE restaurant'); + $this->addSql('DROP TABLE restaurant_type'); + $this->addSql('DROP TABLE seo'); + $this->addSql('DROP TABLE settlement'); + $this->addSql('DROP TABLE tags'); + $this->addSql('DROP TABLE "user"'); + $this->addSql('DROP TABLE messenger_messages'); + } +} diff --git a/src/Entity/File.php b/src/Entity/File.php new file mode 100644 index 0000000000000000000000000000000000000000..cb72c42ce414e8b8e64e73f6ad70e17690965b19 --- /dev/null +++ b/src/Entity/File.php @@ -0,0 +1,99 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(string $description): static + { + $this->description = $description; + + return $this; + } + + public function getSize(): ?int + { + return $this->size; + } + + public function setSize(int $size): static + { + $this->size = $size; + + return $this; + } + + public function getType(): ?string + { + return $this->type; + } + + public function setType(string $type): static + { + $this->type = $type; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(string $url): static + { + $this->url = $url; + + return $this; + } +} diff --git a/src/Entity/Gallery.php b/src/Entity/Gallery.php new file mode 100644 index 0000000000000000000000000000000000000000..c2def0497ec0325231be33a4dd36ebbd0c8907e9 --- /dev/null +++ b/src/Entity/Gallery.php @@ -0,0 +1,57 @@ +id; + } + + public function getRestaurant(): ?Restaurant + { + return $this->restaurant; + } + + public function setRestaurant(Restaurant $restaurant): static + { + $this->restaurant = $restaurant; + + return $this; + } + + public function getFile(): ?File + { + return $this->file; + } + + public function setFile(File $file): static + { + $this->file = $file; + + return $this; + } +} diff --git a/src/Entity/Kitchen.php b/src/Entity/Kitchen.php new file mode 100644 index 0000000000000000000000000000000000000000..1d9fbbc68bc93e4aee356d1f141b55e74287e6dd --- /dev/null +++ b/src/Entity/Kitchen.php @@ -0,0 +1,54 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getRestaurant(): ?Restaurant + { + return $this->restaurant; + } + + public function setRestaurant(?Restaurant $restaurant): static + { + $this->restaurant = $restaurant; + + return $this; + } +} diff --git a/src/Entity/News.php b/src/Entity/News.php new file mode 100644 index 0000000000000000000000000000000000000000..296d6bedeeafdef3749239f7f9a0a578cb9b5fd3 --- /dev/null +++ b/src/Entity/News.php @@ -0,0 +1,259 @@ + + */ + #[ORM\ManyToMany(targetEntity: NewsCategory::class)] + private Collection $newsCategories; + + #[ORM\ManyToOne] + #[ORM\JoinColumn(nullable: false)] + private ?Seo $seo = null; + + #[ORM\OneToOne(cascade: ['persist', 'remove'])] + #[ORM\JoinColumn(nullable: false)] + private ?File $file = null; + + public function __construct() + { + $this->newsCategories = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } + + public function isActive(): ?bool + { + return $this->active; + } + + public function setActive(bool $active): static + { + $this->active = $active; + + return $this; + } + + public function getCreateAt(): ?\DateTimeInterface + { + return $this->createAt; + } + + public function setCreateAt(\DateTimeInterface $createAt): static + { + $this->createAt = $createAt; + + return $this; + } + + public function getUpdateAt(): ?\DateTimeInterface + { + return $this->updateAt; + } + + public function setUpdateAt(\DateTimeInterface $updateAt): static + { + $this->updateAt = $updateAt; + + return $this; + } + + public function getSort(): ?int + { + return $this->sort; + } + + public function setSort(int $sort): static + { + $this->sort = $sort; + + return $this; + } + + public function getPreviewImage(): ?string + { + return $this->previewImage; + } + + public function setPreviewImage(string $previewImage): static + { + $this->previewImage = $previewImage; + + return $this; + } + + public function getDetailImage(): ?string + { + return $this->detailImage; + } + + public function setDetailImage(string $detailImage): static + { + $this->detailImage = $detailImage; + + return $this; + } + + public function getPreviewText(): ?string + { + return $this->previewText; + } + + public function setPreviewText(string $previewText): static + { + $this->previewText = $previewText; + + return $this; + } + + public function getDetailText(): ?string + { + return $this->detailText; + } + + public function setDetailText(string $detailText): static + { + $this->detailText = $detailText; + + return $this; + } + + public function getType(): ?NewsType + { + return $this->type; + } + + public function setType(?NewsType $type): static + { + $this->type = $type; + + return $this; + } + + public function isMainPageRender(): ?bool + { + return $this->mainPageRender; + } + + public function setMainPageRender(bool $mainPageRender): static + { + $this->mainPageRender = $mainPageRender; + + return $this; + } + + /** + * @return Collection + */ + public function getNewsCategories(): Collection + { + return $this->newsCategories; + } + + public function addNewsCategory(NewsCategory $newsCategory): static + { + if (!$this->newsCategories->contains($newsCategory)) { + $this->newsCategories->add($newsCategory); + } + + return $this; + } + + public function removeNewsCategory(NewsCategory $newsCategory): static + { + $this->newsCategories->removeElement($newsCategory); + + return $this; + } + + public function getSeo(): ?Seo + { + return $this->seo; + } + + public function setSeo(?Seo $seo): static + { + $this->seo = $seo; + + return $this; + } + + public function getFile(): ?File + { + return $this->file; + } + + public function setFile(File $file): static + { + $this->file = $file; + + return $this; + } +} diff --git a/src/Entity/NewsCategory.php b/src/Entity/NewsCategory.php new file mode 100644 index 0000000000000000000000000000000000000000..96ace33c74f3398b13ea96b6f3f45c90e43b86a6 --- /dev/null +++ b/src/Entity/NewsCategory.php @@ -0,0 +1,55 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } +} diff --git a/src/Entity/NewsComment.php b/src/Entity/NewsComment.php new file mode 100644 index 0000000000000000000000000000000000000000..c4f2ed032088fcb22105463ae68641a933e7c3f8 --- /dev/null +++ b/src/Entity/NewsComment.php @@ -0,0 +1,147 @@ +id; + } + + public function getNewsId(): ?News + { + return $this->newsId; + } + + public function setNewsId(News $newsId): static + { + $this->newsId = $newsId; + + return $this; + } + + public function isModerated(): ?bool + { + return $this->moderated; + } + + public function setModerated(bool $moderated): static + { + $this->moderated = $moderated; + + return $this; + } + + public function getModeratorId(): ?User + { + return $this->moderatorId; + } + + public function setModeratorId(?User $moderatorId): static + { + $this->moderatorId = $moderatorId; + + return $this; + } + + public function getUserName(): ?string + { + return $this->userName; + } + + public function setUserName(string $userName): static + { + $this->userName = $userName; + + return $this; + } + + public function getUserId(): ?User + { + return $this->userId; + } + + public function setUserId(?User $userId): static + { + $this->userId = $userId; + + return $this; + } + + public function getText(): ?string + { + return $this->text; + } + + public function setText(string $text): static + { + $this->text = $text; + + return $this; + } + + public function getCreateAt(): ?\DateTimeInterface + { + return $this->createAt; + } + + public function setCreateAt(\DateTimeInterface $createAt): static + { + $this->createAt = $createAt; + + return $this; + } + + public function getUpdateAt(): ?\DateTimeImmutable + { + return $this->updateAt; + } + + public function setUpdateAt(\DateTimeImmutable $updateAt): static + { + $this->updateAt = $updateAt; + + return $this; + } +} diff --git a/src/Entity/NewsType.php b/src/Entity/NewsType.php new file mode 100644 index 0000000000000000000000000000000000000000..bd3fbd1548c395974a249aac6d1741be21201493 --- /dev/null +++ b/src/Entity/NewsType.php @@ -0,0 +1,81 @@ + + */ + #[ORM\OneToMany(targetEntity: News::class, mappedBy: 'type')] + private Collection $news; + + public function __construct() + { + $this->news = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + /** + * @return Collection + */ + public function getNews(): Collection + { + return $this->news; + } + + public function addNews(News $news): static + { + if (!$this->news->contains($news)) { + $this->news->add($news); + $news->setType($this); + } + + return $this; + } + + public function removeNews(News $news): static + { + if ($this->news->removeElement($news)) { + // set the owning side to null (unless already changed) + if ($news->getType() === $this) { + $news->setType(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Restaurant.php b/src/Entity/Restaurant.php new file mode 100644 index 0000000000000000000000000000000000000000..b7b252c887e488599da94a4637d3b17f60545e58 --- /dev/null +++ b/src/Entity/Restaurant.php @@ -0,0 +1,408 @@ + + */ + #[ORM\OneToMany(targetEntity: Kitchen::class, mappedBy: 'restaurant')] + private Collection $kitchen; + + #[ORM\Column] + private array $phone = []; + + #[ORM\Column] + private array $email = []; + + #[ORM\Column] + private array $address = []; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: Tags::class, mappedBy: 'restaurant')] + private Collection $tags; + + #[ORM\Column(length: 255)] + private ?string $site = null; + + #[ORM\Column(length: 255)] + private ?string $previewImage = null; + + #[ORM\Column(length: 255)] + private ?string $detailImage = null; + + #[ORM\Column(type: Types::TEXT)] + private ?string $howToFind = null; + + #[ORM\ManyToOne] + #[ORM\JoinColumn(nullable: false)] + private ?Seo $seo = null; + + #[ORM\OneToOne(cascade: ['persist', 'remove'])] + #[ORM\JoinColumn(nullable: false)] + private ?File $file = null; + + public function __construct() + { + $this->kitchen = new ArrayCollection(); + $this->tags = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } + + public function isActive(): ?bool + { + return $this->active; + } + + public function setActive(bool $active): static + { + $this->active = $active; + + return $this; + } + + public function getSort(): ?int + { + return $this->sort; + } + + public function setSort(int $sort): static + { + $this->sort = $sort; + + return $this; + } + + public function getCreateAt(): ?\DateTimeInterface + { + return $this->createAt; + } + + public function setCreateAt(\DateTimeInterface $createAt): static + { + $this->createAt = $createAt; + + return $this; + } + + public function getUpdateAt(): ?\DateTimeInterface + { + return $this->updateAt; + } + + public function setUpdateAt(\DateTimeInterface $updateAt): static + { + $this->updateAt = $updateAt; + + return $this; + } + + public function getCoordinates(): array + { + return $this->coordinates; + } + + public function setCoordinates(array $coordinates): static + { + $this->coordinates = $coordinates; + + return $this; + } + + public function getTypeId(): ?RestaurantType + { + return $this->typeId; + } + + public function setTypeId(?RestaurantType $typeId): static + { + $this->typeId = $typeId; + + return $this; + } + + public function getSettlementId(): ?Settlement + { + return $this->settlementId; + } + + public function setSettlementId(?Settlement $settlementId): static + { + $this->settlementId = $settlementId; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(string $description): static + { + $this->description = $description; + + return $this; + } + + public function getCheckPrice(): ?string + { + return $this->checkPrice; + } + + public function setCheckPrice(string $checkPrice): static + { + $this->checkPrice = $checkPrice; + + return $this; + } + + public function getCheckInfo(): ?string + { + return $this->checkInfo; + } + + public function setCheckInfo(string $checkInfo): static + { + $this->checkInfo = $checkInfo; + + return $this; + } + + /** + * @return Collection + */ + public function getKitchen(): Collection + { + return $this->kitchen; + } + + public function addKitchen(Kitchen $kitchen): static + { + if (!$this->kitchen->contains($kitchen)) { + $this->kitchen->add($kitchen); + $kitchen->setRestaurant($this); + } + + return $this; + } + + public function removeKitchen(Kitchen $kitchen): static + { + if ($this->kitchen->removeElement($kitchen)) { + // set the owning side to null (unless already changed) + if ($kitchen->getRestaurant() === $this) { + $kitchen->setRestaurant(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getTags(): Collection + { + return $this->tags; + } + + public function addTag(Tags $tag): static + { + if (!$this->tags->contains($tag)) { + $this->tags->add($tag); + $tag->setRestaurant($this); + } + + return $this; + } + + public function removeTag(Tags $tag): static + { + if ($this->tags->removeElement($tag)) { + // set the owning side to null (unless already changed) + if ($tag->getRestaurant() === $this) { + $tag->setRestaurant(null); + } + } + + return $this; + } + + public function getSite(): ?string + { + return $this->site; + } + + public function setSite(string $site): static + { + $this->site = $site; + + return $this; + } + + public function getPreviewImage(): ?string + { + return $this->previewImage; + } + + public function setPreviewImage(string $previewImage): static + { + $this->previewImage = $previewImage; + + return $this; + } + + public function getDetailImage(): ?string + { + return $this->detailImage; + } + + public function setDetailImage(string $detailImage): static + { + $this->detailImage = $detailImage; + + return $this; + } + + public function getHowToFind(): ?string + { + return $this->howToFind; + } + + public function setHowToFind(string $howToFind): static + { + $this->howToFind = $howToFind; + + return $this; + } + + public function getSeo(): ?Seo + { + return $this->seo; + } + + public function setSeo(?Seo $seo): static + { + $this->seo = $seo; + + return $this; + } + + public function setPhone(array $phone): static + { + $this->phone = $phone; + + return $this; + } + + public function setEmail(array $email): static + { + $this->email = $email; + + return $this; + } + + public function setAddress(array $address): static + { + $this->address = $address; + + return $this; + } + + public function getFile(): ?File + { + return $this->file; + } + + public function setFile(File $file): static + { + $this->file = $file; + + return $this; + } +} diff --git a/src/Entity/RestaurantType.php b/src/Entity/RestaurantType.php new file mode 100644 index 0000000000000000000000000000000000000000..2708f856374993963d4cfc1674969c968ac7d722 --- /dev/null +++ b/src/Entity/RestaurantType.php @@ -0,0 +1,96 @@ + + */ + #[ORM\OneToMany(targetEntity: Restaurant::class, mappedBy: 'typeId')] + private Collection $restaurants; + + public function __construct() + { + $this->restaurants = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } + + /** + * @return Collection + */ + public function getRestaurants(): Collection + { + return $this->restaurants; + } + + public function addRestaurant(Restaurant $restaurant): static + { + if (!$this->restaurants->contains($restaurant)) { + $this->restaurants->add($restaurant); + $restaurant->setTypeId($this); + } + + return $this; + } + + public function removeRestaurant(Restaurant $restaurant): static + { + if ($this->restaurants->removeElement($restaurant)) { + // set the owning side to null (unless already changed) + if ($restaurant->getTypeId() === $this) { + $restaurant->setTypeId(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Seo.php b/src/Entity/Seo.php new file mode 100644 index 0000000000000000000000000000000000000000..3cd6f55a89d66a97ea348b85d2effd71305fa000 --- /dev/null +++ b/src/Entity/Seo.php @@ -0,0 +1,68 @@ +id; + } + + public function getTitle(): ?string + { + return $this->title; + } + + public function setTitle(string $title): static + { + $this->title = $title; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(string $description): static + { + $this->description = $description; + + return $this; + } + + public function getKeywords(): ?string + { + return $this->keywords; + } + + public function setKeywords(string $keywords): static + { + $this->keywords = $keywords; + + return $this; + } +} diff --git a/src/Entity/Settlement.php b/src/Entity/Settlement.php new file mode 100644 index 0000000000000000000000000000000000000000..32544772c439b7895dd864c73f722e3651cc4738 --- /dev/null +++ b/src/Entity/Settlement.php @@ -0,0 +1,142 @@ + + */ + #[ORM\OneToMany(targetEntity: Restaurant::class, mappedBy: 'settlementId')] + private Collection $restaurants; + + public function __construct() + { + $this->restaurants = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } + + public function getCoordinates(): array + { + return $this->coordinates; + } + + public function setCoordinates(array $coordinates): static + { + $this->coordinates = $coordinates; + + return $this; + } + + public function getCreateAt(): ?\DateTimeInterface + { + return $this->createAt; + } + + public function setCreateAt(\DateTimeInterface $createAt): static + { + $this->createAt = $createAt; + + return $this; + } + + public function getUpdateAt(): ?\DateTimeInterface + { + return $this->updateAt; + } + + public function setUpdateAt(\DateTimeInterface $updateAt): static + { + $this->updateAt = $updateAt; + + return $this; + } + + /** + * @return Collection + */ + public function getRestaurants(): Collection + { + return $this->restaurants; + } + + public function addRestaurant(Restaurant $restaurant): static + { + if (!$this->restaurants->contains($restaurant)) { + $this->restaurants->add($restaurant); + $restaurant->setSettlementId($this); + } + + return $this; + } + + public function removeRestaurant(Restaurant $restaurant): static + { + if ($this->restaurants->removeElement($restaurant)) { + // set the owning side to null (unless already changed) + if ($restaurant->getSettlementId() === $this) { + $restaurant->setSettlementId(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Tags.php b/src/Entity/Tags.php new file mode 100644 index 0000000000000000000000000000000000000000..87fc08ca9671399e13ea3631feb536e91cc6f751 --- /dev/null +++ b/src/Entity/Tags.php @@ -0,0 +1,70 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getRestaurant(): ?Restaurant + { + return $this->restaurant; + } + + public function setRestaurant(?Restaurant $restaurant): static + { + $this->restaurant = $restaurant; + + return $this; + } + + public function getList(): array + { + return $this->list; + } + + public function setList(array $list): static + { + $this->list = $list; + + return $this; + } +} diff --git a/src/Entity/User.php b/src/Entity/User.php new file mode 100644 index 0000000000000000000000000000000000000000..629c248c02628e0d841906fd032ef3acdddc6ae1 --- /dev/null +++ b/src/Entity/User.php @@ -0,0 +1,82 @@ + + */ + #[ORM\OneToMany(targetEntity: NewsComment::class, mappedBy: 'userId')] + private Collection $newsComments; + + public function __construct() + { + $this->newsComments = new ArrayCollection(); + } + + public function getId(): ?Uuid + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + /** + * @return Collection + */ + public function getNewsComments(): Collection + { + return $this->newsComments; + } + + public function addNewsComment(NewsComment $newsComment): static + { + if (!$this->newsComments->contains($newsComment)) { + $this->newsComments->add($newsComment); + $newsComment->setUserId($this); + } + + return $this; + } + + public function removeNewsComment(NewsComment $newsComment): static + { + if ($this->newsComments->removeElement($newsComment)) { + // set the owning side to null (unless already changed) + if ($newsComment->getUserId() === $this) { + $newsComment->setUserId(null); + } + } + + return $this; + } +} diff --git a/src/Repository/FileRepository.php b/src/Repository/FileRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..4d5449a24e8e97d38429de3e9f3cf866990b9c81 --- /dev/null +++ b/src/Repository/FileRepository.php @@ -0,0 +1,48 @@ + + * + * @method File|null find($id, $lockMode = null, $lockVersion = null) + * @method File|null findOneBy(array $criteria, array $orderBy = null) + * @method File[] findAll() + * @method File[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class FileRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, File::class); + } + +// /** +// * @return File[] Returns an array of File objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('f') +// ->andWhere('f.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('f.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?File +// { +// return $this->createQueryBuilder('f') +// ->andWhere('f.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/GalleryRepository.php b/src/Repository/GalleryRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..d15e89a133dcaaebd53199e97f053366e3250b60 --- /dev/null +++ b/src/Repository/GalleryRepository.php @@ -0,0 +1,48 @@ + + * + * @method Gallery|null find($id, $lockMode = null, $lockVersion = null) + * @method Gallery|null findOneBy(array $criteria, array $orderBy = null) + * @method Gallery[] findAll() + * @method Gallery[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class GalleryRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Gallery::class); + } + +// /** +// * @return Gallery[] Returns an array of Gallery objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('g') +// ->andWhere('g.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('g.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Gallery +// { +// return $this->createQueryBuilder('g') +// ->andWhere('g.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/KitchenRepository.php b/src/Repository/KitchenRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..745766d73b3d27a8293c5c15bf14b4dd0d38384d --- /dev/null +++ b/src/Repository/KitchenRepository.php @@ -0,0 +1,48 @@ + + * + * @method Kitchen|null find($id, $lockMode = null, $lockVersion = null) + * @method Kitchen|null findOneBy(array $criteria, array $orderBy = null) + * @method Kitchen[] findAll() + * @method Kitchen[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class KitchenRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Kitchen::class); + } + +// /** +// * @return Kitchen[] Returns an array of Kitchen objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('k') +// ->andWhere('k.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('k.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Kitchen +// { +// return $this->createQueryBuilder('k') +// ->andWhere('k.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/NewsCategoryRepository.php b/src/Repository/NewsCategoryRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..3a5eeebb501dc92019e437a531fbe0fcbf9d5093 --- /dev/null +++ b/src/Repository/NewsCategoryRepository.php @@ -0,0 +1,48 @@ + + * + * @method NewsCategory|null find($id, $lockMode = null, $lockVersion = null) + * @method NewsCategory|null findOneBy(array $criteria, array $orderBy = null) + * @method NewsCategory[] findAll() + * @method NewsCategory[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class NewsCategoryRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, NewsCategory::class); + } + +// /** +// * @return NewsCategory[] Returns an array of NewsCategory objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('n.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?NewsCategory +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/NewsCommentRepository.php b/src/Repository/NewsCommentRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..1784010b168e15c5a630f0fab35a3cdbfbd61653 --- /dev/null +++ b/src/Repository/NewsCommentRepository.php @@ -0,0 +1,48 @@ + + * + * @method NewsComment|null find($id, $lockMode = null, $lockVersion = null) + * @method NewsComment|null findOneBy(array $criteria, array $orderBy = null) + * @method NewsComment[] findAll() + * @method NewsComment[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class NewsCommentRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, NewsComment::class); + } + +// /** +// * @return NewsComment[] Returns an array of NewsComment objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('n.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?NewsComment +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/NewsRepository.php b/src/Repository/NewsRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..3b5d8645e9d224f41d8510010eb2ad51d0675722 --- /dev/null +++ b/src/Repository/NewsRepository.php @@ -0,0 +1,48 @@ + + * + * @method News|null find($id, $lockMode = null, $lockVersion = null) + * @method News|null findOneBy(array $criteria, array $orderBy = null) + * @method News[] findAll() + * @method News[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class NewsRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, News::class); + } + +// /** +// * @return News[] Returns an array of News objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('n.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?News +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/NewsTypeRepository.php b/src/Repository/NewsTypeRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..385998b7a956694f621dbd6286b876565699a042 --- /dev/null +++ b/src/Repository/NewsTypeRepository.php @@ -0,0 +1,48 @@ + + * + * @method NewsType|null find($id, $lockMode = null, $lockVersion = null) + * @method NewsType|null findOneBy(array $criteria, array $orderBy = null) + * @method NewsType[] findAll() + * @method NewsType[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class NewsTypeRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, NewsType::class); + } + +// /** +// * @return NewsType[] Returns an array of NewsType objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('n.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?NewsType +// { +// return $this->createQueryBuilder('n') +// ->andWhere('n.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/RestaurantRepository.php b/src/Repository/RestaurantRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..8b5b18df316298e7c5f5aed58b29bfcd3da3ae1c --- /dev/null +++ b/src/Repository/RestaurantRepository.php @@ -0,0 +1,48 @@ + + * + * @method Restaurant|null find($id, $lockMode = null, $lockVersion = null) + * @method Restaurant|null findOneBy(array $criteria, array $orderBy = null) + * @method Restaurant[] findAll() + * @method Restaurant[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class RestaurantRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Restaurant::class); + } + +// /** +// * @return Restaurant[] Returns an array of Restaurant objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('r') +// ->andWhere('r.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('r.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Restaurant +// { +// return $this->createQueryBuilder('r') +// ->andWhere('r.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/RestaurantTypeRepository.php b/src/Repository/RestaurantTypeRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..30e6a42d09a2e21561edae74dc89787c2546293e --- /dev/null +++ b/src/Repository/RestaurantTypeRepository.php @@ -0,0 +1,48 @@ + + * + * @method RestaurantType|null find($id, $lockMode = null, $lockVersion = null) + * @method RestaurantType|null findOneBy(array $criteria, array $orderBy = null) + * @method RestaurantType[] findAll() + * @method RestaurantType[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class RestaurantTypeRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, RestaurantType::class); + } + +// /** +// * @return RestaurantType[] Returns an array of RestaurantType objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('r') +// ->andWhere('r.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('r.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?RestaurantType +// { +// return $this->createQueryBuilder('r') +// ->andWhere('r.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/SeoRepository.php b/src/Repository/SeoRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..09b09908908fccbde126ab3a9adc4fdbf966ea01 --- /dev/null +++ b/src/Repository/SeoRepository.php @@ -0,0 +1,48 @@ + + * + * @method Seo|null find($id, $lockMode = null, $lockVersion = null) + * @method Seo|null findOneBy(array $criteria, array $orderBy = null) + * @method Seo[] findAll() + * @method Seo[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class SeoRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Seo::class); + } + +// /** +// * @return Seo[] Returns an array of Seo objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('s.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Seo +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/SettlementRepository.php b/src/Repository/SettlementRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..1b5e100bda76a7b1bcf8677a447d1c551a228caf --- /dev/null +++ b/src/Repository/SettlementRepository.php @@ -0,0 +1,48 @@ + + * + * @method Settlement|null find($id, $lockMode = null, $lockVersion = null) + * @method Settlement|null findOneBy(array $criteria, array $orderBy = null) + * @method Settlement[] findAll() + * @method Settlement[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class SettlementRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Settlement::class); + } + +// /** +// * @return Settlement[] Returns an array of Settlement objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('s.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Settlement +// { +// return $this->createQueryBuilder('s') +// ->andWhere('s.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/TagsRepository.php b/src/Repository/TagsRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..4f0146363e6efd8235bae18aa1e598f52fab0746 --- /dev/null +++ b/src/Repository/TagsRepository.php @@ -0,0 +1,48 @@ + + * + * @method Tags|null find($id, $lockMode = null, $lockVersion = null) + * @method Tags|null findOneBy(array $criteria, array $orderBy = null) + * @method Tags[] findAll() + * @method Tags[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class TagsRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Tags::class); + } + +// /** +// * @return Tags[] Returns an array of Tags objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('t') +// ->andWhere('t.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('t.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Tags +// { +// return $this->createQueryBuilder('t') +// ->andWhere('t.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..376752657d714fa842fe7bc74d876a4ee7ccde2a --- /dev/null +++ b/src/Repository/UserRepository.php @@ -0,0 +1,48 @@ + + * + * @method User|null find($id, $lockMode = null, $lockVersion = null) + * @method User|null findOneBy(array $criteria, array $orderBy = null) + * @method User[] findAll() + * @method User[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class UserRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + +// /** +// * @return User[] Returns an array of User objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('u') +// ->andWhere('u.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('u.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?User +// { +// return $this->createQueryBuilder('u') +// ->andWhere('u.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/symfony.lock b/symfony.lock index aaf3e509e106e1f163d76d63288d3a3f51b20fbf..f28d08f531406d6b080e5cdc72fd6a610cf26b3f 100644 --- a/symfony.lock +++ b/symfony.lock @@ -248,6 +248,15 @@ "./templates/base.html.twig" ] }, + "symfony/uid": { + "version": "7.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.0", + "ref": "0df5844274d871b37fc3816c57a768ffc60a43a5" + } + }, "symfony/ux-turbo": { "version": "v2.16.0" }, diff --git a/tests/RestaurantControllerTest.php b/tests/RestaurantControllerTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c976e59bf2728d1c52634aaa9f24599fe85c90be --- /dev/null +++ b/tests/RestaurantControllerTest.php @@ -0,0 +1,63 @@ +request('GET', '/api/v1/restaurants?page=1&limit=12'); + $actual = json_decode($client->getResponse()->getContent(), true, 512, JSON_THROW_ON_ERROR); + $expect = '{ + "pagination": { + "currentPage": 1, + "pages": 1, + "pageSize": 12 + }, + "list": [ + { + "id": 1, + "name": "Ресторан «Арктика»", + "code": "restoran-arktika", + "type": { + "id": 1, + "name": "Ресторан", + "code": "restoran" + }, + "check": "bla bla", + "image": { + "id": 1, + "name": "name", + "description": "description", + "size": 10, + "type": "jpg", + "url": "/upload/preview.png" + }, + "detailLink": "https://visityamal.ru/" + } + ], + "filterVariants": { + "type": [ + { + "id": 1, + "name": "Ресторан", + "code": "restoran" + } + ], + "kitchen": [ + { + "id": 1, + "name": "Азиатская" + } + ] + } +}'; + self::assertResponseIsSuccessful(); + self::assertJsonStringEqualsJsonString($expect, $actual); + } +}