From c40b027f4c54f4eb9524e183f4267ae6c4b219ca Mon Sep 17 00:00:00 2001 From: Matteo Gheza Date: Fri, 23 Feb 2024 23:39:08 +0100 Subject: [PATCH] Dummy data seeder and Docker improvements --- backend/Dockerfile | 15 ++++- ...reate_telegram_bot_notifications_table.php | 2 +- backend/database/seeders/DummyDataSeeder.php | 56 +++++++++++++++++++ backend/docker-entrypoint.sh | 13 +++++ docker-compose.yaml | 7 ++- 5 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 backend/database/seeders/DummyDataSeeder.php diff --git a/backend/Dockerfile b/backend/Dockerfile index 9f2987c..ab56e34 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -25,11 +25,22 @@ RUN apt-get update && apt-get install -y \ libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ + zlib1g-dev \ + nano \ + iputils-ping \ + curl \ + build-essential \ + libssl-dev \ + libmariadb-dev-compat \ + python3-dev \ + python3-pip \ + && pip3 install mysqlclient \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install -j$(nproc) gd + && docker-php-ext-install -j$(nproc) gd \ + && docker-php-ext-install -j$(nproc) pdo_mysql -RUN pecl install redis-5.3.7 \ +RUN pecl install redis-6.0.2 \ && docker-php-ext-enable redis # Use the default production configuration for PHP runtime arguments, see diff --git a/backend/database/migrations/2023_08_29_195353_create_telegram_bot_notifications_table.php b/backend/database/migrations/2023_08_29_195353_create_telegram_bot_notifications_table.php index 617b8ef..4feb607 100644 --- a/backend/database/migrations/2023_08_29_195353_create_telegram_bot_notifications_table.php +++ b/backend/database/migrations/2023_08_29_195353_create_telegram_bot_notifications_table.php @@ -15,7 +15,7 @@ return new class extends Migration $table->id(); $table->string('chat_id')->unique(); $table->boolean('type_team_state')->default(true); - $table->varchar('last_message_hash')->nullable(); + $table->string('last_message_hash')->nullable(); $table->timestamps(); }); } diff --git a/backend/database/seeders/DummyDataSeeder.php b/backend/database/seeders/DummyDataSeeder.php new file mode 100644 index 0000000..b7bb12a --- /dev/null +++ b/backend/database/seeders/DummyDataSeeder.php @@ -0,0 +1,56 @@ +name = 'admin'; + $user->surname = 'User'; + $user->username = 'admin'; + $user->password = Hash::make('admin'); + $user->email = 'u1@example.com'; + $user->save(); + $user->addRole('superadmin'); + + /* + Create 10 users: + - 1 chief and with role 'admin' + - other 2 chief and driver + - other 2 chief + - other 2 driver + - other 3 normal user + */ + for ($i = 1; $i <= 10; $i++) { + $user = new User(); + $user->name = ''.$i; + $user->surname = 'User'; + $user->username = 'user' . $i; + $user->password = Hash::make('user' . $i); + $user->email = 'u' . $i+1 . '@example.com'; + $user->save(); + + if ($i === 1) { + $user->addRole('admin'); + $user->update(['chief' => true]); + } elseif ($i === 2 || $i === 3) { + $user->addRole('chief'); + $user->update(['chief' => true, 'driver' => true]); + } elseif ($i === 4 || $i === 5) { + $user->addRole('chief'); + } elseif ($i === 6 || $i === 7) { + $user->update(['driver' => true]); + } + } + } +} diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh index a8777ed..f3ee3d4 100644 --- a/backend/docker-entrypoint.sh +++ b/backend/docker-entrypoint.sh @@ -21,7 +21,20 @@ else # Generate encryption key echo "Generating encryption key..." php artisan key:generate + + # Run migrations + echo "Running migrations..." + php artisan migrate --force + + # Run seeders + echo "Running seeders..." + php artisan db:seed + php artisan db:seed --class=DummyDataSeeder fi +# Run migrations +echo "Running migrations..." +php artisan migrate + # Run Apache apache2-foreground diff --git a/docker-compose.yaml b/docker-compose.yaml index 78a2922..c12a4b1 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -20,7 +20,8 @@ services: - UID=${UID:-1000} - GID=${GID:-1000} depends_on: - - db + db: + condition: service_healthy environment: - DB_HOST=db - DB_USER=user @@ -39,6 +40,10 @@ services: MYSQL_PASSWORD: password volumes: - db-data:/var/lib/mysql + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] + timeout: 20s + retries: 10 frontend: build: