Skip to content

Commit

Permalink
chore: progress or something idk
Browse files Browse the repository at this point in the history
  • Loading branch information
vladfrangu committed May 11, 2024
1 parent f853838 commit a2b7ffd
Show file tree
Hide file tree
Showing 21 changed files with 2,079 additions and 558 deletions.
593 changes: 297 additions & 296 deletions .yarn/releases/yarn-4.1.1.cjs → .yarn/releases/yarn-4.2.2.cjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ enableGlobalCache: true

nodeLinker: node-modules

yarnPath: .yarn/releases/yarn-4.1.1.cjs
yarnPath: .yarn/releases/yarn-4.2.2.cjs
43 changes: 42 additions & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
import process from 'node:process';
import { setup } from '@skyra/env-utilities';
import safeqlPlugin from '@ts-safeql/eslint-plugin';
import common from 'eslint-config-neon/flat/common.js';
import node from 'eslint-config-neon/flat/node.js';
import prettier from 'eslint-config-neon/flat/prettier.js';
import typescript from 'eslint-config-neon/flat/typescript.js';
import isCI from 'is-ci';
import merge from 'lodash.merge';

setup({ path: new URL('.env', import.meta.url) });

const commonFiles = '{js,mjs,cjs,ts,mts,cts,jsx,tsx}';

const commonRuleset = merge(...common, { files: [`**/*${commonFiles}`] });
Expand Down Expand Up @@ -45,8 +51,37 @@ const typeScriptRuleset = merge(...typescript, {

const prettierRuleset = merge(...prettier, { files: [`**/*${commonFiles}`] });

/** @type {import('eslint').Linter.FlatConfig} */
const safeqlRuleset = {
files: [`**/*${commonFiles}`],
plugins: {
safeql: safeqlPlugin,
},
languageOptions: {
parserOptions: {
project: ['tsconfig.eslint.json'],
},
},
rules: {
'safeql/check-sql': [
2,
{
connections: [
{
connectionUrl: process.env.POSTGRES_URL,
migrationsDir: './prisma/migrations',
targets: [
{ tag: '**prisma.+($queryRaw|$executeRaw)', transform: '{type}[]' },
],
},
],
},
],
},
};

/** @type {import('eslint').Linter.FlatConfig[]} */
export default [
const rules = [
{
ignores: ['**/node_modules/', '.git/', '**/dist/', '**/coverage/'],
},
Expand All @@ -59,3 +94,9 @@ export default [
},
prettierRuleset,
];

if (!isCI) {
rules.push(safeqlRuleset);
}

export default rules;
30 changes: 17 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@
"watch": "tsc -w"
},
"dependencies": {
"@discordjs/builders": "^1.7.0",
"@discordjs/builders": "^1.8.1",
"@mikro-orm/sql-highlighter": "^1.0.1",
"@prisma/client": "^5.13.0",
"@sapphire/decorators": "^6.1.0",
"@sapphire/discord-utilities": "^3.2.3",
"@sapphire/discord.js-utilities": "^7.2.0",
"@sapphire/framework": "^5.1.0",
"@sapphire/discord.js-utilities": "^7.2.1",
"@sapphire/framework": "^5.2.1",
"@sapphire/plugin-logger": "^4.0.2",
"@sapphire/plugin-subcommands": "^6.0.3",
"@sapphire/stopwatch": "^1.5.2",
Expand All @@ -45,31 +45,35 @@
"bufferutil": "^4.0.8",
"colorette": "^2.0.20",
"confusables": "^1.1.1",
"discord-api-types": "^0.37.71",
"discord.js": "^14.14.1",
"re2": "^1.20.10",
"discord-api-types": "0.37.83",
"discord.js": "^14.15.2",
"re2": "^1.20.11",
"tslib": "^2.6.2",
"utf-8-validate": "^6.0.3",
"utf-8-validate": "^6.0.4",
"zlib-sync": "^0.1.9"
},
"devDependencies": {
"@sapphire/prettier-config": "^2.0.0",
"@sapphire/ts-config": "^5.0.1",
"@ts-safeql/eslint-plugin": "^3.1.0",
"@types/is-ci": "^3",
"@types/lodash.merge": "^4.6.9",
"@types/node": "^20.12.7",
"@types/node": "^20.12.11",
"@typescript-eslint/eslint-plugin": "^7.8.0",
"@typescript-eslint/parser": "^7.8.0",
"@vitest/coverage-v8": "^1.5.2",
"@vitest/coverage-v8": "^1.6.0",
"cross-env": "^7.0.3",
"eslint": "^8.57.0",
"eslint-config-neon": "^0.1.62",
"eslint-formatter-pretty": "^6.0.1",
"is-ci": "^3.0.1",
"libpg-query": "^16.2.0",
"lodash.merge": "^4.6.2",
"prettier": "^3.2.5",
"prisma": "^5.13.0",
"rimraf": "^5.0.5",
"rimraf": "^5.0.6",
"typescript": "^5.4.5",
"vitest": "^1.5.2"
"vitest": "^1.6.0"
},
"author": {
"name": "Vlad Frangu",
Expand All @@ -78,9 +82,9 @@
"engines": {
"node": ">=20.0.0"
},
"packageManager": "yarn@4.1.1",
"packageManager": "yarn@4.2.2",
"volta": {
"node": "20.12.2",
"yarn": "4.1.1"
"yarn": "4.2.2"
}
}
122 changes: 122 additions & 0 deletions prisma/migrations/20240510235633_initial_schema/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
-- CreateEnum
CREATE TYPE "GuildNotificationStyle" AS ENUM ('WITH_CONTEXT_AND_AUTHOR', 'WITH_CONTEXT_BUT_NO_AUTHOR', 'WITHOUT_CONTEXT_BUT_WITH_AUTHOR', 'WITHOUT_CONTEXT_OR_AUTHOR');

-- CreateTable
CREATE TABLE "users" (
"id" TEXT NOT NULL,
"opted_out" BOOLEAN NOT NULL DEFAULT false,
"opted_out_at" TIMESTAMP(3),
"grace_period" INTEGER,
"adult_channel_highlights" BOOLEAN NOT NULL DEFAULT false,
"direct_message_failed_attempts" INTEGER NOT NULL DEFAULT 0,
"direct_message_cooldown_expires_at" TIMESTAMP(3),

CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "global_ignored_users" (
"user_id" TEXT NOT NULL,
"ignored_user_id" TEXT NOT NULL,

CONSTRAINT "global_ignored_users_pkey" PRIMARY KEY ("user_id","ignored_user_id")
);

-- CreateTable
CREATE TABLE "guilds" (
"guild_id" TEXT NOT NULL,
"notification_style" "GuildNotificationStyle" NOT NULL DEFAULT 'WITH_CONTEXT_AND_AUTHOR',
"channel_with_bot_parsings_allowed" INTEGER NOT NULL DEFAULT 3,

CONSTRAINT "guilds_pkey" PRIMARY KEY ("guild_id")
);

-- CreateTable
CREATE TABLE "channels_with_bot_parsing" (
"channel_id" TEXT NOT NULL,
"guild_id" TEXT NOT NULL,
"user_id" TEXT NOT NULL,
"added_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,

CONSTRAINT "channels_with_bot_parsing_pkey" PRIMARY KEY ("channel_id")
);

-- CreateTable
CREATE TABLE "members" (
"guild_id" TEXT NOT NULL,
"user_id" TEXT NOT NULL,
"words" TEXT[],
"regular_expressions" TEXT[],

CONSTRAINT "members_pkey" PRIMARY KEY ("guild_id","user_id")
);

-- CreateTable
CREATE TABLE "user_activities" (
"user_id" TEXT NOT NULL,
"channel_id" TEXT NOT NULL,
"guild_id" TEXT NOT NULL,
"last_active_at" TIMESTAMP NOT NULL,

CONSTRAINT "user_activities_pkey" PRIMARY KEY ("user_id","channel_id")
);

-- CreateTable
CREATE TABLE "guild_ignored_channels" (
"ignored_channel_id" TEXT NOT NULL,
"user_id" TEXT NOT NULL,
"guild_id" TEXT NOT NULL,

CONSTRAINT "guild_ignored_channels_pkey" PRIMARY KEY ("guild_id","user_id","ignored_channel_id")
);

-- CreateTable
CREATE TABLE "guild_ignored_users" (
"ignored_user_id" TEXT NOT NULL,
"user_id" TEXT NOT NULL,
"guild_id" TEXT NOT NULL,

CONSTRAINT "guild_ignored_users_pkey" PRIMARY KEY ("guild_id","user_id","ignored_user_id")
);

-- CreateIndex
CREATE INDEX "global_ignored_users_user_id_idx" ON "global_ignored_users"("user_id");

-- CreateIndex
CREATE INDEX "members_guild_id_idx" ON "members"("guild_id");

-- CreateIndex
CREATE INDEX "guild_ignored_channels_user_id_guild_id_idx" ON "guild_ignored_channels"("user_id", "guild_id");

-- CreateIndex
CREATE INDEX "guild_ignored_channels_guild_id_idx" ON "guild_ignored_channels"("guild_id");

-- CreateIndex
CREATE INDEX "guild_ignored_users_user_id_guild_id_idx" ON "guild_ignored_users"("user_id", "guild_id");

-- CreateIndex
CREATE INDEX "guild_ignored_users_guild_id_idx" ON "guild_ignored_users"("guild_id");

-- AddForeignKey
ALTER TABLE "global_ignored_users" ADD CONSTRAINT "global_ignored_users_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "channels_with_bot_parsing" ADD CONSTRAINT "channels_with_bot_parsing_guild_id_fkey" FOREIGN KEY ("guild_id") REFERENCES "guilds"("guild_id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "members" ADD CONSTRAINT "members_guild_id_fkey" FOREIGN KEY ("guild_id") REFERENCES "guilds"("guild_id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "members" ADD CONSTRAINT "members_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "user_activities" ADD CONSTRAINT "user_activities_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "user_activities" ADD CONSTRAINT "user_activities_guild_id_fkey" FOREIGN KEY ("guild_id") REFERENCES "guilds"("guild_id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "guild_ignored_channels" ADD CONSTRAINT "guild_ignored_channels_guild_id_user_id_fkey" FOREIGN KEY ("guild_id", "user_id") REFERENCES "members"("guild_id", "user_id") ON DELETE CASCADE ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "guild_ignored_users" ADD CONSTRAINT "guild_ignored_users_guild_id_user_id_fkey" FOREIGN KEY ("guild_id", "user_id") REFERENCES "members"("guild_id", "user_id") ON DELETE CASCADE ON UPDATE CASCADE;
3 changes: 3 additions & 0 deletions prisma/migrations/migration_lock.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "postgresql"
2 changes: 1 addition & 1 deletion prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ model User {
/// Support globally ignoring users
///
/// /highlight globally-ignored-users add/remove/list/clear [user_id]
/// /globally-ignored-users add/remove/list/clear [user_id]
globallyIgnoredUsers GlobalIgnoredUser[]
/// All members that point to this user
Expand Down
1 change: 0 additions & 1 deletion src/commands/Admin/bot-parsing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,6 @@ export class BotParsingCommand extends Subcommand {
const guildChannel = interaction.guild.channels.resolve(channelData.channelId);

if (!guildChannel) {
// TODO: maybe remove entry from DB
continue;
}

Expand Down
Loading

0 comments on commit a2b7ffd

Please sign in to comment.