()
| 34 | * - Some soft-deleted records |
| 35 | */ |
| 36 | export function generateSeedData(): SeedDataResult { |
| 37 | const users: Array<User> = [] |
| 38 | const posts: Array<Post> = [] |
| 39 | const comments: Array<Comment> = [] |
| 40 | |
| 41 | const now = new Date() |
| 42 | const oneDay = 24 * 60 * 60 * 1000 |
| 43 | const oneYear = 365 * oneDay |
| 44 | |
| 45 | // Generate 100 users with varied distributions |
| 46 | for (let i = 0; i < 100; i++) { |
| 47 | const id = generateId(`user`, i) |
| 48 | |
| 49 | // Name variations for collation testing |
| 50 | const names = [ |
| 51 | `Alice ${i}`, |
| 52 | `bob ${i}`, |
| 53 | `Charlie ${i}`, |
| 54 | `DIANA ${i}`, |
| 55 | `Eve ${i}`, |
| 56 | `Frank ${i}`, |
| 57 | `Grace ${i}`, |
| 58 | `henry ${i}`, |
| 59 | `Ivy ${i}`, |
| 60 | `Jack ${i}`, |
| 61 | `Kate ${i}`, |
| 62 | `liam ${i}`, |
| 63 | `Mia ${i}`, |
| 64 | `Noah ${i}`, |
| 65 | `Olivia ${i}`, |
| 66 | `PAUL ${i}`, |
| 67 | `Quinn ${i}`, |
| 68 | `Rose ${i}`, |
| 69 | `sam ${i}`, |
| 70 | `Tina ${i}`, |
| 71 | `Ursula ${i}\nNewline`, |
| 72 | ] |
| 73 | const name = names[i % names.length] |
| 74 | |
| 75 | // Email: 70% have emails, 30% null |
| 76 | const email = i % 10 < 7 ? `user${i}@example.com` : null |
| 77 | |
| 78 | // Age distribution: 18-80, with some edge cases |
| 79 | const age = i === 0 ? 0 : i === 1 ? -5 : i === 2 ? 150 : 18 + (i % 63) |
| 80 | |
| 81 | // IsActive: 80% true, 20% false |
| 82 | const isActive = i % 5 !== 0 |
| 83 | |
| 84 | // CreatedAt: distributed over past year |
| 85 | const createdAt = new Date(now.getTime() - Math.random() * oneYear) |
| 86 | |
| 87 | // Metadata: 40% have metadata, 60% null |
| 88 | const metadata = |
| 89 | i % 5 < 2 ? { score: i * 10, level: Math.floor(i / 10) } : null |
| 90 | |
| 91 | // DeletedAt: 10% soft deleted |
| 92 | const deletedAt = |
| 93 | i % 10 === 0 |
no test coverage detected