Files

123 lines
3.7 KiB
JavaScript

import { createClient } from '@supabase/supabase-js';
const supabaseUrl = process.env.SUPABASE_URL || process.env.VITE_SUPABASE_URL;
const supabaseKey = process.env.SUPABASE_SERVICE_KEY;
if (!supabaseUrl || !supabaseKey) {
console.error('Missing: SUPABASE_URL and SUPABASE_SERVICE_KEY required');
process.exit(1);
}
const supabase = createClient(supabaseUrl, supabaseKey);
async function seedAnnouncements() {
console.log('Setting up Ragihandin (tg_announcements)...\n');
// 1. Check/create admin user
console.log('1. Checking for admin user...');
let { data: adminUser } = await supabase
.from('tg_users')
.select('*')
.eq('is_admin', true)
.single();
if (!adminUser) {
console.log(' No admin user found, checking all users...');
const { data: allUsers } = await supabase
.from('tg_users')
.select('*')
.limit(5);
console.log(' Found', allUsers?.length || 0, 'users');
if (allUsers && allUsers.length > 0) {
console.log(' Users:', allUsers.map(u => `${u.first_name} (${u.id})`).join(', '));
// Use the first user as admin for now
adminUser = allUsers[0];
console.log(' Using first user as admin:', adminUser.first_name);
} else {
// Create a system admin user
console.log(' Creating system admin user...');
const { data: newAdmin, error: adminError } = await supabase
.from('tg_users')
.insert({
telegram_id: 0,
username: 'pezkuwichain_admin',
first_name: 'Pezkuwichain',
last_name: 'Admin',
is_admin: true
})
.select()
.single();
if (adminError) {
console.error(' Error creating admin:', adminError.message);
return false;
}
adminUser = newAdmin;
console.log(' Admin created:', adminUser.id);
}
} else {
console.log(' Admin found:', adminUser.first_name, adminUser.id);
}
// 2. Check existing announcements
console.log('\n2. Checking existing announcements...');
const { data: existing } = await supabase
.from('tg_announcements')
.select('*')
.limit(5);
console.log(' Found', existing?.length || 0, 'announcements');
const ourAnnouncement = existing?.find(a =>
a.title?.includes('Bi Xêr Hatî') || a.title?.includes('Daxuyaniyên Fermî')
);
if (ourAnnouncement) {
console.log('\n ✅ Admin announcement already exists:', ourAnnouncement.id);
return true;
}
// 3. Create the admin announcement
console.log('\n3. Creating admin announcement...');
const announcementContent = `Hûn bi xêr hatin rûpela daxuyaniyên fermî yên Pezkuwichain!
📢 Ev rûpela yekem û yekane ya daxuyaniyên fermî yên Pezkuwichain e.
✅ Li vir hûn dikarin:
• Nûçeyên herî dawî yên Pezkuwichain bişopînin
• Updateyên teknîkî û pêşkeftinên nû bibînin
• Daxuyaniyên fermî yên tîmê bixwînin
• Roadmap û pêşerojê bişopînin
⚠️ Tenê admin dikare li vir post bike - hemû agahdarî rast û fermî ne.
🔔 Bi me re bimînin!`;
const { data: newAnn, error: annError } = await supabase
.from('tg_announcements')
.insert({
title: '📢 Bi Xêr Hatî Rûpela Daxuyaniyên Fermî!',
content: announcementContent,
image_url: '/tokens/pezkuwichain_header.png',
link_url: 'https://pezkuwichain.io',
author_id: adminUser.id,
is_published: true
})
.select()
.single();
if (annError) {
console.error(' Error creating announcement:', annError.message);
return false;
}
console.log(' ✅ Announcement created:', newAnn.id);
console.log('\n✅ Ragihandin setup complete!');
return true;
}
seedAnnouncements().catch(console.error);