Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c95784eda9 | |||
| f49dbed2d8 | |||
| 1480fa31c7 | |||
| 769dff4364 | |||
| d2e0e75e9a | |||
| 041f3b58f4 | |||
| 0f4db08883 |
@@ -111,11 +111,17 @@ steps:
|
||||
# -------- NEW: Create GitHub Release --------
|
||||
- name: github-release
|
||||
image: plugins/github-release
|
||||
environment:
|
||||
PLUGIN_API_KEY:
|
||||
from_secret: GITHUB_TOKEN
|
||||
DRONE_REMOTE_URL: https://github.com/the-luap/picpeak.git
|
||||
settings:
|
||||
api_key:
|
||||
from_secret: GITHUB_TOKEN
|
||||
repo: the-luap/picpeak
|
||||
title: "PicPeak ${DRONE_TAG}"
|
||||
prerelease: false
|
||||
overwrite: true
|
||||
note: |
|
||||
# PicPeak ${DRONE_TAG}
|
||||
|
||||
|
||||
@@ -8,8 +8,7 @@ exports.up = async function(knex) {
|
||||
await knex('app_settings').insert({
|
||||
setting_key: 'general_default_welcome_message',
|
||||
setting_value: JSON.stringify('Thank you for using our photo sharing service! We hope you enjoy your photos.'),
|
||||
setting_type: 'general',
|
||||
updated_at: new Date()
|
||||
setting_type: 'general'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -41,8 +41,7 @@ exports.up = async function(knex) {
|
||||
|
||||
if (!exists) {
|
||||
await knex('app_settings').insert({
|
||||
...setting,
|
||||
updated_at: knex.fn.now()
|
||||
...setting
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const { formatBoolean, parseBoolean } = require('./helpers');
|
||||
// No helpers needed for this migration
|
||||
|
||||
/**
|
||||
* Add restore_runs table for tracking restore operations
|
||||
@@ -30,9 +30,9 @@ exports.up = async function(knex) {
|
||||
table.string('pre_restore_backup_path', 500); // Path to pre-restore safety backup
|
||||
|
||||
// Flags
|
||||
table.boolean('is_dry_run').defaultTo(formatBoolean(false));
|
||||
table.boolean('was_rollback_attempted').defaultTo(formatBoolean(false));
|
||||
table.boolean('was_successful').defaultTo(formatBoolean(false));
|
||||
table.boolean('is_dry_run').defaultTo(false);
|
||||
table.boolean('was_rollback_attempted').defaultTo(false);
|
||||
table.boolean('was_successful').defaultTo(false);
|
||||
|
||||
// Operator information
|
||||
table.string('operator_type', 50).defaultTo('manual'); // manual, scheduled, api
|
||||
@@ -59,7 +59,7 @@ exports.up = async function(knex) {
|
||||
|
||||
table.bigInteger('file_size');
|
||||
table.string('checksum', 64);
|
||||
table.boolean('checksum_verified').defaultTo(formatBoolean(false));
|
||||
table.boolean('checksum_verified').defaultTo(false);
|
||||
|
||||
table.text('error_message');
|
||||
table.timestamp('started_at');
|
||||
@@ -92,51 +92,39 @@ exports.up = async function(knex) {
|
||||
await knex('app_settings').insert([
|
||||
{
|
||||
setting_key: 'restore_allow_force',
|
||||
setting_value: formatBoolean(false),
|
||||
setting_value: JSON.stringify(false),
|
||||
setting_type: 'restore',
|
||||
description: 'Allow force restore with warnings',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Allow force restore with warnings'
|
||||
},
|
||||
{
|
||||
setting_key: 'restore_require_pre_backup',
|
||||
setting_value: formatBoolean(true),
|
||||
setting_value: JSON.stringify(true),
|
||||
setting_type: 'restore',
|
||||
description: 'Require pre-restore backup',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Require pre-restore backup'
|
||||
},
|
||||
{
|
||||
setting_key: 'restore_max_file_size_mb',
|
||||
setting_value: '5000',
|
||||
setting_type: 'restore',
|
||||
description: 'Maximum file size for restore (MB)',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Maximum file size for restore (MB)'
|
||||
},
|
||||
{
|
||||
setting_key: 'restore_verify_checksums',
|
||||
setting_value: formatBoolean(true),
|
||||
setting_value: JSON.stringify(true),
|
||||
setting_type: 'restore',
|
||||
description: 'Verify file checksums during restore',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Verify file checksums during restore'
|
||||
},
|
||||
{
|
||||
setting_key: 'restore_email_on_completion',
|
||||
setting_value: formatBoolean(true),
|
||||
setting_value: JSON.stringify(true),
|
||||
setting_type: 'restore',
|
||||
description: 'Send email on restore completion',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Send email on restore completion'
|
||||
},
|
||||
{
|
||||
setting_key: 'restore_retention_days',
|
||||
setting_value: '30',
|
||||
setting_type: 'restore',
|
||||
description: 'Days to retain restore history',
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
description: 'Days to retain restore history'
|
||||
}
|
||||
]);
|
||||
|
||||
@@ -159,9 +147,7 @@ exports.up = async function(knex) {
|
||||
|
||||
<p>Please verify that all systems are functioning correctly after the restore.</p>`,
|
||||
language: 'en',
|
||||
is_active: formatBoolean(true),
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
is_active: true
|
||||
},
|
||||
{
|
||||
name: 'restore_failed',
|
||||
@@ -180,9 +166,7 @@ exports.up = async function(knex) {
|
||||
|
||||
<p><strong>Important:</strong> If a pre-restore backup was created, it may be used for recovery.</p>`,
|
||||
language: 'en',
|
||||
is_active: formatBoolean(true),
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
is_active: true
|
||||
},
|
||||
{
|
||||
name: 'restore_completed',
|
||||
@@ -201,9 +185,7 @@ exports.up = async function(knex) {
|
||||
|
||||
<p>Bitte überprüfen Sie, ob alle Systeme nach der Wiederherstellung ordnungsgemäß funktionieren.</p>`,
|
||||
language: 'de',
|
||||
is_active: formatBoolean(true),
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
is_active: true
|
||||
},
|
||||
{
|
||||
name: 'restore_failed',
|
||||
@@ -222,9 +204,7 @@ exports.up = async function(knex) {
|
||||
|
||||
<p><strong>Wichtig:</strong> Falls ein Backup vor der Wiederherstellung erstellt wurde, kann es zur Wiederherstellung verwendet werden.</p>`,
|
||||
language: 'de',
|
||||
is_active: formatBoolean(true),
|
||||
created_at: knex.fn.now(),
|
||||
updated_at: knex.fn.now()
|
||||
is_active: true
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const { formatBoolean } = require('./helpers');
|
||||
// No helpers needed for boolean values
|
||||
|
||||
exports.up = async function(knex) {
|
||||
console.log('Adding gallery feedback tables...');
|
||||
@@ -87,8 +87,7 @@ exports.up = async function(knex) {
|
||||
{
|
||||
setting_key: 'feedback_notification_email',
|
||||
setting_value: JSON.stringify(''),
|
||||
setting_type: 'feedback',
|
||||
updated_at: new Date()
|
||||
setting_type: 'feedback'
|
||||
},
|
||||
{
|
||||
setting_key: 'feedback_rate_limits',
|
||||
@@ -97,8 +96,7 @@ exports.up = async function(knex) {
|
||||
comment: { max: 20, window: 3600 }, // 20 comments per hour
|
||||
like: { max: 200, window: 3600 } // 200 likes per hour
|
||||
}),
|
||||
setting_type: 'feedback',
|
||||
updated_at: new Date()
|
||||
setting_type: 'feedback'
|
||||
}
|
||||
]);
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "picpeak-backend",
|
||||
"version": "1.0.79",
|
||||
"version": "1.0.81",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "picpeak-backend",
|
||||
"version": "1.0.79",
|
||||
"version": "1.0.81",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.850.0",
|
||||
"@aws-sdk/lib-storage": "^3.850.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "picpeak-backend",
|
||||
"version": "1.0.79",
|
||||
"version": "1.0.81",
|
||||
"description": "Backend for PicPeak event photo sharing platform",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user