this repo has no description
1import { Database } from "bun:sqlite"; 2 3const db = new Database("bridge.db"); 4 5db.run(` 6 CREATE TABLE IF NOT EXISTS channel_mappings ( 7 id INTEGER PRIMARY KEY AUTOINCREMENT, 8 slack_channel_id TEXT NOT NULL UNIQUE, 9 irc_channel TEXT NOT NULL, 10 created_at INTEGER DEFAULT (strftime('%s', 'now')) 11 ) 12`); 13 14db.run(` 15 CREATE TABLE IF NOT EXISTS user_mappings ( 16 id INTEGER PRIMARY KEY AUTOINCREMENT, 17 slack_user_id TEXT NOT NULL UNIQUE, 18 irc_nick TEXT NOT NULL, 19 created_at INTEGER DEFAULT (strftime('%s', 'now')) 20 ) 21`); 22 23export interface ChannelMapping { 24 id?: number; 25 slack_channel_id: string; 26 irc_channel: string; 27 created_at?: number; 28} 29 30export interface UserMapping { 31 id?: number; 32 slack_user_id: string; 33 irc_nick: string; 34 created_at?: number; 35} 36 37export const channelMappings = { 38 getAll(): ChannelMapping[] { 39 return db.query("SELECT * FROM channel_mappings").all() as ChannelMapping[]; 40 }, 41 42 getBySlackChannel(slackChannelId: string): ChannelMapping | null { 43 return db 44 .query("SELECT * FROM channel_mappings WHERE slack_channel_id = ?") 45 .get(slackChannelId) as ChannelMapping | null; 46 }, 47 48 getByIrcChannel(ircChannel: string): ChannelMapping | null { 49 return db 50 .query("SELECT * FROM channel_mappings WHERE irc_channel = ?") 51 .get(ircChannel) as ChannelMapping | null; 52 }, 53 54 create(slackChannelId: string, ircChannel: string): void { 55 db.run( 56 "INSERT OR REPLACE INTO channel_mappings (slack_channel_id, irc_channel) VALUES (?, ?)", 57 [slackChannelId, ircChannel], 58 ); 59 }, 60 61 delete(slackChannelId: string): void { 62 db.run("DELETE FROM channel_mappings WHERE slack_channel_id = ?", [ 63 slackChannelId, 64 ]); 65 }, 66}; 67 68export const userMappings = { 69 getAll(): UserMapping[] { 70 return db.query("SELECT * FROM user_mappings").all() as UserMapping[]; 71 }, 72 73 getBySlackUser(slackUserId: string): UserMapping | null { 74 return db 75 .query("SELECT * FROM user_mappings WHERE slack_user_id = ?") 76 .get(slackUserId) as UserMapping | null; 77 }, 78 79 getByIrcNick(ircNick: string): UserMapping | null { 80 return db 81 .query("SELECT * FROM user_mappings WHERE irc_nick = ?") 82 .get(ircNick) as UserMapping | null; 83 }, 84 85 create(slackUserId: string, ircNick: string): void { 86 db.run( 87 "INSERT OR REPLACE INTO user_mappings (slack_user_id, irc_nick) VALUES (?, ?)", 88 [slackUserId, ircNick], 89 ); 90 }, 91 92 delete(slackUserId: string): void { 93 db.run("DELETE FROM user_mappings WHERE slack_user_id = ?", [slackUserId]); 94 }, 95}; 96 97export default db;