chore: fix the purchased true for the danakservices

This commit is contained in:
mahyargdz
2025-08-31 11:36:57 +03:30
parent 8e9b939a0b
commit 787643a31f
8 changed files with 885 additions and 43 deletions
+7 -2
View File
@@ -4,8 +4,10 @@ import { connectionSource } from "./connection";
// import { seedAdmin } from "./seeders/admin.seeder";
// import { seedCityAndProvince } from "./seeders/iran-city.seeder";
// import { seedNotifSettings } from "./seeders/notif-setting.seeder";
import { seedPaymentGateways } from "./seeders/payment-gateway.seeder";
// import { seedPaymentGateways } from "./seeders/payment-gateway.seeder";
// import { seedPermissionsAndRoles } from "./seeders/role.seeder";
import { seedBlogCommentReplies } from "./seeders/blog-comment-reply.seeder";
import { seedBlogComments } from "./seeders/blog-comment.seeder";
const logger = new Logger("Seeder");
@@ -16,9 +18,12 @@ export const runSeeder = async () => {
// await seedPermissionsAndRoles(connectionSource, logger);
// await seedAdmin(connectionSource, logger);
// await seedNotifSettings(connectionSource, logger);
await seedPaymentGateways(connectionSource, logger);
// await seedPaymentGateways(connectionSource, logger);
// await seedCityAndProvince(connectionSource, logger);
await seedBlogComments(connectionSource, logger);
await seedBlogCommentReplies(connectionSource, logger);
logger.log("seeding completed");
process.exit(0);
};
@@ -0,0 +1,99 @@
import { Logger } from "@nestjs/common";
import { DataSource } from "typeorm";
import { BlogCommentReply } from "../../src/modules/blogs/entities/blog-comment-reply.entity";
import { BlogComment } from "../../src/modules/blogs/entities/blog-comment.entity";
import { User } from "../../src/modules/users/entities/user.entity";
const blogCommentReplies = [
{
content: "ممنون از نظر شما. خوشحالم که مقاله مفید بوده.",
isOfficialReply: true,
},
{
content: "بله، این روش در اکثر شرایط قابل استفاده است. فقط در موارد خاص نیاز به تنظیمات اضافی دارد.",
isOfficialReply: false,
},
{
content: "من هم همین تجربه را داشتم. واقعاً روش موثری است.",
isOfficialReply: false,
},
{
content: "در مقاله بعدی حتماً این بخش را بیشتر توضیح خواهم داد.",
isOfficialReply: true,
},
{
content: "خواهش می‌کنم. هدف ما کمک به کاربران است.",
isOfficialReply: true,
},
{
content: "پیشنهاد خوبی است. در نسخه بعدی مقاله حتماً مثال‌های بیشتری اضافه می‌کنم.",
isOfficialReply: true,
},
{
content: "متأسفم که این احساس را داشتید. سعی می‌کنم مطالب جدیدتری ارائه دهم.",
isOfficialReply: true,
},
{
content: "بله، حتماً. منابع علمی در انتهای مقاله آمده است.",
isOfficialReply: true,
},
{
content: "من هم همین سوال را داشتم. ممنون که پرسیدید.",
isOfficialReply: false,
},
{
content: "این روش را من هم امتحان کردم و نتیجه گرفتم.",
isOfficialReply: false,
},
{
content: "بله، کاملاً درست می‌گویید. این روش نیاز به تمرین دارد.",
isOfficialReply: false,
},
{
content: "من هم همین تجربه را داشتم. واقعاً عالی کار می‌کند.",
isOfficialReply: false,
},
];
export const seedBlogCommentReplies = async (dataSource: DataSource, logger: Logger) => {
try {
const replyRepo = dataSource.getRepository(BlogCommentReply);
const commentRepo = dataSource.getRepository(BlogComment);
const userRepo = dataSource.getRepository(User);
// Get existing comments and users
const comments = await commentRepo.find({ take: 10 });
const users = await userRepo.find({ take: 10 });
if (comments.length === 0) {
logger.warn("No blog comments found. Please seed blog comments first.");
return;
}
if (users.length === 0) {
logger.warn("No users found. Please seed users first.");
return;
}
for (const replyData of blogCommentReplies) {
// Randomly select comment and user
const randomComment = comments[Math.floor(Math.random() * comments.length)];
const randomUser = users[Math.floor(Math.random() * users.length)];
const reply = replyRepo.create({
...replyData,
comment: randomComment,
author: randomUser,
});
await replyRepo.save(reply);
logger.log(`Blog comment reply created successfully`);
}
logger.log("Blog comment replies seeding completed");
} catch (error) {
logger.error("Error in seeding blog comment replies", error);
process.exit(1);
}
};
+582
View File
@@ -0,0 +1,582 @@
import { Logger } from "@nestjs/common";
import { DataSource, IsNull } from "typeorm";
import { BlogComment } from "../../src/modules/blogs/entities/blog-comment.entity";
import { Blog } from "../../src/modules/blogs/entities/blog.entity";
import { CommentStatus } from "../../src/modules/blogs/enums/comment-status.enum";
import { User } from "../../src/modules/users/entities/user.entity";
const blogComments = [
{
title: "مقاله بسیار مفیدی بود",
content: "این مقاله اطلاعات بسیار ارزشمندی در اختیار من قرار داد. ممنون از نویسنده محترم که این مطالب مفید را گردآوری کرده است.",
status: CommentStatus.APPROVED,
},
{
title: "سوالی دارم",
content: "مطالب ارائه شده عالی بود اما یک سوال دارم: آیا این روش در تمام شرایط قابل استفاده است؟",
status: CommentStatus.APPROVED,
},
{
title: "تجربه شخصی",
content: "من این روش را امتحان کردم و نتایج فوق‌العاده‌ای گرفتم. پیشنهاد می‌کنم همه امتحان کنند.",
status: CommentStatus.APPROVED,
},
{
title: "نیاز به توضیح بیشتر",
content: "لطفاً در مورد بخش سوم مقاله توضیحات بیشتری ارائه دهید. این قسمت کمی مبهم است.",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از نویسنده",
content: "بسیار ممنون از زحمات شما. این مقاله کمک زیادی به من کرد.",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد بهبود",
content: "مقاله خوبی بود اما پیشنهاد می‌کنم مثال‌های بیشتری اضافه کنید تا درک بهتری حاصل شود.",
status: CommentStatus.APPROVED,
},
{
title: "مطالب تکراری",
content: "بخش‌هایی از این مقاله در مقالات قبلی هم آمده بود. بهتر است مطالب جدیدتری ارائه دهید.",
status: CommentStatus.REJECTED,
},
{
title: "سوال تخصصی",
content: "آیا می‌توانید منابع علمی این مقاله را هم معرفی کنید؟",
status: CommentStatus.APPROVED,
},
{
title: "عالی بود",
content: "واقعاً مقاله جامع و کاملی بود. همه چیز را به خوبی توضیح داده بودید.",
status: CommentStatus.APPROVED,
},
{
title: "مشکل در اجرا",
content: "من این روش را پیاده‌سازی کردم اما با مشکل مواجه شدم. لطفاً راهنمایی کنید.",
status: CommentStatus.APPROVED,
},
{
title: "نکته جالب",
content: "نکته جالبی در مورد بخش چهارم مقاله بود که قبلاً نمی‌دانستم.",
status: CommentStatus.APPROVED,
},
{
title: "درخواست مقاله جدید",
content: "لطفاً در مورد موضوع مشابه مقاله جدیدی بنویسید.",
status: CommentStatus.APPROVED,
},
{
title: "مقایسه با روش‌های دیگر",
content: "آیا می‌توانید این روش را با روش‌های مشابه مقایسه کنید؟",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد پیاده‌سازی",
content: "در مرحله سوم پیاده‌سازی، دقیقاً چه کاری باید انجام دهم؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر ویژه",
content: "بسیار ممنون از زحمات شما. این مقاله واقعاً کمک زیادی به من کرد.",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد موضوع",
content: "پیشنهاد می‌کنم در مورد موضوع X مقاله‌ای بنویسید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد کاربرد",
content: "آیا این روش در حوزه‌های دیگر هم قابل استفاده است؟",
status: CommentStatus.APPROVED,
},
{
title: "نیاز به مثال بیشتر",
content: "لطفاً مثال‌های عملی بیشتری اضافه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از تیم",
content: "ممنون از تیم نویسندگان که این مطالب مفید را تهیه کرده‌اند.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد ابزارها",
content: "آیا ابزارهای خاصی برای این کار نیاز است؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد بهبود ساختار",
content: "پیشنهاد می‌کنم ساختار مقاله را کمی تغییر دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد زمان‌بندی",
content: "چقدر زمان برای پیاده‌سازی این روش نیاز است؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از توضیحات",
content: "توضیحات شما بسیار واضح و قابل فهم بود.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد هزینه",
content: "آیا این روش هزینه خاصی دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد ویدیو",
content: "پیشنهاد می‌کنم ویدیوی آموزشی هم تهیه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد محدودیت‌ها",
content: "آیا محدودیت خاصی در استفاده از این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از پاسخ‌گویی",
content: "ممنون از پاسخ‌گویی سریع شما به سوالات.",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد کارگاه",
content: "پیشنهاد می‌کنم کارگاه آموزشی برگزار کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد پیش‌نیازها",
content: "چه پیش‌نیازهایی برای استفاده از این روش نیاز است؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از به‌روزرسانی",
content: "ممنون از به‌روزرسانی مداوم مقالات.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد پشتیبانی",
content: "آیا پشتیبانی فنی برای این روش ارائه می‌شود؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد کتاب",
content: "پیشنهاد می‌کنم کتاب مرجع معرفی کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد گواهینامه",
content: "آیا گواهینامه‌ای برای این روش ارائه می‌شود؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از جزئیات",
content: "جزئیات ارائه شده بسیار کامل و دقیق بود.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد جامعه کاربران",
content: "آیا جامعه کاربران فعالی برای این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد انجمن",
content: "پیشنهاد می‌کنم انجمن کاربران تشکیل دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد آینده",
content: "آینده این روش چگونه خواهد بود؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از نوآوری",
content: "ممنون از نوآوری و خلاقیت در ارائه مطالب.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد رقبا",
content: "آیا روش‌های رقیب دیگری وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد تحقیق",
content: "پیشنهاد می‌کنم تحقیقات بیشتری در این زمینه انجام دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد استانداردها",
content: "آیا استاندارد خاصی برای این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از شفافیت",
content: "ممنون از شفافیت در ارائه اطلاعات.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد امنیت",
content: "آیا این روش از نظر امنیتی مطمئن است؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد تست",
content: "پیشنهاد می‌کنم امکان تست رایگان فراهم کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد کیفیت",
content: "چگونه می‌توان کیفیت نتایج را ارزیابی کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از پشتیبانی",
content: "ممنون از پشتیبانی کامل شما در این زمینه.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد توسعه",
content: "آیا امکان توسعه و سفارشی‌سازی وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد همکاری",
content: "آیا امکان همکاری در توسعه این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد آموزش",
content: "آیا دوره‌های آموزشی برای این روش ارائه می‌شود؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از تلاش",
content: "ممنون از تلاش و زحمات شما در این زمینه.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد مجوزها",
content: "آیا مجوز خاصی برای استفاده از این روش نیاز است؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد بهینه‌سازی",
content: "پیشنهاد می‌کنم روش‌های بهینه‌سازی را هم بررسی کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد سازگاری",
content: "آیا این روش با سیستم‌های قدیمی سازگار است؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از صبر",
content: "ممنون از صبر و حوصله شما در پاسخ‌گویی.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد عملکرد",
content: "عملکرد این روش در شرایط مختلف چگونه است؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد مقایسه",
content: "پیشنهاد می‌کنم جدول مقایسه با روش‌های دیگر ارائه دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد نگهداری",
content: "آیا نگهداری این روش پیچیده است؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از دقت",
content: "ممنون از دقت و توجه شما به جزئیات.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد مقیاس‌پذیری",
content: "آیا این روش قابلیت مقیاس‌پذیری دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد چک‌لیست",
content: "پیشنهاد می‌کنم چک‌لیست پیاده‌سازی ارائه دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد خطاها",
content: "رایج‌ترین خطاها در پیاده‌سازی چیست؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از راهنمایی",
content: "ممنون از راهنمایی‌های مفید شما.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد بک‌آپ",
content: "آیا نیاز به بک‌آپ خاصی وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد FAQ",
content: "پیشنهاد می‌کنم بخش سوالات متداول اضافه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد بروزرسانی",
content: "چگونه می‌توان سیستم را بروزرسانی کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از وقت",
content: "ممنون از وقتی که برای پاسخ‌گویی گذاشتید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد مانیتورینگ",
content: "آیا ابزار مانیتورینگ خاصی پیشنهاد می‌کنید؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد گلاسری",
content: "پیشنهاد می‌کنم گلاسری اصطلاحات اضافه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد لاگ‌ها",
content: "چگونه می‌توان لاگ‌ها را بررسی کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از کیفیت",
content: "ممنون از کیفیت بالای مطالب ارائه شده.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد تست",
content: "چه روش‌های تستی پیشنهاد می‌کنید؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد نمودار",
content: "پیشنهاد می‌کنم نمودار فرآیند اضافه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد دیباگ",
content: "چگونه می‌توان مشکلات را دیباگ کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از انگیزه",
content: "ممنون از انگیزه‌ای که به ما دادید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد کانفیگ",
content: "آیا کانفیگ خاصی نیاز است؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد تمپلیت",
content: "پیشنهاد می‌کنم تمپلیت آماده ارائه دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد پرفورمنس",
content: "چگونه می‌توان پرفورمنس را بهبود داد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از صداقت",
content: "ممنون از صداقت در بیان محدودیت‌ها.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد مهاجرت",
content: "چگونه می‌توان از روش قدیمی مهاجرت کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد ابزار",
content: "پیشنهاد می‌کنم ابزارهای کمکی معرفی کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد اتوماسیون",
content: "آیا امکان اتوماسیون فرآیند وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از تجربه",
content: "ممنون از به اشتراک گذاری تجربیات شخصی.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد API",
content: "آیا API خاصی برای این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد مثال کاربردی",
content: "پیشنهاد می‌کنم مثال‌های کاربردی بیشتری اضافه کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد داکیومنت",
content: "آیا داکیومنت کاملی برای این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از حرفه‌ای بودن",
content: "ممنون از رویکرد حرفه‌ای شما.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد لایسنس",
content: "آیا محدودیت لایسنسی وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد کیس استادی",
content: "پیشنهاد می‌کنم کیس استادی ارائه دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد ترابلشوتینگ",
content: "راهنمای ترابلشوتینگ کجا موجود است؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از پیگیری",
content: "ممنون از پیگیری مداوم شما.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد کمیونیتی",
content: "آیا کمیونیتی فعالی برای این روش وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد وبینار",
content: "پیشنهاد می‌کنم وبینار آموزشی برگزار کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد بست پرکتیس",
content: "بهترین شیوه‌های پیاده‌سازی چیست؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از انعطاف‌پذیری",
content: "ممنون از انعطاف‌پذیری در پاسخ‌گویی.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد ورکفلو",
content: "آیا ورکفلو خاصی برای این روش پیشنهاد می‌کنید؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد چارت",
content: "پیشنهاد می‌کنم چارت مقایسه ارائه دهید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد ریپورتینگ",
content: "چگونه می‌توان گزارش‌گیری کرد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از صبوری",
content: "ممنون از صبوری شما در توضیح مطالب.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد انتگریشن",
content: "آیا امکان انتگریشن با سیستم‌های دیگر وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد پادکست",
content: "پیشنهاد می‌کنم پادکست آموزشی تولید کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد کاستومایزیشن",
content: "تا چه حد امکان سفارشی‌سازی وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از دسترسی",
content: "ممنون از در دسترس قرار دادن این اطلاعات.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد رولبک",
content: "آیا امکان بازگشت به حالت قبل وجود دارد؟",
status: CommentStatus.APPROVED,
},
{
title: "پیشنهاد بلاگ",
content: "پیشنهاد می‌کنم بلاگ تخصصی راه‌اندازی کنید.",
status: CommentStatus.APPROVED,
},
{
title: "سوال در مورد ورژن‌بندی",
content: "چگونه ورژن‌بندی انجام می‌شود؟",
status: CommentStatus.APPROVED,
},
{
title: "تشکر از مسئولیت‌پذیری",
content: "ممنون از مسئولیت‌پذیری شما در این زمینه.",
status: CommentStatus.APPROVED,
},
];
export const seedBlogComments = async (dataSource: DataSource, logger: Logger) => {
try {
const commentRepo = dataSource.getRepository(BlogComment);
const blogRepo = dataSource.getRepository(Blog);
const userRepo = dataSource.getRepository(User);
// Get existing blogs and users
const blogs = await blogRepo.find({ where: { deletedAt: IsNull() }, take: 10, order: { createdAt: "DESC" } });
const users = await userRepo.find({ take: 10 });
if (blogs.length === 0) {
logger.warn("No blogs found. Please seed blogs first.");
return;
}
if (users.length === 0) {
logger.warn("No users found. Please seed users first.");
return;
}
for (const commentData of blogComments) {
// Randomly select blog and user
const randomBlog = blogs[Math.floor(Math.random() * blogs.length)];
const randomUser = users[Math.floor(Math.random() * users.length)];
const comment = commentRepo.create({
...commentData,
blog: randomBlog,
user: randomUser,
});
await commentRepo.save(comment);
logger.log(`Blog comment "${commentData.title}" created successfully`);
}
logger.log("Blog comments seeding completed");
} catch (error) {
logger.error("Error in seeding blog comments", error);
process.exit(1);
}
};