@monodog/backend 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.eslintrc.cjs +15 -0
  2. package/dist/cli.js +98 -0
  3. package/dist/gitService.js +240 -0
  4. package/dist/index.js +1185 -0
  5. package/dist/utils/helpers.js +198 -0
  6. package/package.json +41 -0
  7. package/prisma/migrations/20251017041048_init/migration.sql +19 -0
  8. package/prisma/migrations/20251017083007_add_package/migration.sql +21 -0
  9. package/prisma/migrations/20251021083705_alter_package/migration.sql +37 -0
  10. package/prisma/migrations/20251022085155_test/migration.sql +2 -0
  11. package/prisma/migrations/20251022160841_/migration.sql +35 -0
  12. package/prisma/migrations/20251023130158_rename_column_name/migration.sql +34 -0
  13. package/prisma/migrations/20251023174837_/migration.sql +34 -0
  14. package/prisma/migrations/20251023175830_uodate_schema/migration.sql +32 -0
  15. package/prisma/migrations/20251024103700_add_dependency_info/migration.sql +13 -0
  16. package/prisma/migrations/20251025192150_add_dependency_info/migration.sql +19 -0
  17. package/prisma/migrations/20251025192342_add_dependency_info/migration.sql +40 -0
  18. package/prisma/migrations/20251025204613_add_dependency_info/migration.sql +8 -0
  19. package/prisma/migrations/20251026071336_add_dependency_info/migration.sql +25 -0
  20. package/prisma/migrations/20251027062626_add_commit/migration.sql +10 -0
  21. package/prisma/migrations/20251027062748_add_commit/migration.sql +23 -0
  22. package/prisma/migrations/20251027092741_add_commit/migration.sql +17 -0
  23. package/prisma/migrations/20251027112736_add_health_status/migration.sql +16 -0
  24. package/prisma/migrations/20251027140546_init_packages/migration.sql +16 -0
  25. package/prisma/migrations/20251029073436_added_package_heath_key/migration.sql +34 -0
  26. package/prisma/migrations/20251029073830_added_package_health_key/migration.sql +49 -0
  27. package/prisma/migrations/migration_lock.toml +3 -0
  28. package/prisma/schema.prisma +130 -0
  29. package/src/cli.ts +68 -0
  30. package/src/gitService.ts +274 -0
  31. package/src/index.ts +1366 -0
  32. package/src/utils/helpers.js +199 -0
  33. package/src/utils/helpers.js.map +1 -0
  34. package/src/utils/helpers.ts +223 -0
  35. package/tsconfig.json +15 -0
  36. package/tsconfig.o.json +29 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getCommits = getCommits;
7
+ exports.storePackage = storePackage;
8
+ exports.storeCommits = storeCommits;
9
+ exports.getPackageDependenciesInfo = getPackageDependenciesInfo;
10
+ exports.storeDependencies = storeDependencies;
11
+ const dotenv_1 = __importDefault(require("dotenv"));
12
+ const path_1 = __importDefault(require("path"));
13
+ dotenv_1.default.config({ path: path_1.default.resolve(__dirname, '../.env') });
14
+ const client_1 = require("@prisma/client");
15
+ const prisma = new client_1.PrismaClient();
16
+ const API_BASE = `http://localhost:4000/api`;
17
+ async function getCommits(path) {
18
+ const res = await fetch(API_BASE + `/commits/` + encodeURIComponent(path));
19
+ if (!res.ok)
20
+ throw new Error('Failed to fetch commits');
21
+ return await res.json();
22
+ }
23
+ async function storeCommits(packageName, commits) {
24
+ console.log('💾 Storing commits for:' + packageName);
25
+ // Create or update dependencies
26
+ for (const commit of commits) {
27
+ try {
28
+ await prisma.commit.upsert({
29
+ where: {
30
+ hash: commit.hash,
31
+ },
32
+ update: {
33
+ message: commit.message,
34
+ author: commit.author,
35
+ date: commit.date,
36
+ type: commit.type,
37
+ },
38
+ create: {
39
+ hash: commit.hash,
40
+ message: commit.message,
41
+ author: commit.author,
42
+ date: commit.date,
43
+ type: commit.type,
44
+ packageName: packageName,
45
+ },
46
+ });
47
+ }
48
+ catch (e) {
49
+ if (e instanceof client_1.Prisma.PrismaClientKnownRequestError &&
50
+ e.code === 'P2002') {
51
+ // Handle unique constraint violation (e.g., commit already exists)
52
+ console.warn(`Skipping commit: ${commit.hash} (Depenndency already exists)`);
53
+ }
54
+ else {
55
+ // Handle any other unexpected errors
56
+ console.error(`Failed to store commit: ${commit.hash}`, e);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Store packages in database
63
+ */
64
+ async function storePackage(pkg) {
65
+ try {
66
+ // Create or update package
67
+ await prisma.package.upsert({
68
+ where: { name: pkg.name },
69
+ update: {
70
+ version: pkg.version,
71
+ type: pkg.type,
72
+ path: pkg.path,
73
+ description: pkg.description,
74
+ license: pkg.license,
75
+ repository: JSON.stringify(pkg.repository),
76
+ scripts: JSON.stringify(pkg.scripts),
77
+ lastUpdated: new Date(),
78
+ },
79
+ create: {
80
+ // Timestamps
81
+ createdAt: new Date(),
82
+ lastUpdated: new Date(),
83
+ // Key Metrics and Relationships
84
+ dependencies: JSON.stringify(pkg.dependencies), // The total number of direct dependencies (12 in your example)
85
+ // Manual Serialization Required: Stores a JSON array string of maintainers, e.g., '["team-frontend"]'
86
+ maintainers: pkg.maintainers.join(','),
87
+ // Manual Serialization Required: Stores a JSON array string of tags, e.g., '["core", "ui"]'
88
+ // Manual Serialization Required: Stores the scripts object as a JSON string
89
+ // Example: '{"dev": "vite", "build": "tsc && vite build"}'
90
+ scripts: JSON.stringify(pkg.scripts),
91
+ // Dependency Lists (Manual Serialization Required)
92
+ // Stores a JSON array string of dependencies.
93
+ // dependenciesList: JSON.stringify(pkg.dependenciesList),
94
+ devDependencies: JSON.stringify(pkg.devDependencies),
95
+ peerDependencies: JSON.stringify(pkg.peerDependencies),
96
+ name: pkg.name,
97
+ version: pkg.version,
98
+ type: pkg.type,
99
+ path: pkg.path,
100
+ description: pkg.description ?? '',
101
+ license: pkg.license ?? '',
102
+ repository: JSON.stringify(pkg.repository),
103
+ status: '',
104
+ },
105
+ });
106
+ const commits = await getCommits(pkg.path ?? '');
107
+ if (commits.length) {
108
+ await storeCommits(pkg.name, commits);
109
+ }
110
+ const dependenciesInfo = getPackageDependenciesInfo(pkg);
111
+ if (dependenciesInfo.length) {
112
+ await storeDependencies(pkg.name, dependenciesInfo);
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.warn(`⚠️ Failed to store report for ${pkg.name}:`, error);
117
+ }
118
+ }
119
+ /**
120
+ * Get package dependencies
121
+ */
122
+ function getPackageDependenciesInfo(pkg) {
123
+ const allDeps = [];
124
+ Object.keys(pkg.dependencies || {}).forEach(depName => {
125
+ allDeps.push({
126
+ name: depName,
127
+ version: pkg.dependencies[depName],
128
+ type: 'dependency',
129
+ latest: '',
130
+ outdated: false,
131
+ });
132
+ });
133
+ Object.keys(pkg.devDependencies || {}).forEach(depName => {
134
+ allDeps.push({
135
+ name: depName,
136
+ version: pkg.devDependencies[depName],
137
+ type: 'devDependency',
138
+ latest: '',
139
+ outdated: false,
140
+ });
141
+ });
142
+ Object.keys(pkg.peerDependencies || {}).forEach(depName => {
143
+ allDeps.push({
144
+ name: depName,
145
+ version: pkg.peerDependencies[depName],
146
+ type: 'peerDependency',
147
+ latest: '',
148
+ outdated: false,
149
+ });
150
+ });
151
+ return allDeps;
152
+ }
153
+ /**
154
+ * Store dependencies in database
155
+ */
156
+ async function storeDependencies(packageName, dependencies) {
157
+ console.log('💾 Storing Dependencies for:' + packageName);
158
+ // Create or update dependencies
159
+ for (const dep of dependencies) {
160
+ try {
161
+ await prisma.dependencyInfo.upsert({
162
+ where: {
163
+ name_packageName: {
164
+ // This refers to the composite unique constraint
165
+ name: dep.name,
166
+ packageName,
167
+ },
168
+ },
169
+ update: {
170
+ version: dep.version,
171
+ type: dep.type,
172
+ latest: dep.latest,
173
+ outdated: dep.outdated,
174
+ },
175
+ create: {
176
+ name: dep.name,
177
+ version: dep.version,
178
+ type: dep.type,
179
+ latest: dep.latest,
180
+ outdated: dep.outdated,
181
+ packageName: packageName,
182
+ },
183
+ });
184
+ console.log('💾 Dependencies stored in database:' + dep.name);
185
+ }
186
+ catch (e) {
187
+ if (e instanceof client_1.Prisma.PrismaClientKnownRequestError &&
188
+ e.code === 'P2002') {
189
+ // Handle unique constraint violation (e.g., depedency already exists)
190
+ console.warn(`Skipping dependency: ${dep.name} (Depenndency already exists)`);
191
+ }
192
+ else {
193
+ // Handle any other unexpected errors
194
+ console.error(`Failed to store dependency: ${dep.name}`, e);
195
+ }
196
+ }
197
+ }
198
+ }
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@monodog/backend",
3
+ "version": "1.0.0",
4
+ "description": "Backend API server for monodog monorepo dashboard",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "license": "MIT",
8
+ "bin": {
9
+ "monodog-cli": "dist/cli.js"
10
+ },
11
+ "scripts": {
12
+ "dev": "tsx watch src/index.ts",
13
+ "start": "tsx index.ts",
14
+ "prepublishOnly": "pnpm run build",
15
+ "build": "rm -rf dist && tsc -p tsconfig.json",
16
+ "prestart": "npm run build",
17
+ "cli": "pnpm run build && node dist/cli.js",
18
+ "test": "jest --coverage",
19
+ "clean": "rm -rf dist node_modules/.cache",
20
+ "test:coverage": "jest --coverage",
21
+ "lint": "eslint .",
22
+ "lint:fix": "eslint . --fix"
23
+ },
24
+ "dependencies": {
25
+ "@prisma/client": "^5.7.0",
26
+ "body-parser": "^1.20.2",
27
+ "cors": "^2.8.5",
28
+ "express": "^4.18.2",
29
+ "@monodog/ci-status": "workspace:*",
30
+ "@monodog/monorepo-scanner": "workspace:*",
31
+ "@monodog/utils": "workspace:*"
32
+ },
33
+ "devDependencies": {
34
+ "@types/cors": "^2.8.17",
35
+ "@types/express": "^4.17.21",
36
+ "@types/node": "^20.10.0",
37
+ "prisma": "^5.22.0",
38
+ "tsx": "^4.6.0",
39
+ "typescript": "^5.3.0"
40
+ }
41
+ }
@@ -0,0 +1,19 @@
1
+ -- CreateTable
2
+ CREATE TABLE "User" (
3
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
4
+ "name" TEXT NOT NULL,
5
+ "email" TEXT NOT NULL
6
+ );
7
+
8
+ -- CreateTable
9
+ CREATE TABLE "Post" (
10
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
11
+ "title" TEXT NOT NULL,
12
+ "content" TEXT,
13
+ "published" BOOLEAN NOT NULL DEFAULT false,
14
+ "authorId" INTEGER NOT NULL,
15
+ CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
16
+ );
17
+
18
+ -- CreateIndex
19
+ CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
@@ -0,0 +1,21 @@
1
+ -- CreateTable
2
+ CREATE TABLE "Package" (
3
+ "name" TEXT NOT NULL PRIMARY KEY,
4
+ "version" TEXT NOT NULL,
5
+ "type" TEXT NOT NULL,
6
+ "status" TEXT NOT NULL,
7
+ "lastUpdated" DATETIME NOT NULL,
8
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
9
+ "updatedAt" DATETIME NOT NULL,
10
+ "dependenciesCount" INTEGER NOT NULL,
11
+ "maintainers" TEXT NOT NULL,
12
+ "tags" TEXT NOT NULL,
13
+ "path" TEXT NOT NULL,
14
+ "private" BOOLEAN NOT NULL,
15
+ "description" TEXT NOT NULL,
16
+ "scripts" TEXT,
17
+ "dependenciesList" TEXT NOT NULL
18
+ );
19
+
20
+ -- CreateIndex
21
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
@@ -0,0 +1,37 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `dependenciesCount` on the `Package` table. All the data in the column will be lost.
5
+ - You are about to drop the column `lastUpdated` on the `Package` table. All the data in the column will be lost.
6
+ - You are about to drop the column `private` on the `Package` table. All the data in the column will be lost.
7
+ - You are about to drop the column `tags` on the `Package` table. All the data in the column will be lost.
8
+ - Added the required column `dependencies` to the `Package` table without a default value. This is not possible if the table is not empty.
9
+ - Added the required column `license` to the `Package` table without a default value. This is not possible if the table is not empty.
10
+
11
+ */
12
+ -- RedefineTables
13
+ PRAGMA defer_foreign_keys=ON;
14
+ PRAGMA foreign_keys=OFF;
15
+ CREATE TABLE "new_Package" (
16
+ "name" TEXT NOT NULL PRIMARY KEY,
17
+ "version" TEXT NOT NULL,
18
+ "type" TEXT NOT NULL,
19
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
20
+ "updatedAt" DATETIME NOT NULL,
21
+ "dependencies" TEXT NOT NULL,
22
+ "maintainers" TEXT NOT NULL,
23
+ "path" TEXT NOT NULL,
24
+ "description" TEXT NOT NULL,
25
+ "license" TEXT NOT NULL,
26
+ "repository" TEXT,
27
+ "scripts" TEXT,
28
+ "status" TEXT NOT NULL DEFAULT 'healthy',
29
+ "dependenciesList" TEXT,
30
+ "devDependencies" TEXT
31
+ );
32
+ INSERT INTO "new_Package" ("createdAt", "dependenciesList", "description", "maintainers", "name", "path", "scripts", "status", "type", "updatedAt", "version") SELECT "createdAt", "dependenciesList", "description", "maintainers", "name", "path", "scripts", "status", "type", "updatedAt", "version" FROM "Package";
33
+ DROP TABLE "Package";
34
+ ALTER TABLE "new_Package" RENAME TO "Package";
35
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
36
+ PRAGMA foreign_keys=ON;
37
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Package" ADD COLUMN "peerDependencies" TEXT;
@@ -0,0 +1,35 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The primary key for the `Package` table will be changed. If it partially fails, the table could be left without primary key constraint.
5
+ - Added the required column `id` to the `Package` table without a default value. This is not possible if the table is not empty.
6
+
7
+ */
8
+ -- RedefineTables
9
+ PRAGMA defer_foreign_keys=ON;
10
+ PRAGMA foreign_keys=OFF;
11
+ CREATE TABLE "new_Package" (
12
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
13
+ "name" TEXT NOT NULL,
14
+ "version" TEXT NOT NULL,
15
+ "type" TEXT NOT NULL,
16
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ "updatedAt" DATETIME NOT NULL,
18
+ "dependencies" TEXT NOT NULL,
19
+ "maintainers" TEXT NOT NULL,
20
+ "path" TEXT NOT NULL,
21
+ "description" TEXT NOT NULL,
22
+ "license" TEXT NOT NULL,
23
+ "repository" TEXT,
24
+ "scripts" TEXT,
25
+ "status" TEXT NOT NULL DEFAULT 'healthy',
26
+ "dependenciesList" TEXT,
27
+ "devDependencies" TEXT,
28
+ "peerDependencies" TEXT
29
+ );
30
+ INSERT INTO "new_Package" ("createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "updatedAt", "version") SELECT "createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "updatedAt", "version" FROM "Package";
31
+ DROP TABLE "Package";
32
+ ALTER TABLE "new_Package" RENAME TO "Package";
33
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
34
+ PRAGMA foreign_keys=ON;
35
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,34 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `updatedAt` on the `Package` table. All the data in the column will be lost.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_Package" (
11
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
12
+ "name" TEXT NOT NULL,
13
+ "version" TEXT NOT NULL,
14
+ "type" TEXT NOT NULL,
15
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
16
+ "lastUpdated" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ "dependencies" TEXT NOT NULL,
18
+ "maintainers" TEXT NOT NULL,
19
+ "path" TEXT NOT NULL,
20
+ "description" TEXT NOT NULL,
21
+ "license" TEXT NOT NULL,
22
+ "repository" TEXT,
23
+ "scripts" TEXT,
24
+ "status" TEXT NOT NULL DEFAULT 'healthy',
25
+ "dependenciesList" TEXT,
26
+ "devDependencies" TEXT,
27
+ "peerDependencies" TEXT
28
+ );
29
+ INSERT INTO "new_Package" ("createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "id", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version") SELECT "createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "id", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version" FROM "Package";
30
+ DROP TABLE "Package";
31
+ ALTER TABLE "new_Package" RENAME TO "Package";
32
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
33
+ PRAGMA foreign_keys=ON;
34
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,34 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The primary key for the `Package` table will be changed. If it partially fails, the table could be left without primary key constraint.
5
+ - You are about to drop the column `id` on the `Package` table. All the data in the column will be lost.
6
+
7
+ */
8
+ -- RedefineTables
9
+ PRAGMA defer_foreign_keys=ON;
10
+ PRAGMA foreign_keys=OFF;
11
+ CREATE TABLE "new_Package" (
12
+ "name" TEXT NOT NULL PRIMARY KEY,
13
+ "version" TEXT NOT NULL,
14
+ "type" TEXT NOT NULL,
15
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
16
+ "lastUpdated" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ "dependencies" TEXT NOT NULL,
18
+ "maintainers" TEXT NOT NULL,
19
+ "path" TEXT NOT NULL,
20
+ "description" TEXT NOT NULL,
21
+ "license" TEXT NOT NULL,
22
+ "repository" TEXT,
23
+ "scripts" TEXT,
24
+ "status" TEXT NOT NULL DEFAULT 'healthy',
25
+ "dependenciesList" TEXT,
26
+ "devDependencies" TEXT,
27
+ "peerDependencies" TEXT
28
+ );
29
+ INSERT INTO "new_Package" ("createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version") SELECT "createdAt", "dependencies", "dependenciesList", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version" FROM "Package";
30
+ DROP TABLE "Package";
31
+ ALTER TABLE "new_Package" RENAME TO "Package";
32
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
33
+ PRAGMA foreign_keys=ON;
34
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,32 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `dependenciesList` on the `Package` table. All the data in the column will be lost.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_Package" (
11
+ "name" TEXT NOT NULL PRIMARY KEY,
12
+ "version" TEXT NOT NULL,
13
+ "type" TEXT NOT NULL,
14
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "lastUpdated" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
16
+ "dependencies" TEXT,
17
+ "maintainers" TEXT NOT NULL,
18
+ "path" TEXT NOT NULL,
19
+ "description" TEXT NOT NULL,
20
+ "license" TEXT NOT NULL,
21
+ "repository" TEXT,
22
+ "scripts" TEXT,
23
+ "status" TEXT NOT NULL DEFAULT 'healthy',
24
+ "devDependencies" TEXT,
25
+ "peerDependencies" TEXT
26
+ );
27
+ INSERT INTO "new_Package" ("createdAt", "dependencies", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version") SELECT "createdAt", "dependencies", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version" FROM "Package";
28
+ DROP TABLE "Package";
29
+ ALTER TABLE "new_Package" RENAME TO "Package";
30
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
31
+ PRAGMA foreign_keys=ON;
32
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,13 @@
1
+ -- CreateTable
2
+ CREATE TABLE "DependencyInfo" (
3
+ "name" TEXT NOT NULL PRIMARY KEY,
4
+ "version" TEXT NOT NULL,
5
+ "type" TEXT NOT NULL DEFAULT 'dependency',
6
+ "latest" TEXT,
7
+ "outdated" BOOLEAN NOT NULL DEFAULT false,
8
+ "packageName" TEXT NOT NULL,
9
+ CONSTRAINT "DependencyInfo_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
10
+ );
11
+
12
+ -- CreateIndex
13
+ CREATE UNIQUE INDEX "DependencyInfo_name_key" ON "DependencyInfo"("name");
@@ -0,0 +1,19 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_DependencyInfo" (
5
+ "name" TEXT NOT NULL PRIMARY KEY,
6
+ "version" TEXT NOT NULL,
7
+ "type" TEXT NOT NULL DEFAULT 'development',
8
+ "status" TEXT NOT NULL DEFAULT 'up-to-date',
9
+ "latest" TEXT,
10
+ "outdated" BOOLEAN NOT NULL DEFAULT false,
11
+ "packageName" TEXT NOT NULL,
12
+ CONSTRAINT "DependencyInfo_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
13
+ );
14
+ INSERT INTO "new_DependencyInfo" ("latest", "name", "outdated", "packageName", "type", "version") SELECT "latest", "name", "outdated", "packageName", "type", "version" FROM "DependencyInfo";
15
+ DROP TABLE "DependencyInfo";
16
+ ALTER TABLE "new_DependencyInfo" RENAME TO "DependencyInfo";
17
+ CREATE UNIQUE INDEX "DependencyInfo_name_key" ON "DependencyInfo"("name");
18
+ PRAGMA foreign_keys=ON;
19
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,40 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_DependencyInfo" (
5
+ "name" TEXT NOT NULL PRIMARY KEY,
6
+ "version" TEXT NOT NULL,
7
+ "type" TEXT NOT NULL DEFAULT '',
8
+ "status" TEXT NOT NULL DEFAULT '',
9
+ "latest" TEXT,
10
+ "outdated" BOOLEAN NOT NULL DEFAULT false,
11
+ "packageName" TEXT NOT NULL,
12
+ CONSTRAINT "DependencyInfo_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
13
+ );
14
+ INSERT INTO "new_DependencyInfo" ("latest", "name", "outdated", "packageName", "status", "type", "version") SELECT "latest", "name", "outdated", "packageName", "status", "type", "version" FROM "DependencyInfo";
15
+ DROP TABLE "DependencyInfo";
16
+ ALTER TABLE "new_DependencyInfo" RENAME TO "DependencyInfo";
17
+ CREATE UNIQUE INDEX "DependencyInfo_name_key" ON "DependencyInfo"("name");
18
+ CREATE TABLE "new_Package" (
19
+ "name" TEXT NOT NULL PRIMARY KEY,
20
+ "version" TEXT NOT NULL,
21
+ "type" TEXT NOT NULL,
22
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
23
+ "lastUpdated" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
24
+ "dependencies" TEXT,
25
+ "maintainers" TEXT NOT NULL,
26
+ "path" TEXT NOT NULL,
27
+ "description" TEXT NOT NULL,
28
+ "license" TEXT NOT NULL,
29
+ "repository" TEXT,
30
+ "scripts" TEXT,
31
+ "status" TEXT NOT NULL DEFAULT '',
32
+ "devDependencies" TEXT,
33
+ "peerDependencies" TEXT
34
+ );
35
+ INSERT INTO "new_Package" ("createdAt", "dependencies", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version") SELECT "createdAt", "dependencies", "description", "devDependencies", "lastUpdated", "license", "maintainers", "name", "path", "peerDependencies", "repository", "scripts", "status", "type", "version" FROM "Package";
36
+ DROP TABLE "Package";
37
+ ALTER TABLE "new_Package" RENAME TO "Package";
38
+ CREATE UNIQUE INDEX "Package_name_key" ON "Package"("name");
39
+ PRAGMA foreign_keys=ON;
40
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,8 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - A unique constraint covering the columns `[name,packageName]` on the table `DependencyInfo` will be added. If there are existing duplicate values, this will fail.
5
+
6
+ */
7
+ -- CreateIndex
8
+ CREATE UNIQUE INDEX "DependencyInfo_name_packageName_key" ON "DependencyInfo"("name", "packageName");
@@ -0,0 +1,25 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - The primary key for the `DependencyInfo` table will be changed. If it partially fails, the table could be left without primary key constraint.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_DependencyInfo" (
11
+ "name" TEXT NOT NULL,
12
+ "version" TEXT NOT NULL,
13
+ "type" TEXT NOT NULL DEFAULT '',
14
+ "status" TEXT NOT NULL DEFAULT '',
15
+ "latest" TEXT,
16
+ "outdated" BOOLEAN NOT NULL DEFAULT false,
17
+ "packageName" TEXT NOT NULL,
18
+ CONSTRAINT "DependencyInfo_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
19
+ );
20
+ INSERT INTO "new_DependencyInfo" ("latest", "name", "outdated", "packageName", "status", "type", "version") SELECT "latest", "name", "outdated", "packageName", "status", "type", "version" FROM "DependencyInfo";
21
+ DROP TABLE "DependencyInfo";
22
+ ALTER TABLE "new_DependencyInfo" RENAME TO "DependencyInfo";
23
+ CREATE UNIQUE INDEX "DependencyInfo_name_packageName_key" ON "DependencyInfo"("name", "packageName");
24
+ PRAGMA foreign_keys=ON;
25
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,10 @@
1
+ -- CreateTable
2
+ CREATE TABLE "Commit" (
3
+ "hash" TEXT NOT NULL PRIMARY KEY,
4
+ "message" TEXT NOT NULL,
5
+ "author" TEXT NOT NULL,
6
+ "date" TEXT NOT NULL,
7
+ "type" TEXT NOT NULL,
8
+ "packageName" TEXT NOT NULL,
9
+ CONSTRAINT "Commit_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
10
+ );
@@ -0,0 +1,23 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to alter the column `date` on the `Commit` table. The data in that column could be lost. The data in that column will be cast from `String` to `DateTime`.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_Commit" (
11
+ "hash" TEXT NOT NULL PRIMARY KEY,
12
+ "message" TEXT NOT NULL,
13
+ "author" TEXT NOT NULL,
14
+ "date" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "type" TEXT NOT NULL,
16
+ "packageName" TEXT NOT NULL,
17
+ CONSTRAINT "Commit_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
18
+ );
19
+ INSERT INTO "new_Commit" ("author", "date", "hash", "message", "packageName", "type") SELECT "author", "date", "hash", "message", "packageName", "type" FROM "Commit";
20
+ DROP TABLE "Commit";
21
+ ALTER TABLE "new_Commit" RENAME TO "Commit";
22
+ PRAGMA foreign_keys=ON;
23
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,17 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_Commit" (
5
+ "hash" TEXT NOT NULL PRIMARY KEY,
6
+ "message" TEXT NOT NULL,
7
+ "author" TEXT NOT NULL,
8
+ "date" DATETIME,
9
+ "type" TEXT NOT NULL,
10
+ "packageName" TEXT NOT NULL,
11
+ CONSTRAINT "Commit_packageName_fkey" FOREIGN KEY ("packageName") REFERENCES "Package" ("name") ON DELETE RESTRICT ON UPDATE CASCADE
12
+ );
13
+ INSERT INTO "new_Commit" ("author", "date", "hash", "message", "packageName", "type") SELECT "author", "date", "hash", "message", "packageName", "type" FROM "Commit";
14
+ DROP TABLE "Commit";
15
+ ALTER TABLE "new_Commit" RENAME TO "Commit";
16
+ PRAGMA foreign_keys=ON;
17
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,16 @@
1
+ -- CreateTable
2
+ CREATE TABLE "health_status" (
3
+ "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
4
+ "packageName" TEXT NOT NULL,
5
+ "overallScore" REAL NOT NULL,
6
+ "buildStatus" TEXT NOT NULL,
7
+ "testCoverage" REAL NOT NULL,
8
+ "lintStatus" TEXT NOT NULL,
9
+ "security" TEXT NOT NULL,
10
+ "dependencies" TEXT NOT NULL,
11
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ "updatedAt" DATETIME NOT NULL
13
+ );
14
+
15
+ -- CreateIndex
16
+ CREATE UNIQUE INDEX "health_status_packageName_key" ON "health_status"("packageName");