استيراد الأصوات: هل يمكن استخدام أمر PostgreSQL أو غيره لتعيين عدد الأصوات لمواضيع محددة؟

مرحباً، أنا بصدد الترحيل من AnswerHub إلى Discourse. ومع ذلك، نظرًا لعدم وصولي إلى قاعدة بيانات AnswerHub، فقد قمت بكشط الموقع بأكمله لجمع الأفكار وعدد الأصوات الخاصة بها.

كيف يمكنني تجاوز عدد الأصوات لسؤال معين في Discourse؟ على سبيل المثال، سؤال “اصنع وصفة جديدة بالبرتقال” لديه 42 صوتًا على AnswerHub الخاص بي. لقد قمت باستيراد السؤال، ولكنني أرغب في تعيين عدد الأصوات إلى 42 بدلاً من أن يكون افتراضيًا 0. بهذه الطريقة، يمكن للمستخدمين رؤية العدد الدقيق للأصوات لكل سؤال.

هل هناك طريقة لتنفيذ أمر PostgreSQL لتعيين عدد الأصوات يدويًا؟
هل أحتاج إلى إنشاء أكثر من 100 مستخدم وهمي لمحاكاة عدد الأصوات لكل سؤال؟ آمل ألا يكون الأمر كذلك، فهذا ليس حلاً مثاليًا :stuck_out_tongue:

شكراً مقدماً على مساعدتكم.

:slight_smile:

إعجاب واحد (1)

مرحباً لوسيد!

:warning: لست خبيراً ولم أستخدم هذه الإضافة من قبل :upside_down_face:

هذا سؤال رائع وأخشى أنني لا أستطيع الإجابة بدقة، ولكن ربما يمكنني تقديم بعض التلميحات بما أنك تبدو على دراية بالبرمجة (بما أنك تنتقل من الصفر)

تستخدم إضافة التصويت جدولين:

discourse_voting_topic_vote_count

اسم الحقل النوع القيود
id تسلسلي مفتاح أساسي
topic_id عدد صحيح مفتاح خارجي (يشير إلى المواضيع)، يمكن أن يكون فارغاً
votes_count عدد صحيح يمكن أن يكون فارغاً
created_at طابع زمني
updated_at طابع زمني

discourse_voting_votes

اسم الحقل النوع القيود
id تسلسلي مفتاح أساسي
topic_id عدد صحيح مفتاح خارجي (يشير إلى المواضيع)، يمكن أن يكون فارغاً
user_id عدد صحيح مفتاح خارجي (يشير إلى المستخدمين)، يمكن أن يكون فارغاً
archive منطقي يمكن أن يكون فارغاً، افتراضي خطأ
created_at طابع زمني
updated_at طابع زمني

قد تكون مهتماً بإعدادات الإضافة أيضاً ولكن أعتقد أنك على علم بها بالفعل :slight_smile:

أخيراً، يجب تمكين التصويت على المواضيع لكل فئة، لذا سأقوم بتمكينها أثناء إنشاء الفئات في سكربت الاستيراد.

أما عن كيفية ملء الأصوات بشكل صحيح في الموضوع أثناء الترحيل، فأنا لست خبيراً، ولكن أعتقد أنني سأستخدم مستخدمين عشوائيين وفريدين لكل تصويت، حيث تمنع الوظيفة التصويتات المتعددة من نفس المستخدم وستحذف الأصوات المكررة:

https://github.com/discourse/discourse-topic-voting/blob/main/app/jobs/onceoff/voting_ensure_consistency.rb#L28

سأقوم بملء الحقول الضرورية (يتم تحديدها) وأترك الوظائف تملأ الحقول الأخرى إذا كان هناك شيء من هذا القبيل.

قد ترغب أيضاً في إلقاء نظرة على جميع وظائف الإضافة discourse-topic-voting/app/jobs at main · discourse/discourse-topic-voting · GitHub

آمل أن يكون هذا مفيداً بعض الشيء وأن تشاركنا كيف تسير الأمور :slight_smile:

إعجاب واحد (1)

رائع، شكرًا لك على هذا المنشور الرائع والمفيد! :slight_smile:
لقد قررت اعتماد نهج مختلف:

في موقعي الأصلي، تمكنت من استرداد البيانات حول من صوت لصالح ماذا، لذلك قمت بتخزين تلك المعلومات في قاعدة بيانات. لاحقًا، استخدمت نصًا برمجيًا بلغة بايثون مع مكتبة requests للتصويت من حساباتهم المهاجرة للأفكار التي صوتوا لها بالفعل، وها هي النتيجة!

شكرًا لك مرة أخرى

إعجاب واحد (1)