streamby-core 0.18.0 → 0.20.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 +81 -158
- 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 -120
- 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 -157
- package/dist/utils/pushPrismaSchema.d.ts +0 -5
- package/dist/utils/pushPrismaSchema.js +0 -35
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPrismaProjectProvider = createPrismaProjectProvider;
|
|
4
|
-
function createPrismaProjectProvider(prisma, adapter) {
|
|
5
|
-
return {
|
|
6
|
-
async getById(projectId, populateMembers = false) {
|
|
7
|
-
const project = await prisma.project.findUnique({
|
|
8
|
-
where: { id: projectId },
|
|
9
|
-
include: {
|
|
10
|
-
exports: { select: { id: true, collectionName: true } },
|
|
11
|
-
members: populateMembers ? true : false,
|
|
12
|
-
},
|
|
13
|
-
});
|
|
14
|
-
if (!project)
|
|
15
|
-
return null;
|
|
16
|
-
return formatProject(project);
|
|
17
|
-
},
|
|
18
|
-
async create(data) {
|
|
19
|
-
const newProject = await prisma.project.create({
|
|
20
|
-
data: {
|
|
21
|
-
dbType: data.dbType,
|
|
22
|
-
name: data.name,
|
|
23
|
-
description: data.description || '',
|
|
24
|
-
image: data.image || '',
|
|
25
|
-
allowUpload: data.allowUpload ?? true,
|
|
26
|
-
allowSharing: data.allowSharing ?? false,
|
|
27
|
-
members: {
|
|
28
|
-
create: data.members?.[0] ? {
|
|
29
|
-
userId: data.members[0].userId,
|
|
30
|
-
role: data.members[0].role,
|
|
31
|
-
archived: false,
|
|
32
|
-
} : undefined,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
include: {
|
|
36
|
-
exports: { select: { id: true, collectionName: true } },
|
|
37
|
-
members: true,
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
return formatProject(newProject);
|
|
41
|
-
},
|
|
42
|
-
async update(projectId, updates) {
|
|
43
|
-
const updated = await prisma.project.update({
|
|
44
|
-
where: { id: projectId },
|
|
45
|
-
data: {
|
|
46
|
-
name: updates.name,
|
|
47
|
-
description: updates.description,
|
|
48
|
-
image: updates.image,
|
|
49
|
-
allowUpload: updates.settings?.allowUpload,
|
|
50
|
-
allowSharing: updates.settings?.allowSharing,
|
|
51
|
-
},
|
|
52
|
-
include: {
|
|
53
|
-
exports: { select: { id: true, collectionName: true } },
|
|
54
|
-
members: true,
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
if (!updated)
|
|
58
|
-
throw new Error('Project not found');
|
|
59
|
-
return formatProject(updated);
|
|
60
|
-
},
|
|
61
|
-
async list(userId, archived) {
|
|
62
|
-
const whereClause = {};
|
|
63
|
-
if (userId) {
|
|
64
|
-
whereClause.members = {
|
|
65
|
-
some: {
|
|
66
|
-
userId,
|
|
67
|
-
...(typeof archived === 'boolean' && { archived }),
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const all = await prisma.project.findMany({
|
|
72
|
-
where: whereClause,
|
|
73
|
-
include: {
|
|
74
|
-
members: true,
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
return all.map(doc => formatProjectList(doc, userId));
|
|
78
|
-
},
|
|
79
|
-
async delete(projectId) {
|
|
80
|
-
try {
|
|
81
|
-
await prisma.project.delete({ where: { id: projectId } });
|
|
82
|
-
await adapter.deleteProjectDirectory(projectId);
|
|
83
|
-
return { success: true };
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.error('Error deleting project:', error);
|
|
87
|
-
throw new Error(`Failed to delete project: ${error.message || error}`);
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
async archive(projectId, userId) {
|
|
91
|
-
await prisma.member.updateMany({
|
|
92
|
-
where: { projectId, userId },
|
|
93
|
-
data: { archived: true },
|
|
94
|
-
});
|
|
95
|
-
return { success: true, projects: await this.list(userId) };
|
|
96
|
-
},
|
|
97
|
-
async unarchive(projectId, userId) {
|
|
98
|
-
await prisma.member.updateMany({
|
|
99
|
-
where: { projectId, userId },
|
|
100
|
-
data: { archived: false },
|
|
101
|
-
});
|
|
102
|
-
return { success: true, projects: await this.list(userId) };
|
|
103
|
-
},
|
|
104
|
-
async getExport(projectId, exportId) {
|
|
105
|
-
const exportDoc = await prisma.export.findFirst({
|
|
106
|
-
where: { id: exportId, projectId: projectId },
|
|
107
|
-
});
|
|
108
|
-
if (!exportDoc)
|
|
109
|
-
throw new Error('Export not found');
|
|
110
|
-
return exportDoc;
|
|
111
|
-
},
|
|
112
|
-
async addExportToProject(projectId, exportId) {
|
|
113
|
-
// En Prisma, la relación ya está definida en el modelo Export.
|
|
114
|
-
// No es necesario actualizar el Project directamente.
|
|
115
|
-
// Si se necesita vincular un Export existente a un Project, se haría al crear o actualizar el Export.
|
|
116
|
-
// Por ejemplo, al crear un Export:
|
|
117
|
-
// prisma.export.create({ data: { ..., projectId: projectId } });
|
|
118
|
-
// O al actualizar un Export:
|
|
119
|
-
// prisma.export.update({ where: { id: exportId }, data: { projectId: projectId } });
|
|
120
|
-
// Dado que el método original de Mongoose solo añade el ID, asumimos que el Export ya existe y tiene el projectId correcto.
|
|
121
|
-
// 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.
|
|
122
|
-
// Por ahora, no se requiere ninguna acción aquí si la relación ya está establecida en el modelo Export.
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
function formatProject(doc) {
|
|
126
|
-
return {
|
|
127
|
-
id: doc.id,
|
|
128
|
-
dbType: doc.dbType,
|
|
129
|
-
name: doc.name,
|
|
130
|
-
image: doc.image,
|
|
131
|
-
members: doc.members?.map((m) => ({
|
|
132
|
-
userId: m.userId,
|
|
133
|
-
username: m.username, // Asumimos que el username y email se obtendrán de un servicio externo si es necesario
|
|
134
|
-
email: m.email,
|
|
135
|
-
role: m.role,
|
|
136
|
-
archived: m.archived ?? false
|
|
137
|
-
})) || [],
|
|
138
|
-
description: doc.description,
|
|
139
|
-
folders: doc.folders || [], // Prisma usa 'folders' en lugar de 'rootFolders'
|
|
140
|
-
settings: {
|
|
141
|
-
allowUpload: doc.allowUpload,
|
|
142
|
-
allowSharing: doc.allowSharing,
|
|
143
|
-
},
|
|
144
|
-
exports: doc.exports || []
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function formatProjectList(doc, userId) {
|
|
148
|
-
const archived = doc.members?.find((m) => m.userId === userId)?.archived ?? false;
|
|
149
|
-
return {
|
|
150
|
-
id: doc.id,
|
|
151
|
-
dbType: doc.dbType,
|
|
152
|
-
name: doc.name,
|
|
153
|
-
image: doc.image,
|
|
154
|
-
archived
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
@@ -1,35 +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.pushPrismaSchema = pushPrismaSchema;
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
let schemaPushed = false;
|
|
10
|
-
/**
|
|
11
|
-
* Executes `prisma db push` programmatically to sync the schema with the database.
|
|
12
|
-
* Ensures the command is only run once per application lifecycle.
|
|
13
|
-
*/
|
|
14
|
-
function pushPrismaSchema() {
|
|
15
|
-
if (schemaPushed) {
|
|
16
|
-
console.log('[StreamBy] Prisma schema has already been pushed. Skipping.');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
// Resolve the path to the schema.prisma file relative to the compiled JS file.
|
|
21
|
-
// __dirname will be /path/to/your/project/node_modules/streamby-core/dist/utils
|
|
22
|
-
const schemaPath = path_1.default.resolve(__dirname, '..', '..', 'prisma', 'schema.prisma');
|
|
23
|
-
console.log(`[StreamBy] Locating Prisma schema at: ${schemaPath}`);
|
|
24
|
-
console.log('[StreamBy] Pushing Prisma schema to the database...');
|
|
25
|
-
const command = `npx prisma db push --schema="${schemaPath}"`;
|
|
26
|
-
(0, child_process_1.execSync)(command, { stdio: 'inherit' });
|
|
27
|
-
console.log('[StreamBy] Prisma schema pushed successfully.');
|
|
28
|
-
schemaPushed = true;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
console.error('[StreamBy] Failed to push Prisma schema:', error);
|
|
32
|
-
// Optional: decide if the application should exit on failure
|
|
33
|
-
// process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
}
|