mirror of
https://github.com/twentyhq/twenty.git
synced 2024-08-17 18:00:29 +03:00
Remove SQLite from twenty-website (#5142)
Removed SQLite from twenty-website --------- Co-authored-by: Ady Beraud <a.beraud96@gmail.com> Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
parent
0f47426d19
commit
5d2d6bae08
14
.github/workflows/ci-website.yaml
vendored
14
.github/workflows/ci-website.yaml
vendored
@ -17,6 +17,14 @@ concurrency:
|
||||
jobs:
|
||||
website-build:
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
postgres:
|
||||
image: twentycrm/twenty-postgres
|
||||
env:
|
||||
POSTGRES_PASSWORD: twenty
|
||||
POSTGRES_USER: twenty
|
||||
ports:
|
||||
- 5432:5432
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Node.js
|
||||
@ -25,5 +33,11 @@ jobs:
|
||||
node-version: "18"
|
||||
- name: Website / Install Dependencies
|
||||
run: yarn
|
||||
- name: Website / Run migrations
|
||||
run: npx nx database:migrate twenty-website
|
||||
env:
|
||||
DATABASE_PG_URL: postgres://twenty:twenty@localhost:5432/default
|
||||
- name: Website / Build Website
|
||||
run: npx nx build twenty-website
|
||||
env:
|
||||
DATABASE_PG_URL: postgres://twenty:twenty@localhost:5432/default
|
@ -22,7 +22,6 @@
|
||||
"@hello-pangea/dnd": "^16.2.0",
|
||||
"@hookform/resolvers": "^3.1.1",
|
||||
"@jsdevtools/rehype-toc": "^3.0.2",
|
||||
"@libsql/client": "^0.4.3",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@nestjs/apollo": "^11.0.5",
|
||||
"@nestjs/axios": "^3.0.1",
|
||||
|
@ -1,4 +1,3 @@
|
||||
GITHUB_TOKEN=your_github_token
|
||||
DATABASE_DRIVER=sqlite # or pg
|
||||
DATABASE_PG_URL=postgres://website:website@localhost:5432/website # only if using postgres
|
||||
|
||||
|
@ -10,8 +10,7 @@
|
||||
"lint": "npx next lint",
|
||||
"github:sync": "npx tsx src/github-sync/github-sync.ts",
|
||||
"database:migrate": "npx tsx src/database/migrate-database.ts",
|
||||
"database:generate:pg": "npx drizzle-kit generate:pg --config=src/database/postgres/drizzle-posgres.config.ts",
|
||||
"database:generate:sqlite": "npx drizzle-kit generate:sqlite --config=src/database/sqlite/drizzle-sqlite.config.ts"
|
||||
"database:generate:pg": "npx drizzle-kit generate:pg --config=src/database/drizzle-posgres.config.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"postgres": "^3.4.3"
|
||||
|
@ -1,135 +1,56 @@
|
||||
import { global } from '@apollo/client/utilities/globals';
|
||||
import { createClient } from '@libsql/client';
|
||||
import { drizzle as sqliteDrizzle, LibSQLDatabase } from 'drizzle-orm/libsql';
|
||||
import { migrate as sqliteMigrate } from 'drizzle-orm/libsql/migrator';
|
||||
import {
|
||||
drizzle as pgDrizzle,
|
||||
PostgresJsDatabase,
|
||||
} from 'drizzle-orm/postgres-js';
|
||||
import { drizzle } from 'drizzle-orm/postgres-js';
|
||||
import { migrate as postgresMigrate } from 'drizzle-orm/postgres-js/migrator';
|
||||
import { SQLiteTableWithColumns } from 'drizzle-orm/sqlite-core';
|
||||
import postgres from 'postgres';
|
||||
|
||||
import 'dotenv/config';
|
||||
|
||||
// Todo: Deprecate SQLite once prototyping is complete, this is making things impossible to type properly
|
||||
const databaseDriver = global.process.env.DATABASE_DRIVER || 'sqlite';
|
||||
const isSqliteDriver = databaseDriver === 'sqlite';
|
||||
const isPgDriver = databaseDriver === 'pg';
|
||||
|
||||
let sqliteDb: LibSQLDatabase;
|
||||
let pgDb: PostgresJsDatabase;
|
||||
|
||||
if (isSqliteDriver) {
|
||||
const sqliteClient = createClient({
|
||||
url: 'file:twenty-website.sqlite',
|
||||
});
|
||||
sqliteDb = sqliteDrizzle(sqliteClient, { logger: false });
|
||||
}
|
||||
|
||||
if (isPgDriver) {
|
||||
const pgClient = postgres(`${global.process.env.DATABASE_PG_URL}`);
|
||||
pgDb = pgDrizzle(pgClient, { logger: false });
|
||||
}
|
||||
const pgClient = postgres(`${global.process.env.DATABASE_PG_URL}`);
|
||||
const pgDb = drizzle(pgClient, { logger: false });
|
||||
|
||||
const migrate = async () => {
|
||||
if (isSqliteDriver) {
|
||||
await sqliteMigrate(sqliteDb, {
|
||||
migrationsFolder: './src/database/sqlite/migrations',
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (isPgDriver) {
|
||||
await postgresMigrate(pgDb, {
|
||||
migrationsFolder: './src/database/postgres/migrations',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Error('Unsupported database driver');
|
||||
await postgresMigrate(pgDb, {
|
||||
migrationsFolder: './src/database/migrations',
|
||||
});
|
||||
};
|
||||
|
||||
const findOne = (model: SQLiteTableWithColumns<any>, orderBy: any) => {
|
||||
if (isSqliteDriver) {
|
||||
return sqliteDb.select().from(model).orderBy(orderBy).limit(1).execute();
|
||||
}
|
||||
|
||||
if (isPgDriver) {
|
||||
return pgDb.select().from(model).orderBy(orderBy).limit(1).execute();
|
||||
}
|
||||
|
||||
throw new Error('Unsupported database driver');
|
||||
const findOne = (model: any, orderBy: any) => {
|
||||
return pgDb.select().from(model).orderBy(orderBy).limit(1).execute();
|
||||
};
|
||||
|
||||
const findAll = (model: SQLiteTableWithColumns<any>) => {
|
||||
if (isSqliteDriver) {
|
||||
return sqliteDb.select().from(model).all();
|
||||
}
|
||||
|
||||
if (isPgDriver) {
|
||||
return pgDb.select().from(model).execute();
|
||||
}
|
||||
|
||||
throw new Error('Unsupported database driver');
|
||||
const findAll = (model: any) => {
|
||||
return pgDb.select().from(model).execute();
|
||||
};
|
||||
|
||||
const insertMany = async (
|
||||
model: SQLiteTableWithColumns<any>,
|
||||
model: any,
|
||||
data: any,
|
||||
options?: {
|
||||
onConflictKey?: string;
|
||||
onConflictUpdateObject?: any;
|
||||
},
|
||||
) => {
|
||||
if (isSqliteDriver) {
|
||||
const query = sqliteDb.insert(model).values(data);
|
||||
|
||||
if (options?.onConflictUpdateObject) {
|
||||
if (options?.onConflictKey) {
|
||||
return query
|
||||
.onConflictDoUpdate({
|
||||
target: [model[options.onConflictKey]],
|
||||
set: options.onConflictUpdateObject,
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
const query = pgDb.insert(model).values(data);
|
||||
|
||||
if (options?.onConflictUpdateObject) {
|
||||
if (options?.onConflictKey) {
|
||||
return query
|
||||
.onConflictDoNothing({
|
||||
.onConflictDoUpdate({
|
||||
target: [model[options.onConflictKey]],
|
||||
set: options.onConflictUpdateObject,
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
|
||||
return query.execute();
|
||||
}
|
||||
if (isPgDriver) {
|
||||
const query = pgDb.insert(model).values(data);
|
||||
|
||||
if (options?.onConflictUpdateObject) {
|
||||
if (options?.onConflictKey) {
|
||||
return query
|
||||
.onConflictDoUpdate({
|
||||
target: [model[options.onConflictKey]],
|
||||
set: options.onConflictUpdateObject,
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
||||
if (options?.onConflictKey) {
|
||||
return query
|
||||
.onConflictDoNothing({
|
||||
target: [model[options.onConflictKey]],
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
return query.execute();
|
||||
}
|
||||
|
||||
throw new Error('Unsupported database driver');
|
||||
if (options?.onConflictKey) {
|
||||
return query
|
||||
.onConflictDoNothing({
|
||||
target: [model[options.onConflictKey]],
|
||||
})
|
||||
.execute();
|
||||
}
|
||||
return query.execute();
|
||||
};
|
||||
|
||||
export { findAll, findOne, insertMany, migrate };
|
||||
|
@ -3,8 +3,8 @@ import { Config } from 'drizzle-kit';
|
||||
import 'dotenv/config';
|
||||
|
||||
const pgConfig = {
|
||||
schema: './src/database/postgres/schema-postgres.ts',
|
||||
out: './src/database/postgres/migrations',
|
||||
schema: './src/database/schema-postgres.ts',
|
||||
out: './src/database/migrations',
|
||||
driver: 'pg',
|
||||
dbCredentials: {
|
||||
connectionString: process.env.DATABASE_PG_URL ?? '',
|
@ -6,31 +6,14 @@ import {
|
||||
pgPullRequestLabels,
|
||||
pgPullRequests,
|
||||
pgUsers,
|
||||
} from '@/database/postgres/schema-postgres';
|
||||
import {
|
||||
sqlLiteIssueLabels,
|
||||
sqlLiteIssues,
|
||||
sqlLiteLabels,
|
||||
sqlLitePullRequestLabels,
|
||||
sqlLitePullRequests,
|
||||
sqlLiteUsers,
|
||||
} from '@/database/sqlite/schema-sqlite';
|
||||
} from '@/database/schema-postgres';
|
||||
|
||||
const databaseDriver = global.process.env.DATABASE_DRIVER;
|
||||
const isSqliteDriver = databaseDriver === 'sqlite';
|
||||
|
||||
export const userModel = isSqliteDriver ? sqlLiteUsers : pgUsers;
|
||||
export const pullRequestModel = isSqliteDriver
|
||||
? sqlLitePullRequests
|
||||
: pgPullRequests;
|
||||
export const issueModel = isSqliteDriver ? sqlLiteIssues : pgIssues;
|
||||
export const labelModel = isSqliteDriver ? sqlLiteLabels : pgLabels;
|
||||
export const pullRequestLabelModel = isSqliteDriver
|
||||
? sqlLitePullRequestLabels
|
||||
: pgPullRequestLabels;
|
||||
export const issueLabelModel = isSqliteDriver
|
||||
? sqlLiteIssueLabels
|
||||
: pgIssueLabels;
|
||||
export const userModel = pgUsers;
|
||||
export const pullRequestModel = pgPullRequests;
|
||||
export const issueModel = pgIssues;
|
||||
export const labelModel = pgLabels;
|
||||
export const pullRequestLabelModel = pgPullRequestLabels;
|
||||
export const issueLabelModel = pgIssueLabels;
|
||||
|
||||
export const githubStarsModel = pgGithubStars;
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
import { Config } from 'drizzle-kit';
|
||||
|
||||
import 'dotenv/config';
|
||||
|
||||
const sqliteConfig = {
|
||||
schema: './src/database/sqlite/schema-sqlite.ts',
|
||||
out: './src/database/sqlite/migrations',
|
||||
driver: 'libsql',
|
||||
dbCredentials: {
|
||||
url: 'twenty-website.sqlite',
|
||||
},
|
||||
} satisfies Config;
|
||||
|
||||
export default sqliteConfig;
|
@ -1,54 +0,0 @@
|
||||
CREATE TABLE `issueLabels` (
|
||||
`issueId` text,
|
||||
`labelId` text,
|
||||
FOREIGN KEY (`issueId`) REFERENCES `issues`(`id`) ON UPDATE no action ON DELETE no action,
|
||||
FOREIGN KEY (`labelId`) REFERENCES `labels`(`id`) ON UPDATE no action ON DELETE no action
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `issues` (
|
||||
`id` text PRIMARY KEY NOT NULL,
|
||||
`externalId` text,
|
||||
`title` text,
|
||||
`body` text,
|
||||
`url` text,
|
||||
`createdAt` text,
|
||||
`updatedAt` text,
|
||||
`closedAt` text,
|
||||
`authorId` text,
|
||||
FOREIGN KEY (`authorId`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `labels` (
|
||||
`id` text PRIMARY KEY NOT NULL,
|
||||
`externalId` text,
|
||||
`name` text,
|
||||
`color` text,
|
||||
`description` text
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `pullRequestLabels` (
|
||||
`pullRequestExternalId` text,
|
||||
`labelId` text,
|
||||
FOREIGN KEY (`pullRequestExternalId`) REFERENCES `pullRequests`(`id`) ON UPDATE no action ON DELETE no action,
|
||||
FOREIGN KEY (`labelId`) REFERENCES `labels`(`id`) ON UPDATE no action ON DELETE no action
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `pullRequests` (
|
||||
`id` text PRIMARY KEY NOT NULL,
|
||||
`title` text,
|
||||
`body` text,
|
||||
`url` text,
|
||||
`createdAt` text,
|
||||
`updatedAt` text,
|
||||
`closedAt` text,
|
||||
`mergedAt` text,
|
||||
`authorId` text,
|
||||
FOREIGN KEY (`authorId`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `users` (
|
||||
`id` text PRIMARY KEY NOT NULL,
|
||||
`avatarUrl` text,
|
||||
`url` text,
|
||||
`isEmployee` text
|
||||
);
|
@ -1,367 +0,0 @@
|
||||
{
|
||||
"version": "5",
|
||||
"dialect": "sqlite",
|
||||
"id": "033cd768-53b9-4c60-99ee-be070ea7abd6",
|
||||
"prevId": "00000000-0000-0000-0000-000000000000",
|
||||
"tables": {
|
||||
"issueLabels": {
|
||||
"name": "issueLabels",
|
||||
"columns": {
|
||||
"issueId": {
|
||||
"name": "issueId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"labelId": {
|
||||
"name": "labelId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"issueLabels_issueId_issues_id_fk": {
|
||||
"name": "issueLabels_issueId_issues_id_fk",
|
||||
"tableFrom": "issueLabels",
|
||||
"tableTo": "issues",
|
||||
"columnsFrom": [
|
||||
"issueId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
},
|
||||
"issueLabels_labelId_labels_id_fk": {
|
||||
"name": "issueLabels_labelId_labels_id_fk",
|
||||
"tableFrom": "issueLabels",
|
||||
"tableTo": "labels",
|
||||
"columnsFrom": [
|
||||
"labelId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
},
|
||||
"issues": {
|
||||
"name": "issues",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "text",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"externalId": {
|
||||
"name": "externalId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"title": {
|
||||
"name": "title",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"body": {
|
||||
"name": "body",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"url": {
|
||||
"name": "url",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"createdAt": {
|
||||
"name": "createdAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"updatedAt": {
|
||||
"name": "updatedAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"closedAt": {
|
||||
"name": "closedAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"authorId": {
|
||||
"name": "authorId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"issues_authorId_users_id_fk": {
|
||||
"name": "issues_authorId_users_id_fk",
|
||||
"tableFrom": "issues",
|
||||
"tableTo": "users",
|
||||
"columnsFrom": [
|
||||
"authorId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
},
|
||||
"labels": {
|
||||
"name": "labels",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "text",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"externalId": {
|
||||
"name": "externalId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"name": {
|
||||
"name": "name",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"color": {
|
||||
"name": "color",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"description": {
|
||||
"name": "description",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
},
|
||||
"pullRequestLabels": {
|
||||
"name": "pullRequestLabels",
|
||||
"columns": {
|
||||
"pullRequestExternalId": {
|
||||
"name": "pullRequestExternalId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"labelId": {
|
||||
"name": "labelId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"pullRequestLabels_pullRequestExternalId_pullRequests_id_fk": {
|
||||
"name": "pullRequestLabels_pullRequestExternalId_pullRequests_id_fk",
|
||||
"tableFrom": "pullRequestLabels",
|
||||
"tableTo": "pullRequests",
|
||||
"columnsFrom": [
|
||||
"pullRequestExternalId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
},
|
||||
"pullRequestLabels_labelId_labels_id_fk": {
|
||||
"name": "pullRequestLabels_labelId_labels_id_fk",
|
||||
"tableFrom": "pullRequestLabels",
|
||||
"tableTo": "labels",
|
||||
"columnsFrom": [
|
||||
"labelId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
},
|
||||
"pullRequests": {
|
||||
"name": "pullRequests",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "text",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"title": {
|
||||
"name": "title",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"body": {
|
||||
"name": "body",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"url": {
|
||||
"name": "url",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"createdAt": {
|
||||
"name": "createdAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"updatedAt": {
|
||||
"name": "updatedAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"closedAt": {
|
||||
"name": "closedAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"mergedAt": {
|
||||
"name": "mergedAt",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"authorId": {
|
||||
"name": "authorId",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"pullRequests_authorId_users_id_fk": {
|
||||
"name": "pullRequests_authorId_users_id_fk",
|
||||
"tableFrom": "pullRequests",
|
||||
"tableTo": "users",
|
||||
"columnsFrom": [
|
||||
"authorId"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
},
|
||||
"users": {
|
||||
"name": "users",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "text",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"avatarUrl": {
|
||||
"name": "avatarUrl",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"url": {
|
||||
"name": "url",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"isEmployee": {
|
||||
"name": "isEmployee",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
}
|
||||
},
|
||||
"enums": {},
|
||||
"_meta": {
|
||||
"schemas": {},
|
||||
"tables": {},
|
||||
"columns": {}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{
|
||||
"version": "5",
|
||||
"dialect": "sqlite",
|
||||
"entries": [
|
||||
{
|
||||
"idx": 0,
|
||||
"version": "5",
|
||||
"when": 1707920913359,
|
||||
"tag": "0000_small_karma",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
import { sqliteTable, text } from 'drizzle-orm/sqlite-core';
|
||||
|
||||
export const sqlLiteUsers = sqliteTable('users', {
|
||||
id: text('id').primaryKey(),
|
||||
avatarUrl: text('avatarUrl'),
|
||||
url: text('url'),
|
||||
isEmployee: text('isEmployee'),
|
||||
});
|
||||
|
||||
export const sqlLitePullRequests = sqliteTable('pullRequests', {
|
||||
id: text('id').primaryKey(),
|
||||
title: text('title'),
|
||||
body: text('body'),
|
||||
url: text('url'),
|
||||
createdAt: text('createdAt'),
|
||||
updatedAt: text('updatedAt'),
|
||||
closedAt: text('closedAt'),
|
||||
mergedAt: text('mergedAt'),
|
||||
authorId: text('authorId').references(() => sqlLiteUsers.id),
|
||||
});
|
||||
|
||||
export const sqlLiteIssues = sqliteTable('issues', {
|
||||
id: text('id').primaryKey(),
|
||||
externalId: text('externalId'),
|
||||
title: text('title'),
|
||||
body: text('body'),
|
||||
url: text('url'),
|
||||
createdAt: text('createdAt'),
|
||||
updatedAt: text('updatedAt'),
|
||||
closedAt: text('closedAt'),
|
||||
authorId: text('authorId').references(() => sqlLiteUsers.id),
|
||||
});
|
||||
|
||||
export const sqlLiteLabels = sqliteTable('labels', {
|
||||
id: text('id').primaryKey(),
|
||||
externalId: text('externalId'),
|
||||
name: text('name'),
|
||||
color: text('color'),
|
||||
description: text('description'),
|
||||
});
|
||||
|
||||
export const sqlLitePullRequestLabels = sqliteTable('pullRequestLabels', {
|
||||
pullRequestId: text('pullRequestExternalId').references(
|
||||
() => sqlLitePullRequests.id,
|
||||
),
|
||||
labelId: text('labelId').references(() => sqlLiteLabels.id),
|
||||
});
|
||||
|
||||
export const sqlLiteIssueLabels = sqliteTable('issueLabels', {
|
||||
issueId: text('issueId').references(() => sqlLiteIssues.id),
|
||||
labelId: text('labelId').references(() => sqlLiteLabels.id),
|
||||
});
|
226
yarn.lock
226
yarn.lock
@ -7463,111 +7463,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/client@npm:^0.4.3":
|
||||
version: 0.4.3
|
||||
resolution: "@libsql/client@npm:0.4.3"
|
||||
dependencies:
|
||||
"@libsql/core": "npm:^0.4.3"
|
||||
"@libsql/hrana-client": "npm:^0.5.6"
|
||||
js-base64: "npm:^3.7.5"
|
||||
libsql: "npm:^0.2.0"
|
||||
dependenciesMeta:
|
||||
libsql:
|
||||
optional: true
|
||||
checksum: 513c3c98b922a2f8e7c2c51e984559e23bf805bcf7f35c1f45fb70fba6c3bbe0e656b8c8b304c5d7f322bc07ef0f2398210c73b28dd3329aa6ca3d666e4d03b4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/core@npm:^0.4.3":
|
||||
version: 0.4.3
|
||||
resolution: "@libsql/core@npm:0.4.3"
|
||||
dependencies:
|
||||
js-base64: "npm:^3.7.5"
|
||||
checksum: 39acd3afd1177264a0c556d4351c490aa6b6202f38544cef9863839de6fc26743284a4395ecb4fd187f033db74c9a31fa3d8b6331f9857d82f51616345cef7cb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/darwin-arm64@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/darwin-arm64@npm:0.2.0"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/darwin-x64@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/darwin-x64@npm:0.2.0"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/hrana-client@npm:^0.5.6":
|
||||
version: 0.5.6
|
||||
resolution: "@libsql/hrana-client@npm:0.5.6"
|
||||
dependencies:
|
||||
"@libsql/isomorphic-fetch": "npm:^0.1.12"
|
||||
"@libsql/isomorphic-ws": "npm:^0.1.5"
|
||||
js-base64: "npm:^3.7.5"
|
||||
node-fetch: "npm:^3.3.2"
|
||||
checksum: f09bcb100eaba5f96ba013aefc28e5799197c576a03dc11045acb10494cd302f8e15369b3dfc51f9a9f3bc01f796d8aad4c8013428e82e1d0d8603a1a4e3d4f5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/isomorphic-fetch@npm:^0.1.12":
|
||||
version: 0.1.12
|
||||
resolution: "@libsql/isomorphic-fetch@npm:0.1.12"
|
||||
dependencies:
|
||||
"@types/node-fetch": "npm:^2.6.11"
|
||||
node-fetch: "npm:^2.7.0"
|
||||
checksum: bcdf600cbdd0701c8f08cc74ac0598d11a8f895c03f82f3daf6f432cb8acaaa7beea9a4ecd8eedc45010e8cecf4a0e415ad4615cc9ec38689e8fda556faea9be
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/isomorphic-ws@npm:^0.1.5":
|
||||
version: 0.1.5
|
||||
resolution: "@libsql/isomorphic-ws@npm:0.1.5"
|
||||
dependencies:
|
||||
"@types/ws": "npm:^8.5.4"
|
||||
ws: "npm:^8.13.0"
|
||||
checksum: 7028bbc50dd094cdcbe56714dbf52fb646812d1b042c1973e61293f4a1cb5b81d5af670530a2463a2ba485f84f7728daf3eb75d40a7f55316ee4f7015dcc99ae
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/linux-arm64-gnu@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/linux-arm64-gnu@npm:0.2.0"
|
||||
conditions: os=linux & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/linux-arm64-musl@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/linux-arm64-musl@npm:0.2.0"
|
||||
conditions: os=linux & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/linux-x64-gnu@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/linux-x64-gnu@npm:0.2.0"
|
||||
conditions: os=linux & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/linux-x64-musl@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/linux-x64-musl@npm:0.2.0"
|
||||
conditions: os=linux & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libsql/win32-x64-msvc@npm:0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@libsql/win32-x64-msvc@npm:0.2.0"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ljharb/through@npm:^2.3.9":
|
||||
version: 2.3.12
|
||||
resolution: "@ljharb/through@npm:2.3.12"
|
||||
@ -7934,13 +7829,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@neon-rs/load@npm:^0.0.4":
|
||||
version: 0.0.4
|
||||
resolution: "@neon-rs/load@npm:0.0.4"
|
||||
checksum: 546fa4e48aa9cdb402f0a3524b591b1cac863bcfdd0217432323dba42ad37ece24b736019e6196e34326201db6b6deb410d7a983ac3c54f322619c9b6bd568bb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@nestjs/apollo@npm:^11.0.5":
|
||||
version: 11.0.6
|
||||
resolution: "@nestjs/apollo@npm:11.0.6"
|
||||
@ -16942,16 +16830,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node-fetch@npm:^2.6.11":
|
||||
version: 2.6.11
|
||||
resolution: "@types/node-fetch@npm:2.6.11"
|
||||
dependencies:
|
||||
"@types/node": "npm:*"
|
||||
form-data: "npm:^4.0.0"
|
||||
checksum: 5283d4e0bcc37a5b6d8e629aee880a4ffcfb33e089f4b903b2981b19c623972d1e64af7c3f9540ab990f0f5c89b9b5dda19c5bcb37a8e177079e93683bfd2f49
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node-forge@npm:^1.3.0":
|
||||
version: 1.3.11
|
||||
resolution: "@types/node-forge@npm:1.3.11"
|
||||
@ -17492,7 +17370,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.4, @types/ws@npm:^8.5.5":
|
||||
"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5":
|
||||
version: 8.5.10
|
||||
resolution: "@types/ws@npm:8.5.10"
|
||||
dependencies:
|
||||
@ -24219,13 +24097,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"data-uri-to-buffer@npm:^4.0.0":
|
||||
version: 4.0.1
|
||||
resolution: "data-uri-to-buffer@npm:4.0.1"
|
||||
checksum: 20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"data-urls@npm:^3.0.2":
|
||||
version: 3.0.2
|
||||
resolution: "data-urls@npm:3.0.2"
|
||||
@ -24702,13 +24573,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-libc@npm:2.0.2, detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.2":
|
||||
version: 2.0.2
|
||||
resolution: "detect-libc@npm:2.0.2"
|
||||
checksum: a9f4ffcd2701525c589617d98afe5a5d0676c8ea82bcc4ed6f3747241b79f781d36437c59a5e855254c864d36a3e9f8276568b6b531c28d6e53b093a15703f11
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-libc@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "detect-libc@npm:1.0.3"
|
||||
@ -24718,6 +24582,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.2":
|
||||
version: 2.0.2
|
||||
resolution: "detect-libc@npm:2.0.2"
|
||||
checksum: a9f4ffcd2701525c589617d98afe5a5d0676c8ea82bcc4ed6f3747241b79f781d36437c59a5e855254c864d36a3e9f8276568b6b531c28d6e53b093a15703f11
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"detect-newline@npm:^3.0.0":
|
||||
version: 3.1.0
|
||||
resolution: "detect-newline@npm:3.1.0"
|
||||
@ -27380,16 +27251,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
|
||||
version: 3.2.0
|
||||
resolution: "fetch-blob@npm:3.2.0"
|
||||
dependencies:
|
||||
node-domexception: "npm:^1.0.0"
|
||||
web-streams-polyfill: "npm:^3.0.3"
|
||||
checksum: 60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fetch-retry@npm:^5.0.2":
|
||||
version: 5.0.6
|
||||
resolution: "fetch-retry@npm:5.0.6"
|
||||
@ -27965,15 +27826,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"formdata-polyfill@npm:^4.0.10":
|
||||
version: 4.0.10
|
||||
resolution: "formdata-polyfill@npm:4.0.10"
|
||||
dependencies:
|
||||
fetch-blob: "npm:^3.1.2"
|
||||
checksum: 5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"formidable@npm:^2.1.2":
|
||||
version: 2.1.2
|
||||
resolution: "formidable@npm:2.1.2"
|
||||
@ -32751,13 +32603,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"js-base64@npm:^3.7.5":
|
||||
version: 3.7.6
|
||||
resolution: "js-base64@npm:3.7.6"
|
||||
checksum: d9ae30a04e28e5814c6c606d08ecf9aac16daea0fcbc549e3b971042a4d4ecc7cf60ea96e1c9e8a463ca75fcbfd13613b87bddb3a8fe92801271e7eedcd3e8d3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"js-beautify@npm:^1.6.12":
|
||||
version: 1.14.11
|
||||
resolution: "js-beautify@npm:1.14.11"
|
||||
@ -33630,38 +33475,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"libsql@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "libsql@npm:0.2.0"
|
||||
dependencies:
|
||||
"@libsql/darwin-arm64": "npm:0.2.0"
|
||||
"@libsql/darwin-x64": "npm:0.2.0"
|
||||
"@libsql/linux-arm64-gnu": "npm:0.2.0"
|
||||
"@libsql/linux-arm64-musl": "npm:0.2.0"
|
||||
"@libsql/linux-x64-gnu": "npm:0.2.0"
|
||||
"@libsql/linux-x64-musl": "npm:0.2.0"
|
||||
"@libsql/win32-x64-msvc": "npm:0.2.0"
|
||||
"@neon-rs/load": "npm:^0.0.4"
|
||||
detect-libc: "npm:2.0.2"
|
||||
dependenciesMeta:
|
||||
"@libsql/darwin-arm64":
|
||||
optional: true
|
||||
"@libsql/darwin-x64":
|
||||
optional: true
|
||||
"@libsql/linux-arm64-gnu":
|
||||
optional: true
|
||||
"@libsql/linux-arm64-musl":
|
||||
optional: true
|
||||
"@libsql/linux-x64-gnu":
|
||||
optional: true
|
||||
"@libsql/linux-x64-musl":
|
||||
optional: true
|
||||
"@libsql/win32-x64-msvc":
|
||||
optional: true
|
||||
conditions: (os=darwin | os=linux | os=win32) & (cpu=x64 | cpu=arm64)
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lilconfig@npm:^2.0.3":
|
||||
version: 2.1.0
|
||||
resolution: "lilconfig@npm:2.1.0"
|
||||
@ -37435,7 +37248,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-domexception@npm:1.0.0, node-domexception@npm:^1.0.0":
|
||||
"node-domexception@npm:1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "node-domexception@npm:1.0.0"
|
||||
checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b
|
||||
@ -37484,7 +37297,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-fetch@npm:^2, node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0":
|
||||
"node-fetch@npm:^2, node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9":
|
||||
version: 2.7.0
|
||||
resolution: "node-fetch@npm:2.7.0"
|
||||
dependencies:
|
||||
@ -37498,17 +37311,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-fetch@npm:^3.3.2":
|
||||
version: 3.3.2
|
||||
resolution: "node-fetch@npm:3.3.2"
|
||||
dependencies:
|
||||
data-uri-to-buffer: "npm:^4.0.0"
|
||||
fetch-blob: "npm:^3.1.4"
|
||||
formdata-polyfill: "npm:^4.0.10"
|
||||
checksum: f3d5e56190562221398c9f5750198b34cf6113aa304e34ee97c94fd300ec578b25b2c2906edba922050fce983338fde0d5d34fcb0fc3336ade5bd0e429ad7538
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-forge@npm:^1, node-forge@npm:^1.3.1":
|
||||
version: 1.3.1
|
||||
resolution: "node-forge@npm:1.3.1"
|
||||
@ -46570,7 +46372,6 @@ __metadata:
|
||||
"@hello-pangea/dnd": "npm:^16.2.0"
|
||||
"@hookform/resolvers": "npm:^3.1.1"
|
||||
"@jsdevtools/rehype-toc": "npm:^3.0.2"
|
||||
"@libsql/client": "npm:^0.4.3"
|
||||
"@mdx-js/react": "npm:^3.0.0"
|
||||
"@nestjs/apollo": "npm:^11.0.5"
|
||||
"@nestjs/axios": "npm:^3.0.1"
|
||||
@ -48743,13 +48544,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"web-streams-polyfill@npm:^3.0.3":
|
||||
version: 3.3.2
|
||||
resolution: "web-streams-polyfill@npm:3.3.2"
|
||||
checksum: 623c2fced2ef77d5afdbc43acef64b8af609a32125b691eae286d534a36004c8a71030f0e78068516774a97fd90dbfb3726b10fd569a2d158e60c83a539c489e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"web-streams-polyfill@npm:^3.2.1":
|
||||
version: 3.2.1
|
||||
resolution: "web-streams-polyfill@npm:3.2.1"
|
||||
|
Loading…
Reference in New Issue
Block a user