streamby-core 0.17.0 → 0.19.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.
- package/README.md +206 -114
- package/dist/adapters/database/connectionManager.d.ts +6 -0
- package/dist/adapters/database/connectionManager.js +47 -0
- package/dist/adapters/database/nosql.d.ts +8 -0
- package/dist/adapters/database/nosql.js +46 -0
- package/dist/adapters/database/nosqlAdapter.d.ts +8 -0
- package/dist/adapters/database/nosqlAdapter.js +30 -0
- package/dist/adapters/database/sql.d.ts +8 -0
- package/dist/adapters/database/sql.js +42 -0
- package/dist/adapters/database/sqlAdapter.d.ts +8 -0
- package/dist/adapters/database/sqlAdapter.js +42 -0
- package/dist/adapters/s3.d.ts +11 -2
- package/dist/adapters/s3.js +59 -76
- package/dist/adapters/storage/gcs.d.ts +0 -0
- package/dist/adapters/storage/gcs.js +1 -0
- package/dist/adapters/storage/local.d.ts +0 -0
- package/dist/adapters/storage/local.js +1 -0
- package/dist/adapters/storage/s3.d.ts +11 -0
- package/dist/adapters/storage/s3.js +65 -0
- package/dist/database/Model.d.ts +11 -0
- package/dist/database/Model.js +95 -0
- package/dist/database/connectionManager.d.ts +5 -0
- package/dist/database/connectionManager.js +32 -0
- package/dist/database/index.d.ts +3 -0
- package/dist/database/index.js +19 -0
- package/dist/database/model.d.ts +20 -0
- package/dist/database/model.js +2 -0
- package/dist/database/modelManager.d.ts +8 -0
- package/dist/database/modelManager.js +38 -0
- package/dist/database/modelRegistry.d.ts +3 -0
- package/dist/database/modelRegistry.js +17 -0
- package/dist/database/mongoAdapter.d.ts +11 -0
- package/dist/database/mongoAdapter.js +42 -0
- package/dist/database/sqlAdapter.d.ts +12 -0
- package/dist/database/sqlAdapter.js +68 -0
- package/dist/middleware/createRouter.js +76 -140
- package/dist/models/Model.d.ts +12 -0
- package/dist/models/Model.js +146 -0
- package/dist/models/manager.d.ts +2 -0
- package/dist/models/manager.js +7 -0
- package/dist/models/modelManager.d.ts +2 -0
- package/dist/models/modelManager.js +7 -0
- package/dist/models/modelRegistry.d.ts +3 -0
- package/dist/models/modelRegistry.js +17 -0
- package/dist/models/register.d.ts +1 -0
- package/dist/models/register.js +8 -0
- package/dist/models/registerModel.d.ts +1 -0
- package/dist/models/registerModel.js +8 -0
- package/dist/models/registry.d.ts +3 -0
- package/dist/models/registry.js +17 -0
- package/dist/providers/createStorageProvider.d.ts +1 -1
- package/dist/providers/createStorageProvider.js +9 -13
- package/dist/providers/storage.d.ts +2 -0
- package/dist/providers/storage.js +12 -0
- package/dist/services/auth.d.ts +0 -1
- package/dist/services/auth.js +0 -11
- package/dist/types/index.d.ts +4 -95
- package/package.json +5 -1
- package/dist/config.d.ts +0 -18
- package/dist/config.js +0 -26
- package/dist/db/initExportModel.d.ts +0 -60
- package/dist/db/initExportModel.js +0 -18
- package/dist/db/initProjectModel.d.ts +0 -2502
- package/dist/db/initProjectModel.js +0 -33
- package/dist/db/initUserModel.d.ts +0 -48
- package/dist/db/initUserModel.js +0 -19
- package/dist/models/ExportCollection.d.ts +0 -54
- package/dist/models/ExportCollection.js +0 -19
- package/dist/mongoose_models/initExportModel.d.ts +0 -61
- package/dist/mongoose_models/initExportModel.js +0 -19
- package/dist/mongoose_models/initProjectModel.d.ts +0 -2503
- package/dist/mongoose_models/initProjectModel.js +0 -34
- package/dist/providers/createDatabaseProvider.d.ts +0 -2
- package/dist/providers/createDatabaseProvider.js +0 -36
- package/dist/providers/createMongooseProvider.d.ts +0 -8
- package/dist/providers/createMongooseProvider.js +0 -33
- package/dist/providers/createPrismaProvider.d.ts +0 -14
- package/dist/providers/createPrismaProvider.js +0 -29
- package/dist/providers/mongoExportProvider.d.ts +0 -3
- package/dist/providers/mongoExportProvider.js +0 -13
- package/dist/providers/mongoProjectProvider.d.ts +0 -3
- package/dist/providers/mongoProjectProvider.js +0 -107
- package/dist/providers/mongooseExportProvider.d.ts +0 -3
- package/dist/providers/mongooseExportProvider.js +0 -13
- package/dist/providers/mongooseProjectProvider.d.ts +0 -3
- package/dist/providers/mongooseProjectProvider.js +0 -114
- package/dist/providers/prismaExportCollectionProvider.d.ts +0 -61
- package/dist/providers/prismaExportCollectionProvider.js +0 -45
- package/dist/providers/prismaExportProvider.d.ts +0 -3
- package/dist/providers/prismaExportProvider.js +0 -13
- package/dist/providers/prismaProjectProvider.d.ts +0 -3
- package/dist/providers/prismaProjectProvider.js +0 -148
- package/dist/utils/pushPrismaSchema.d.ts +0 -5
- package/dist/utils/pushPrismaSchema.js +0 -35
|
@@ -1,34 +0,0 @@
|
|
|
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,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDatabaseProvider = createDatabaseProvider;
|
|
4
|
-
const createPrismaProvider_1 = require("./createPrismaProvider");
|
|
5
|
-
const createMongooseProvider_1 = require("./createMongooseProvider");
|
|
6
|
-
function createDatabaseProvider(databases, adapter) {
|
|
7
|
-
let mongoProviders;
|
|
8
|
-
let prismaProviders;
|
|
9
|
-
const mongoConfig = databases.find((db) => db.dbType === 'nosql');
|
|
10
|
-
if (mongoConfig) {
|
|
11
|
-
if (!mongoConfig.connectionString) {
|
|
12
|
-
throw new Error('MongoDB connection string is required for mongo dbType.');
|
|
13
|
-
}
|
|
14
|
-
mongoProviders = (0, createMongooseProvider_1.createMongooseProvider)(mongoConfig.connectionString, adapter) || undefined;
|
|
15
|
-
}
|
|
16
|
-
const prismaConfig = databases.find((db) => db.dbType === 'sql');
|
|
17
|
-
if (prismaConfig) {
|
|
18
|
-
if (!prismaConfig.connectionString) {
|
|
19
|
-
throw new Error('Prisma connection string is required for prisma dbType.');
|
|
20
|
-
}
|
|
21
|
-
prismaProviders = (0, createPrismaProvider_1.createPrismaProvider)(prismaConfig.connectionString, adapter) || undefined;
|
|
22
|
-
}
|
|
23
|
-
if (!mongoProviders && !prismaProviders) {
|
|
24
|
-
throw new Error('At least one database configuration (mongo or prisma) is required.');
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
exportProvider: mongoProviders?.exportProvider || prismaProviders?.exportProvider,
|
|
28
|
-
projectProviders: {
|
|
29
|
-
nosql: mongoProviders?.projectProvider,
|
|
30
|
-
sql: prismaProviders?.projectProvider,
|
|
31
|
-
},
|
|
32
|
-
exportCollectionProvider: mongoProviders?.exportCollectionProvider || prismaProviders?.exportCollectionProvider,
|
|
33
|
-
mongooseClient: mongoProviders?.mongooseClient,
|
|
34
|
-
prismaClient: prismaProviders?.prismaClient,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
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;
|
|
@@ -1,33 +0,0 @@
|
|
|
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,14 +0,0 @@
|
|
|
1
|
-
import { PrismaClient } from '@prisma/client';
|
|
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
|
-
};
|
|
9
|
-
};
|
|
10
|
-
}, never, import("@prisma/client/runtime/library").DefaultArgs>;
|
|
11
|
-
exportProvider: ExportProvider;
|
|
12
|
-
projectProvider: ProjectProvider;
|
|
13
|
-
exportCollectionProvider: ExportCollectionProvider;
|
|
14
|
-
} | null;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPrismaProvider = createPrismaProvider;
|
|
4
|
-
const client_1 = require("@prisma/client");
|
|
5
|
-
const prismaExportProvider_1 = require("./prismaExportProvider");
|
|
6
|
-
const prismaProjectProvider_1 = require("./prismaProjectProvider");
|
|
7
|
-
const prismaExportCollectionProvider_1 = require("./prismaExportCollectionProvider");
|
|
8
|
-
function createPrismaProvider(connectionString, adapter) {
|
|
9
|
-
if (!connectionString) {
|
|
10
|
-
console.warn('Connection string is not provided. Prisma client will not be initialized.');
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
const prisma = new client_1.PrismaClient({
|
|
14
|
-
datasources: {
|
|
15
|
-
db: {
|
|
16
|
-
url: connectionString,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
});
|
|
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
|
-
};
|
|
29
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMongoExportProvider = createMongoExportProvider;
|
|
4
|
-
function createMongoExportProvider(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
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMongoProjectProvider = createMongoProjectProvider;
|
|
4
|
-
function createMongoProjectProvider(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
|
-
query = query.populate('members.userId');
|
|
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
|
-
rootFolders: 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
|
-
await ProjectModel.findByIdAndUpdate(projectId, { $push: { exports: exportId } });
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
function formatProject(doc) {
|
|
76
|
-
return {
|
|
77
|
-
id: doc._id.toString(),
|
|
78
|
-
dbType: doc.dbType,
|
|
79
|
-
name: doc.name,
|
|
80
|
-
image: doc.image,
|
|
81
|
-
members: doc.members.map((m) => ({
|
|
82
|
-
userId: m.userId?._id || m.userId,
|
|
83
|
-
username: m.userId?.username,
|
|
84
|
-
email: m.userId?.email,
|
|
85
|
-
role: m.role,
|
|
86
|
-
archived: m.archived ?? false
|
|
87
|
-
})),
|
|
88
|
-
description: doc.description,
|
|
89
|
-
folders: doc.rootFolders || [],
|
|
90
|
-
settings: {
|
|
91
|
-
allowUpload: doc.allowUpload,
|
|
92
|
-
allowSharing: doc.allowSharing,
|
|
93
|
-
},
|
|
94
|
-
exports: doc.exports || []
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
function formatProjectList(doc, userId) {
|
|
98
|
-
const archived = doc.members?.find((m) => m.userId?.toString() === userId)?.archived ?? false;
|
|
99
|
-
return {
|
|
100
|
-
id: doc._id.toString(),
|
|
101
|
-
dbType: doc.dbType,
|
|
102
|
-
name: doc.name,
|
|
103
|
-
image: doc.image,
|
|
104
|
-
archived
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { PrismaClient } from '@prisma/client';
|
|
2
|
-
export declare function createPrismaExportCollectionProvider(prisma: PrismaClient): {
|
|
3
|
-
getById(id: string): Promise<({
|
|
4
|
-
entries: {
|
|
5
|
-
id: string;
|
|
6
|
-
exportCollectionId: string;
|
|
7
|
-
key: string;
|
|
8
|
-
value: string;
|
|
9
|
-
}[];
|
|
10
|
-
} & {
|
|
11
|
-
id: string;
|
|
12
|
-
name: string;
|
|
13
|
-
projectId: string;
|
|
14
|
-
createdAt: Date;
|
|
15
|
-
updatedAt: Date;
|
|
16
|
-
}) | null>;
|
|
17
|
-
create(data: {
|
|
18
|
-
projectId: string;
|
|
19
|
-
name: string;
|
|
20
|
-
entries: Array<{
|
|
21
|
-
key: string;
|
|
22
|
-
value: string;
|
|
23
|
-
}>;
|
|
24
|
-
}): Promise<{
|
|
25
|
-
entries: {
|
|
26
|
-
id: string;
|
|
27
|
-
exportCollectionId: string;
|
|
28
|
-
key: string;
|
|
29
|
-
value: string;
|
|
30
|
-
}[];
|
|
31
|
-
} & {
|
|
32
|
-
id: string;
|
|
33
|
-
name: string;
|
|
34
|
-
projectId: string;
|
|
35
|
-
createdAt: Date;
|
|
36
|
-
updatedAt: Date;
|
|
37
|
-
}>;
|
|
38
|
-
update(id: string, data: {
|
|
39
|
-
name?: string;
|
|
40
|
-
entries?: Array<{
|
|
41
|
-
key: string;
|
|
42
|
-
value: string;
|
|
43
|
-
}>;
|
|
44
|
-
}): Promise<{
|
|
45
|
-
entries: {
|
|
46
|
-
id: string;
|
|
47
|
-
exportCollectionId: string;
|
|
48
|
-
key: string;
|
|
49
|
-
value: string;
|
|
50
|
-
}[];
|
|
51
|
-
} & {
|
|
52
|
-
id: string;
|
|
53
|
-
name: string;
|
|
54
|
-
projectId: string;
|
|
55
|
-
createdAt: Date;
|
|
56
|
-
updatedAt: Date;
|
|
57
|
-
}>;
|
|
58
|
-
delete(id: string): Promise<{
|
|
59
|
-
success: boolean;
|
|
60
|
-
}>;
|
|
61
|
-
};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPrismaExportCollectionProvider = createPrismaExportCollectionProvider;
|
|
4
|
-
function createPrismaExportCollectionProvider(prisma) {
|
|
5
|
-
return {
|
|
6
|
-
async getById(id) {
|
|
7
|
-
return prisma.exportCollection.findUnique({
|
|
8
|
-
where: { id },
|
|
9
|
-
include: { entries: true },
|
|
10
|
-
});
|
|
11
|
-
},
|
|
12
|
-
async create(data) {
|
|
13
|
-
const { entries, ...rest } = data;
|
|
14
|
-
return prisma.exportCollection.create({
|
|
15
|
-
data: {
|
|
16
|
-
...rest,
|
|
17
|
-
entries: {
|
|
18
|
-
createMany: { data: entries },
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
include: { entries: true },
|
|
22
|
-
});
|
|
23
|
-
},
|
|
24
|
-
async update(id, data) {
|
|
25
|
-
const { entries, ...rest } = data;
|
|
26
|
-
const updateData = { ...rest };
|
|
27
|
-
if (entries) {
|
|
28
|
-
// Eliminar entradas existentes y crear nuevas
|
|
29
|
-
await prisma.exportEntry.deleteMany({ where: { exportCollectionId: id } });
|
|
30
|
-
updateData.entries = {
|
|
31
|
-
createMany: { data: entries },
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return prisma.exportCollection.update({
|
|
35
|
-
where: { id },
|
|
36
|
-
data: updateData,
|
|
37
|
-
include: { entries: true },
|
|
38
|
-
});
|
|
39
|
-
},
|
|
40
|
-
async delete(id) {
|
|
41
|
-
await prisma.exportCollection.delete({ where: { id } });
|
|
42
|
-
return { success: true };
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPrismaExportProvider = createPrismaExportProvider;
|
|
4
|
-
function createPrismaExportProvider(prisma) {
|
|
5
|
-
return {
|
|
6
|
-
async getById(exportId) {
|
|
7
|
-
return await prisma.export.findUnique({ where: { id: exportId } });
|
|
8
|
-
},
|
|
9
|
-
async create(data) {
|
|
10
|
-
return await prisma.export.create({ data });
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
}
|