From 14b0c0834a2f6c75840f4addcc3ebd993ada5510 Mon Sep 17 00:00:00 2001
From: KronosDP <darrel.danadyaksa19@gmail.com>
Date: Wed, 26 Feb 2025 13:53:02 +0700
Subject: [PATCH] Add DevDataSeeder to populate dummy users in the development
 environment

---
 .../authentication/seeder/DevDataSeeder.java  | 48 +++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 src/main/java/com/safetypin/authentication/seeder/DevDataSeeder.java

diff --git a/src/main/java/com/safetypin/authentication/seeder/DevDataSeeder.java b/src/main/java/com/safetypin/authentication/seeder/DevDataSeeder.java
new file mode 100644
index 0000000..9edfd57
--- /dev/null
+++ b/src/main/java/com/safetypin/authentication/seeder/DevDataSeeder.java
@@ -0,0 +1,48 @@
+package com.safetypin.authentication.seeder;
+
+import com.safetypin.authentication.model.User;
+import com.safetypin.authentication.repository.UserRepository;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.context.annotation.Profile;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Component
+@Profile({"dev"})  // Runs only in 'dev' profile
+public class DevDataSeeder implements CommandLineRunner {
+
+    private final UserRepository userRepository;
+
+    private final PasswordEncoder passwordEncoder;
+
+    public DevDataSeeder(UserRepository userRepository, PasswordEncoder passwordEncoder) {
+        this.userRepository = userRepository;
+        this.passwordEncoder = passwordEncoder;
+    }
+
+    @Override
+    public void run(String... args) {
+        if (userRepository.count() == 0) {
+            userRepository.saveAll(List.of(
+                    new User("alice@example.com", passwordEncoder.encode("password123"), "Alice Johnson", true, "developer",
+                            LocalDate.of(1998, 5, 21), "EMAIL", "social_1001"),
+                    new User("bob@example.com", passwordEncoder.encode("password456"), "Bob Smith", false, "designer",
+                            LocalDate.of(2000, 8, 15), "GOOGLE", "social_1002"),
+                    new User("charlie@example.com", passwordEncoder.encode("password789"), "Charlie Davis", true, "manager",
+                            LocalDate.of(1995, 12, 3), "APPLE", "social_1003"),
+                    new User("diana@example.com", passwordEncoder.encode("password321"), "Diana Roberts", true, "QA engineer",
+                            LocalDate.of(2002, 6, 10), "EMAIL", "social_1004"),
+                    new User("ethan@example.com", passwordEncoder.encode("password654"), "Ethan Brown", false, "data analyst",
+                            LocalDate.of(1999, 11, 27), "EMAIL", "social_1005")
+            ));
+            System.out.println("Dummy users inserted in DEV environment");
+        } else {
+            System.out.println("User repo is not empty");
+        }
+
+
+    }
+}
\ No newline at end of file
-- 
GitLab