streamby-core 0.15.0 → 0.16.1
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.
- package/dist/config.d.ts +2 -2
- package/dist/config.js +2 -2
- package/dist/middleware/createRouter.js +3 -10
- package/dist/mongoose_models/initExportModel.d.ts +61 -0
- package/dist/mongoose_models/initExportModel.js +19 -0
- package/dist/mongoose_models/initProjectModel.d.ts +2503 -0
- package/dist/mongoose_models/initProjectModel.js +34 -0
- package/dist/providers/createDatabaseProvider.d.ts +2 -72
- package/dist/providers/createDatabaseProvider.js +12 -34
- package/dist/providers/createMongooseProvider.d.ts +8 -0
- package/dist/providers/createMongooseProvider.js +33 -0
- package/dist/providers/createPrismaProvider.d.ts +12 -6
- package/dist/providers/createPrismaProvider.js +13 -2
- package/dist/providers/mongooseExportProvider.d.ts +3 -0
- package/dist/providers/mongooseExportProvider.js +13 -0
- package/dist/providers/mongooseProjectProvider.d.ts +3 -0
- package/dist/providers/mongooseProjectProvider.js +114 -0
- package/dist/providers/prismaExportCollectionProvider.d.ts +3 -3
- package/dist/providers/prismaProjectProvider.js +3 -2
- package/dist/services/auth.js +1 -1
- package/dist/types/index.d.ts +12 -1
- package/package.json +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
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.initProjectModel = initProjectModel;
|
|
7
|
+
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
+
function initProjectModel(connection) {
|
|
9
|
+
const folderNodeSchema = new mongoose_1.default.Schema({
|
|
10
|
+
id: String,
|
|
11
|
+
name: String,
|
|
12
|
+
children: [Object],
|
|
13
|
+
}, { _id: false });
|
|
14
|
+
const memberSchema = new mongoose_1.default.Schema({
|
|
15
|
+
userId: { type: String, required: true },
|
|
16
|
+
role: { type: String, enum: ['viewer', 'editor', 'admin'], default: 'viewer' },
|
|
17
|
+
archived: { type: Boolean, default: false }
|
|
18
|
+
}, { _id: false });
|
|
19
|
+
const projectSchema = new mongoose_1.default.Schema({
|
|
20
|
+
dbType: { type: String, required: true },
|
|
21
|
+
name: { type: String, required: true },
|
|
22
|
+
description: { type: String },
|
|
23
|
+
image: { type: String },
|
|
24
|
+
folders: [folderNodeSchema],
|
|
25
|
+
allowUpload: { type: Boolean, default: true },
|
|
26
|
+
allowSharing: { type: Boolean, default: false },
|
|
27
|
+
members: [memberSchema],
|
|
28
|
+
exports: [{ type: mongoose_1.default.Schema.Types.ObjectId, ref: 'Export' }]
|
|
29
|
+
}, {
|
|
30
|
+
timestamps: true,
|
|
31
|
+
collection: 'streamby_projects'
|
|
32
|
+
});
|
|
33
|
+
return connection.model('Project', projectSchema);
|
|
34
|
+
}
|
|
@@ -1,72 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { PrismaClient } from '@prisma/client';
|
|
4
|
-
export declare function createDatabaseProvider(databases: DatabaseCredential[], adapter: StorageAdapter): {
|
|
5
|
-
exportProvider: import("../types").ExportProvider | undefined;
|
|
6
|
-
projectProviders: {
|
|
7
|
-
nosql: import("../types").ProjectProvider | undefined;
|
|
8
|
-
sql: import("../types").ProjectProvider | undefined;
|
|
9
|
-
};
|
|
10
|
-
exportCollectionProvider: {
|
|
11
|
-
getById(id: string): Promise<({
|
|
12
|
-
entries: {
|
|
13
|
-
id: string;
|
|
14
|
-
exportCollectionId: string;
|
|
15
|
-
key: string;
|
|
16
|
-
value: string;
|
|
17
|
-
}[];
|
|
18
|
-
} & {
|
|
19
|
-
id: string;
|
|
20
|
-
name: string;
|
|
21
|
-
createdAt: Date;
|
|
22
|
-
updatedAt: Date;
|
|
23
|
-
projectId: string;
|
|
24
|
-
}) | null>;
|
|
25
|
-
create(data: {
|
|
26
|
-
projectId: string;
|
|
27
|
-
name: string;
|
|
28
|
-
entries: Array<{
|
|
29
|
-
key: string;
|
|
30
|
-
value: string;
|
|
31
|
-
}>;
|
|
32
|
-
}): Promise<{
|
|
33
|
-
entries: {
|
|
34
|
-
id: string;
|
|
35
|
-
exportCollectionId: string;
|
|
36
|
-
key: string;
|
|
37
|
-
value: string;
|
|
38
|
-
}[];
|
|
39
|
-
} & {
|
|
40
|
-
id: string;
|
|
41
|
-
name: string;
|
|
42
|
-
createdAt: Date;
|
|
43
|
-
updatedAt: Date;
|
|
44
|
-
projectId: string;
|
|
45
|
-
}>;
|
|
46
|
-
update(id: string, data: {
|
|
47
|
-
name?: string;
|
|
48
|
-
entries?: Array<{
|
|
49
|
-
key: string;
|
|
50
|
-
value: string;
|
|
51
|
-
}>;
|
|
52
|
-
}): Promise<{
|
|
53
|
-
entries: {
|
|
54
|
-
id: string;
|
|
55
|
-
exportCollectionId: string;
|
|
56
|
-
key: string;
|
|
57
|
-
value: string;
|
|
58
|
-
}[];
|
|
59
|
-
} & {
|
|
60
|
-
id: string;
|
|
61
|
-
name: string;
|
|
62
|
-
createdAt: Date;
|
|
63
|
-
updatedAt: Date;
|
|
64
|
-
projectId: string;
|
|
65
|
-
}>;
|
|
66
|
-
delete(id: string): Promise<{
|
|
67
|
-
success: boolean;
|
|
68
|
-
}>;
|
|
69
|
-
} | undefined;
|
|
70
|
-
mongoConnection: mongoose.Connection | undefined;
|
|
71
|
-
prismaClient: PrismaClient<import(".prisma/client").Prisma.PrismaClientOptions, never, import("@prisma/client/runtime/library").DefaultArgs> | undefined;
|
|
72
|
-
};
|
|
1
|
+
import { StorageAdapter, DatabaseCredential, DatabaseProviders } from '../types';
|
|
2
|
+
export declare function createDatabaseProvider(databases: DatabaseCredential[], adapter: StorageAdapter): DatabaseProviders;
|
|
@@ -1,58 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.createDatabaseProvider = createDatabaseProvider;
|
|
7
|
-
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
-
const initProjectModel_1 = require("../db/initProjectModel");
|
|
9
|
-
const initUserModel_1 = require("../db/initUserModel");
|
|
10
|
-
const mongoExportProvider_1 = require("./mongoExportProvider");
|
|
11
|
-
const mongoProjectProvider_1 = require("./mongoProjectProvider");
|
|
12
|
-
const initExportModel_1 = require("../db/initExportModel");
|
|
13
4
|
const createPrismaProvider_1 = require("./createPrismaProvider");
|
|
14
|
-
const
|
|
15
|
-
const prismaProjectProvider_1 = require("./prismaProjectProvider");
|
|
16
|
-
const prismaExportCollectionProvider_1 = require("./prismaExportCollectionProvider");
|
|
5
|
+
const createMongooseProvider_1 = require("./createMongooseProvider");
|
|
17
6
|
function createDatabaseProvider(databases, adapter) {
|
|
18
|
-
let
|
|
19
|
-
let
|
|
7
|
+
let mongoProviders;
|
|
8
|
+
let prismaProviders;
|
|
20
9
|
const mongoConfig = databases.find((db) => db.dbType === 'nosql');
|
|
21
10
|
if (mongoConfig) {
|
|
22
11
|
if (!mongoConfig.connectionString) {
|
|
23
12
|
throw new Error('MongoDB connection string is required for mongo dbType.');
|
|
24
13
|
}
|
|
25
|
-
|
|
26
|
-
dbName: undefined,
|
|
27
|
-
});
|
|
14
|
+
mongoProviders = (0, createMongooseProvider_1.createMongooseProvider)(mongoConfig.connectionString, adapter) || undefined;
|
|
28
15
|
}
|
|
29
16
|
const prismaConfig = databases.find((db) => db.dbType === 'sql');
|
|
30
17
|
if (prismaConfig) {
|
|
31
18
|
if (!prismaConfig.connectionString) {
|
|
32
19
|
throw new Error('Prisma connection string is required for prisma dbType.');
|
|
33
20
|
}
|
|
34
|
-
|
|
21
|
+
prismaProviders = (0, createPrismaProvider_1.createPrismaProvider)(prismaConfig.connectionString, adapter) || undefined;
|
|
35
22
|
}
|
|
36
|
-
if (!
|
|
23
|
+
if (!mongoProviders && !prismaProviders) {
|
|
37
24
|
throw new Error('At least one database configuration (mongo or prisma) is required.');
|
|
38
25
|
}
|
|
39
|
-
// If mongoConnection is not defined, we can't create mongo-based providers
|
|
40
|
-
const ExportModel = mongoConnection ? (0, initExportModel_1.initExportModel)(mongoConnection) : undefined;
|
|
41
|
-
const ProjectModel = mongoConnection ? (0, initProjectModel_1.initProjectModel)(mongoConnection) : undefined;
|
|
42
|
-
const UserModel = mongoConnection ? (0, initUserModel_1.initUserModel)(mongoConnection) : undefined;
|
|
43
|
-
const mongoExportProvider = ExportModel ? (0, mongoExportProvider_1.createMongoExportProvider)(ExportModel) : undefined;
|
|
44
|
-
const mongoProjectProvider = ProjectModel && ExportModel ? (0, mongoProjectProvider_1.createMongoProjectProvider)(ProjectModel, ExportModel, adapter) : undefined;
|
|
45
|
-
const prismaExportProvider = prismaClient ? (0, prismaExportProvider_1.createPrismaExportProvider)(prismaClient) : undefined;
|
|
46
|
-
const prismaProjectProvider = prismaClient ? (0, prismaProjectProvider_1.createPrismaProjectProvider)(prismaClient, adapter) : undefined;
|
|
47
|
-
const prismaExportCollectionProvider = prismaClient ? (0, prismaExportCollectionProvider_1.createPrismaExportCollectionProvider)(prismaClient) : undefined;
|
|
48
26
|
return {
|
|
49
|
-
exportProvider:
|
|
27
|
+
exportProvider: mongoProviders?.exportProvider || prismaProviders?.exportProvider,
|
|
50
28
|
projectProviders: {
|
|
51
|
-
nosql:
|
|
52
|
-
sql:
|
|
29
|
+
nosql: mongoProviders?.projectProvider,
|
|
30
|
+
sql: prismaProviders?.projectProvider,
|
|
53
31
|
},
|
|
54
|
-
exportCollectionProvider:
|
|
55
|
-
|
|
56
|
-
prismaClient,
|
|
32
|
+
exportCollectionProvider: mongoProviders?.exportCollectionProvider || prismaProviders?.exportCollectionProvider,
|
|
33
|
+
mongooseClient: mongoProviders?.mongooseClient,
|
|
34
|
+
prismaClient: prismaProviders?.prismaClient,
|
|
57
35
|
};
|
|
58
36
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import mongoose from 'mongoose';
|
|
2
|
+
import { StorageAdapter, ProjectProvider, ExportProvider } from '../types';
|
|
3
|
+
export declare function createMongooseProvider(connectionString: string, adapter: StorageAdapter): {
|
|
4
|
+
mongooseClient: mongoose.Connection;
|
|
5
|
+
exportProvider: ExportProvider;
|
|
6
|
+
projectProvider: ProjectProvider;
|
|
7
|
+
exportCollectionProvider: undefined;
|
|
8
|
+
} | null;
|
|
@@ -0,0 +1,33 @@
|
|
|
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.createMongooseProvider = createMongooseProvider;
|
|
7
|
+
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
+
const initProjectModel_1 = require("../mongoose_models/initProjectModel");
|
|
9
|
+
const initExportModel_1 = require("../mongoose_models/initExportModel");
|
|
10
|
+
const mongooseExportProvider_1 = require("./mongooseExportProvider");
|
|
11
|
+
const mongooseProjectProvider_1 = require("./mongooseProjectProvider");
|
|
12
|
+
function createMongooseProvider(connectionString, adapter) {
|
|
13
|
+
if (!connectionString) {
|
|
14
|
+
console.warn('Connection string is not provided. Mongoose client will not be initialized.');
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const mongooseClient = mongoose_1.default.createConnection(connectionString, {
|
|
18
|
+
dbName: undefined,
|
|
19
|
+
});
|
|
20
|
+
const ExportModel = (0, initExportModel_1.initExportModel)(mongooseClient);
|
|
21
|
+
const ProjectModel = (0, initProjectModel_1.initProjectModel)(mongooseClient);
|
|
22
|
+
const exportProvider = (0, mongooseExportProvider_1.createMongooseExportProvider)(ExportModel);
|
|
23
|
+
const projectProvider = (0, mongooseProjectProvider_1.createMongooseProjectProvider)(ProjectModel, ExportModel, adapter);
|
|
24
|
+
// Mongoose does not have a direct equivalent for ExportCollectionProvider in the same way Prisma does.
|
|
25
|
+
// If a Mongoose-based ExportCollectionProvider is needed, it would be implemented here.
|
|
26
|
+
const exportCollectionProvider = undefined;
|
|
27
|
+
return {
|
|
28
|
+
mongooseClient,
|
|
29
|
+
exportProvider,
|
|
30
|
+
projectProvider,
|
|
31
|
+
exportCollectionProvider,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { PrismaClient } from '@prisma/client';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { StorageAdapter, ProjectProvider, ExportProvider, ExportCollectionProvider } from '../types';
|
|
3
|
+
export declare function createPrismaProvider(connectionString: string, adapter: StorageAdapter): {
|
|
4
|
+
prismaClient: PrismaClient<{
|
|
5
|
+
datasources: {
|
|
6
|
+
db: {
|
|
7
|
+
url: string;
|
|
8
|
+
};
|
|
6
9
|
};
|
|
7
|
-
}
|
|
8
|
-
|
|
10
|
+
}, never, import("@prisma/client/runtime/library").DefaultArgs>;
|
|
11
|
+
exportProvider: ExportProvider;
|
|
12
|
+
projectProvider: ProjectProvider;
|
|
13
|
+
exportCollectionProvider: ExportCollectionProvider;
|
|
14
|
+
} | null;
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createPrismaProvider = createPrismaProvider;
|
|
4
4
|
const client_1 = require("@prisma/client");
|
|
5
|
-
|
|
5
|
+
const prismaExportProvider_1 = require("./prismaExportProvider");
|
|
6
|
+
const prismaProjectProvider_1 = require("./prismaProjectProvider");
|
|
7
|
+
const prismaExportCollectionProvider_1 = require("./prismaExportCollectionProvider");
|
|
8
|
+
function createPrismaProvider(connectionString, adapter) {
|
|
6
9
|
if (!connectionString) {
|
|
7
10
|
console.warn('Connection string is not provided. Prisma client will not be initialized.');
|
|
8
11
|
return null;
|
|
@@ -14,5 +17,13 @@ function createPrismaProvider(connectionString) {
|
|
|
14
17
|
},
|
|
15
18
|
},
|
|
16
19
|
});
|
|
17
|
-
|
|
20
|
+
const exportProvider = (0, prismaExportProvider_1.createPrismaExportProvider)(prisma);
|
|
21
|
+
const projectProvider = (0, prismaProjectProvider_1.createPrismaProjectProvider)(prisma, adapter);
|
|
22
|
+
const exportCollectionProvider = (0, prismaExportCollectionProvider_1.createPrismaExportCollectionProvider)(prisma);
|
|
23
|
+
return {
|
|
24
|
+
prismaClient: prisma,
|
|
25
|
+
exportProvider,
|
|
26
|
+
projectProvider,
|
|
27
|
+
exportCollectionProvider,
|
|
28
|
+
};
|
|
18
29
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMongooseExportProvider = createMongooseExportProvider;
|
|
4
|
+
function createMongooseExportProvider(ExportModel) {
|
|
5
|
+
return {
|
|
6
|
+
async getById(exportId) {
|
|
7
|
+
return await ExportModel.findById(exportId).lean();
|
|
8
|
+
},
|
|
9
|
+
async create(data) {
|
|
10
|
+
return await ExportModel.create(data);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMongooseProjectProvider = createMongooseProjectProvider;
|
|
4
|
+
function createMongooseProjectProvider(ProjectModel, ExportModel, adapter) {
|
|
5
|
+
return {
|
|
6
|
+
async getById(projectId, populateMembers = false) {
|
|
7
|
+
let query = ProjectModel.findById(projectId).populate('exports', ['_id', 'collectionName']);
|
|
8
|
+
if (populateMembers) {
|
|
9
|
+
// No longer populating 'members.userId' to avoid dependency on external User model
|
|
10
|
+
}
|
|
11
|
+
const project = await query;
|
|
12
|
+
if (!project)
|
|
13
|
+
throw new Error('Project not found');
|
|
14
|
+
return formatProject(project);
|
|
15
|
+
},
|
|
16
|
+
async create(data) {
|
|
17
|
+
const newProject = await ProjectModel.create({
|
|
18
|
+
dbType: data.dbType,
|
|
19
|
+
members: [
|
|
20
|
+
{
|
|
21
|
+
userId: data.members?.[0].userId,
|
|
22
|
+
role: data.members?.[0].role,
|
|
23
|
+
archived: false
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
name: data.name,
|
|
27
|
+
description: data.description || '',
|
|
28
|
+
image: data.image || '',
|
|
29
|
+
folders: data.folders || [],
|
|
30
|
+
allowUpload: data.allowUpload ?? true,
|
|
31
|
+
allowSharing: data.allowSharing ?? false,
|
|
32
|
+
});
|
|
33
|
+
return formatProject(newProject);
|
|
34
|
+
},
|
|
35
|
+
async update(projectId, updates) {
|
|
36
|
+
const updated = await ProjectModel.findByIdAndUpdate(projectId, updates, { new: true }).populate('exports', ['_id', 'collectionName']);
|
|
37
|
+
if (!updated)
|
|
38
|
+
throw new Error('Project not found');
|
|
39
|
+
return formatProject(updated);
|
|
40
|
+
},
|
|
41
|
+
async list(userId) {
|
|
42
|
+
const all = await ProjectModel.find(userId
|
|
43
|
+
? { 'members': { $elemMatch: { userId } } }
|
|
44
|
+
: {});
|
|
45
|
+
return all.map(doc => formatProjectList(doc, userId));
|
|
46
|
+
},
|
|
47
|
+
async delete(projectId) {
|
|
48
|
+
try {
|
|
49
|
+
await ProjectModel.findByIdAndDelete(projectId);
|
|
50
|
+
await adapter.deleteProjectDirectory(projectId);
|
|
51
|
+
return { success: true };
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new Error('Project not found');
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
async archive(projectId, userId) {
|
|
58
|
+
await ProjectModel.updateOne({ _id: projectId, 'members.userId': userId }, { $set: { 'members.$.archived': true } });
|
|
59
|
+
return { success: true, projects: await this.list(userId) };
|
|
60
|
+
},
|
|
61
|
+
async unarchive(projectId, userId) {
|
|
62
|
+
await ProjectModel.updateOne({ _id: projectId, 'members.userId': userId }, { $set: { 'members.$.archived': false } });
|
|
63
|
+
return { success: true, projects: await this.list(userId) };
|
|
64
|
+
},
|
|
65
|
+
async getExport(projectId, exportId) {
|
|
66
|
+
const exportDoc = await ExportModel.findOne({ _id: exportId, project: projectId });
|
|
67
|
+
if (!exportDoc)
|
|
68
|
+
throw new Error('Export not found');
|
|
69
|
+
return exportDoc;
|
|
70
|
+
},
|
|
71
|
+
async addExportToProject(projectId, exportId) {
|
|
72
|
+
// En Mongoose, la relación ya está definida en el modelo Export.
|
|
73
|
+
// No es necesario actualizar el Project directamente.
|
|
74
|
+
// Si se necesita vincular un Export existente a un Project, se haría al crear o actualizar el Export.
|
|
75
|
+
// Por ejemplo, al crear un Export:
|
|
76
|
+
// ExportModel.create({ ..., projectId: projectId });
|
|
77
|
+
// O al actualizar un Export:
|
|
78
|
+
// ExportModel.findByIdAndUpdate(exportId, { projectId: projectId });
|
|
79
|
+
// Dado que el método original de Mongoose solo añade el ID, asumimos que el Export ya existe y tiene el projectId correcto.
|
|
80
|
+
// Si la lógica requiere añadir un Export existente a un Project, y el Export no tiene el projectId, se debería actualizar el Export.
|
|
81
|
+
// Por ahora, no se requiere ninguna acción aquí si la relación ya está establecida en el modelo Export.
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
function formatProject(doc) {
|
|
85
|
+
return {
|
|
86
|
+
id: doc._id.toString(),
|
|
87
|
+
dbType: doc.dbType,
|
|
88
|
+
name: doc.name,
|
|
89
|
+
image: doc.image,
|
|
90
|
+
members: doc.members.map((m) => ({
|
|
91
|
+
userId: m.userId,
|
|
92
|
+
role: m.role,
|
|
93
|
+
archived: m.archived ?? false
|
|
94
|
+
})),
|
|
95
|
+
description: doc.description,
|
|
96
|
+
folders: doc.rootFolders || [],
|
|
97
|
+
settings: {
|
|
98
|
+
allowUpload: doc.allowUpload,
|
|
99
|
+
allowSharing: doc.allowSharing,
|
|
100
|
+
},
|
|
101
|
+
exports: doc.exports || []
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function formatProjectList(doc, userId) {
|
|
105
|
+
const archived = doc.members?.find((m) => m.userId?.toString() === userId)?.archived ?? false;
|
|
106
|
+
return {
|
|
107
|
+
id: doc._id.toString(),
|
|
108
|
+
dbType: doc.dbType,
|
|
109
|
+
name: doc.name,
|
|
110
|
+
image: doc.image,
|
|
111
|
+
archived
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -10,9 +10,9 @@ export declare function createPrismaExportCollectionProvider(prisma: PrismaClien
|
|
|
10
10
|
} & {
|
|
11
11
|
id: string;
|
|
12
12
|
name: string;
|
|
13
|
+
projectId: string;
|
|
13
14
|
createdAt: Date;
|
|
14
15
|
updatedAt: Date;
|
|
15
|
-
projectId: string;
|
|
16
16
|
}) | null>;
|
|
17
17
|
create(data: {
|
|
18
18
|
projectId: string;
|
|
@@ -31,9 +31,9 @@ export declare function createPrismaExportCollectionProvider(prisma: PrismaClien
|
|
|
31
31
|
} & {
|
|
32
32
|
id: string;
|
|
33
33
|
name: string;
|
|
34
|
+
projectId: string;
|
|
34
35
|
createdAt: Date;
|
|
35
36
|
updatedAt: Date;
|
|
36
|
-
projectId: string;
|
|
37
37
|
}>;
|
|
38
38
|
update(id: string, data: {
|
|
39
39
|
name?: string;
|
|
@@ -51,9 +51,9 @@ export declare function createPrismaExportCollectionProvider(prisma: PrismaClien
|
|
|
51
51
|
} & {
|
|
52
52
|
id: string;
|
|
53
53
|
name: string;
|
|
54
|
+
projectId: string;
|
|
54
55
|
createdAt: Date;
|
|
55
56
|
updatedAt: Date;
|
|
56
|
-
projectId: string;
|
|
57
57
|
}>;
|
|
58
58
|
delete(id: string): Promise<{
|
|
59
59
|
success: boolean;
|
|
@@ -12,7 +12,7 @@ function createPrismaProjectProvider(prisma, adapter) {
|
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
if (!project)
|
|
15
|
-
|
|
15
|
+
return null;
|
|
16
16
|
return formatProject(project);
|
|
17
17
|
},
|
|
18
18
|
async create(data) {
|
|
@@ -74,7 +74,8 @@ function createPrismaProjectProvider(prisma, adapter) {
|
|
|
74
74
|
return { success: true };
|
|
75
75
|
}
|
|
76
76
|
catch (error) {
|
|
77
|
-
|
|
77
|
+
console.error('Error deleting project:', error);
|
|
78
|
+
throw new Error(`Failed to delete project: ${error.message || error}`);
|
|
78
79
|
}
|
|
79
80
|
},
|
|
80
81
|
async archive(projectId, userId) {
|
package/dist/services/auth.js
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Request } from 'express';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
2
3
|
export interface S3Config {
|
|
3
4
|
bucket: string;
|
|
4
5
|
region: string;
|
|
@@ -107,7 +108,7 @@ export interface ProjectProvider {
|
|
|
107
108
|
projects: ProjectListInfo[];
|
|
108
109
|
}>;
|
|
109
110
|
list(userId?: string): Promise<ProjectListInfo[]>;
|
|
110
|
-
getById(projectId: string, populateMembers?: boolean): Promise<ProjectInfo>;
|
|
111
|
+
getById(projectId: string, populateMembers?: boolean): Promise<ProjectInfo | null>;
|
|
111
112
|
delete(projectId: string): Promise<{
|
|
112
113
|
success: boolean;
|
|
113
114
|
}>;
|
|
@@ -154,3 +155,13 @@ export interface ExportCollectionProvider {
|
|
|
154
155
|
success: boolean;
|
|
155
156
|
}>;
|
|
156
157
|
}
|
|
158
|
+
export interface DatabaseProviders {
|
|
159
|
+
exportProvider?: ExportProvider;
|
|
160
|
+
projectProviders: {
|
|
161
|
+
nosql?: ProjectProvider;
|
|
162
|
+
sql?: ProjectProvider;
|
|
163
|
+
};
|
|
164
|
+
exportCollectionProvider?: ExportCollectionProvider;
|
|
165
|
+
mongooseClient?: mongoose.Connection;
|
|
166
|
+
prismaClient?: any;
|
|
167
|
+
}
|