mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-09-11 12:17:41 +02:00
Merge pull request #545 from OpenSignLabs/staging
fix: update migration script
This commit is contained in:
@@ -2,210 +2,251 @@
|
||||
*
|
||||
* @param {Parse} Parse
|
||||
*/
|
||||
|
||||
// Helper to create or update a schema
|
||||
async function ensureSchema(Parse, className, setupFn) {
|
||||
const schema = new Parse.Schema(className);
|
||||
setupFn(schema);
|
||||
try {
|
||||
// If class exists, update it
|
||||
await schema.update();
|
||||
console.log(`✅ Updated schema for ${className}`);
|
||||
} catch (e) {
|
||||
// Otherwise, create it
|
||||
await schema.save();
|
||||
console.log(`✅ Created schema for ${className}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Helper to revert CLP (safe if class doesn’t exist)
|
||||
async function patchSchema(Parse, className, setupFn) {
|
||||
const schema = new Parse.Schema(className);
|
||||
setupFn(schema);
|
||||
try {
|
||||
await schema.update();
|
||||
console.log(`🔄 Reverted schema for ${className}`);
|
||||
} catch (e) {
|
||||
console.warn(`⚠️ Skipping ${className} in down (not found)`);
|
||||
}
|
||||
}
|
||||
|
||||
exports.up = async Parse => {
|
||||
const schema = new Parse.Schema('contracts_Signature');
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
await ensureSchema(Parse, 'contracts_Signature', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
});
|
||||
});
|
||||
await schema.update();
|
||||
const docSchema = new Parse.Schema('contracts_Document');
|
||||
docSchema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { requiresAuthentication: true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { requiresAuthentication: true },
|
||||
|
||||
await ensureSchema(Parse, 'contracts_Document', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { requiresAuthentication: true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { requiresAuthentication: true },
|
||||
});
|
||||
});
|
||||
await docSchema.update();
|
||||
const templateSchema = new Parse.Schema('contracts_Template');
|
||||
templateSchema.setCLP({
|
||||
get: { '*': true },
|
||||
find: {},
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { requiresAuthentication: true },
|
||||
|
||||
await ensureSchema(Parse, 'contracts_Template', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: {},
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { requiresAuthentication: true },
|
||||
});
|
||||
});
|
||||
await templateSchema.update();
|
||||
const dataFiles = new Parse.Schema('partners_DataFiles');
|
||||
dataFiles.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: { '*': true },
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: { '*': true },
|
||||
|
||||
await ensureSchema(Parse, 'partners_DataFiles', schema => {
|
||||
schema.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: { '*': true },
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await dataFiles.update();
|
||||
const pTenant = new Parse.Schema('partners_Tenant');
|
||||
pTenant.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: {},
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: {},
|
||||
|
||||
await ensureSchema(Parse, 'partners_Tenant', schema => {
|
||||
schema.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: {},
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: {},
|
||||
});
|
||||
});
|
||||
await pTenant.update();
|
||||
const TenantCredits = new Parse.Schema('partners_TenantCredits');
|
||||
TenantCredits.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { '*': true },
|
||||
|
||||
await ensureSchema(Parse, 'partners_TenantCredits', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await TenantCredits.update();
|
||||
const _user = new Parse.Schema('_User');
|
||||
_user.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
|
||||
await ensureSchema(Parse, '_User', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
});
|
||||
});
|
||||
await _user.update();
|
||||
const Migrationdb = new Parse.Schema('Migrationdb');
|
||||
Migrationdb.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: {},
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: {},
|
||||
|
||||
await ensureSchema(Parse, 'Migrationdb', schema => {
|
||||
schema.setCLP({
|
||||
get: {},
|
||||
find: {},
|
||||
count: {},
|
||||
create: {},
|
||||
update: {},
|
||||
delete: {},
|
||||
addField: {},
|
||||
});
|
||||
});
|
||||
await Migrationdb.update();
|
||||
const contactbook = new Parse.Schema('contracts_Contactbook');
|
||||
contactbook.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
|
||||
await ensureSchema(Parse, 'contracts_Contactbook', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: {},
|
||||
addField: {},
|
||||
});
|
||||
});
|
||||
return contactbook.update();
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Parse} Parse
|
||||
*/
|
||||
exports.down = async Parse => {
|
||||
const schema = new Parse.Schema('contracts_Signature');
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'contracts_Signature', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await schema.update();
|
||||
const docSchema = new Parse.Schema('contracts_Document');
|
||||
docSchema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'contracts_Document', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await docSchema.update();
|
||||
const templateSchema = new Parse.Schema('contracts_Template');
|
||||
templateSchema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'contracts_Template', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await templateSchema.update();
|
||||
const dataFiles = new Parse.Schema('partners_DataFiles');
|
||||
dataFiles.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'partners_DataFiles', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await dataFiles.update();
|
||||
const pTenant = new Parse.Schema('partners_Tenant');
|
||||
pTenant.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'partners_Tenant', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await pTenant.update();
|
||||
const TenantCredits = new Parse.Schema('partners_TenantCredits');
|
||||
TenantCredits.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'partners_TenantCredits', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await TenantCredits.update();
|
||||
const _user = new Parse.Schema('_User');
|
||||
_user.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, '_User', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await _user.update();
|
||||
const Migrationdb = new Parse.Schema('Migrationdb');
|
||||
Migrationdb.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'Migrationdb', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
await Migrationdb.update();
|
||||
const contactbook = new Parse.Schema('contracts_Contactbook');
|
||||
contactbook.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
|
||||
await patchSchema(Parse, 'contracts_Contactbook', schema => {
|
||||
schema.setCLP({
|
||||
get: { '*': true },
|
||||
find: { '*': true },
|
||||
count: { '*': true },
|
||||
create: { '*': true },
|
||||
update: { '*': true },
|
||||
delete: { '*': true },
|
||||
addField: { '*': true },
|
||||
});
|
||||
});
|
||||
return contactbook.update();
|
||||
};
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
*
|
||||
* @param {Parse} Parse
|
||||
*/
|
||||
exports.up = async Parse => {
|
||||
const userschema = new Parse.Schema('_User');
|
||||
userschema.addString('name');
|
||||
return userschema.update(null, { useMasterKey: true });
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Parse} Parse
|
||||
*/
|
||||
exports.down = async Parse => {
|
||||
const userschema = new Parse.Schema('_User');
|
||||
userschema.deleteField('name');
|
||||
return userschema.update(null, { useMasterKey: true });
|
||||
};
|
||||
Reference in New Issue
Block a user