mirror of
https://github.com/outline/outline.git
synced 2025-12-20 18:19:43 -06:00
* Migrate Backlink model to generic Relationship model - Create new Relationship model with type field to support different relationship types - Add database migration to create relationships table and migrate existing backlinks - Update Backlink model to delegate to Relationship model for backward compatibility - Update BacklinksProcessor to use Relationship model with backlink type - Update API routes to use new Relationship model - Update test files to use Relationship model - Maintain backward compatibility through database view and model delegation Fixes #9366 * Update migration to rename table instead of creating new one - Rename existing backlinks table to relationships instead of creating new table - Add type column with default value to existing table - Update existing rows to have type='backlink' - Avoid expensive data migration by keeping existing data in place - Maintain backward compatibility with database view - Update rollback to reverse table rename and column addition This approach is much more efficient for large datasets as it avoids copying millions of rows. * Remove unnecessary UPDATE statement from migration The UPDATE statement is not needed since defaultValue automatically applies to existing rows when adding a column with a default value. Thanks @tommoor for catching this! * Wrap up migration in transaction - Wrap all migration operations in a transaction for atomicity - Add transaction parameter to all queryInterface calls - Follow the same pattern as other migrations in the codebase - Ensures all operations succeed or fail together * Remove Backlink class entirely and use Relationship everywhere - Delete server/models/Backlink.ts - Remove Backlink export from server/models/index.ts - Remove Backlink import and association from Document model - All functionality now uses Relationship model with RelationshipType.Backlink - Maintains same API through Relationship model methods - Cleaner architecture with single relationship model * Update documents.test.ts to use RelationshipType enum instead of string - Import RelationshipType from Relationship model - Replace type: "backlink" with type: RelationshipType.Backlink - Improves type safety and consistency with enum usage * Address code review feedback - Add transaction wrapper to migration down method for safer rollback - Remove unused findByTypeForUser method from Relationship model - Method wasn't used and won't work for all relationship types (e.g., user mentions) - Clean up code structure and improve safety * Restore imports --------- Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com> Co-authored-by: Tom Moor <tom@getoutline.com>
70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
export { default as ApiKey } from "./ApiKey";
|
|
|
|
export { default as Attachment } from "./Attachment";
|
|
|
|
export { default as AuthenticationProvider } from "./AuthenticationProvider";
|
|
|
|
export { default as Relationship } from "./Relationship";
|
|
|
|
export { default as Collection } from "./Collection";
|
|
|
|
export { default as GroupMembership } from "./GroupMembership";
|
|
|
|
export { default as UserMembership } from "./UserMembership";
|
|
|
|
export { default as Comment } from "./Comment";
|
|
|
|
export { default as Document } from "./Document";
|
|
|
|
export { default as Event } from "./Event";
|
|
|
|
export { default as FileOperation } from "./FileOperation";
|
|
|
|
export { default as Group } from "./Group";
|
|
|
|
export { default as GroupUser } from "./GroupUser";
|
|
|
|
export { default as Import } from "./Import";
|
|
|
|
export { default as ImportTask } from "./ImportTask";
|
|
|
|
export { default as Integration } from "./Integration";
|
|
|
|
export { default as IntegrationAuthentication } from "./IntegrationAuthentication";
|
|
|
|
export { default as Notification } from "./Notification";
|
|
|
|
export { default as OAuthAuthentication } from "./oauth/OAuthAuthentication";
|
|
|
|
export { default as OAuthAuthorizationCode } from "./oauth/OAuthAuthorizationCode";
|
|
|
|
export { default as OAuthClient } from "./oauth/OAuthClient";
|
|
|
|
export { default as Pin } from "./Pin";
|
|
|
|
export { default as Reaction } from "./Reaction";
|
|
|
|
export { default as Revision } from "./Revision";
|
|
|
|
export { default as SearchQuery } from "./SearchQuery";
|
|
|
|
export { default as Share } from "./Share";
|
|
|
|
export { default as Star } from "./Star";
|
|
|
|
export { default as Team } from "./Team";
|
|
|
|
export { default as TeamDomain } from "./TeamDomain";
|
|
|
|
export { default as User } from "./User";
|
|
|
|
export { default as UserAuthentication } from "./UserAuthentication";
|
|
|
|
export { default as View } from "./View";
|
|
|
|
export { default as WebhookSubscription } from "./WebhookSubscription";
|
|
|
|
export { default as WebhookDelivery } from "./WebhookDelivery";
|
|
|
|
export { default as Subscription } from "./Subscription";
|