Files
net/backend/services/WordPressDeployer.ts
2025-12-12 18:50:36 -05:00

55 lines
1.9 KiB
TypeScript

import { WordPressClient } from '../../frontend/src/lib/wordpress/WordPressClient.js';
// Note: In a real monorepo we'd share the client code, but for now I'll adapt or re-import.
// Actually, backend needs its own HTTP client logic usually, or we pass the WP Client from frontend?
// No, backend must run the ignition.
// I will create a backend-specific simple deployer.
export class WordPressDeployer {
private domain: string;
private auth: string; // Basic base64 info
constructor(domain: string, auth: string) {
this.domain = domain;
this.auth = auth;
}
async backupContent(postId: number, currentContent: string): Promise<boolean> {
// Post to meta 'legacy_content_reference'
// First get current metas or just update
// We'll try updating the post meta directly if API supports it, or use a custom endpoint/plugin.
// Standard WP REST API allows updating meta if registered.
// Fallback: Store in Directus 'legacy_backups' table?
// User spec says: "Store legacy... meta_key = 'legacy_content_reference'"
try {
await this.updatePost(postId, {
meta: {
legacy_content_reference: currentContent
}
});
return true;
} catch (e) {
console.error("Backup Failed", e);
return false;
}
}
async updatePost(postId: number, data: any): Promise<any> {
const url = `${this.domain}/wp-json/wp/v2/posts/${postId}`;
const res = await fetch(url, {
method: 'POST',
headers: {
'Authorization': `Basic ${this.auth}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
if (!res.ok) throw new Error(`WP Update Failed: ${res.statusText}`);
return await res.json();
}
// Future: Image upload logic
}