mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-06 19:06:02 +03:00
Closed
opened 2026-02-05 10:35:53 +03:00 by OVERLORD
·
0 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
pull-request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#6574
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/BookStackApp/BookStack/pull/5800
Author: @ssddanbrown
Created: 9/15/2025
Status: ✅ Merged
Merged: 10/18/2025
Merged by: @ssddanbrown
Base:
development← Head:db_restructure📝 Commits (10+)
50b147cDB: Planned out new entity table format via migrations4e935f7DB: Created entity migration logicbc49db7DB: Added change of entity relation columns to suit new entities tablec767ddeDB: Got most view queries working for new stucturec60052bEntities: Started logic change to new structurebf09b42Entities: Been through repos to update for new formatb866deeEntities: Updated repos to act on refreshed clones5c2908eEntities: Updated model classes & relations for changes06ec914Entities: Changed from *Data to a common "contents" system4f21e54Entities: Moved entity description/covers to own non-model classes📊 Changes
120 files changed (+1598 additions, -595 deletions)
View changed files
📝
app/Access/Mfa/MfaSession.php(+0 -1)📝
app/Console/Commands/UpdateUrlCommand.php(+2 -4)📝
app/Entities/Controllers/BookApiController.php(+4 -3)📝
app/Entities/Controllers/BookshelfApiController.php(+4 -3)📝
app/Entities/Controllers/BookshelfController.php(+1 -0)📝
app/Entities/Controllers/ChapterApiController.php(+2 -2)📝
app/Entities/Controllers/ChapterController.php(+1 -1)📝
app/Entities/Controllers/PageController.php(+1 -0)➕
app/Entities/EntityExistsRule.php(+20 -0)📝
app/Entities/Models/Book.php(+33 -58)📝
app/Entities/Models/BookChild.php(+2 -3)📝
app/Entities/Models/Bookshelf.php(+20 -54)📝
app/Entities/Models/Chapter.php(+12 -17)➕
app/Entities/Models/ContainerTrait.php(+26 -0)➖
app/Entities/Models/CoverImageInterface.php(+0 -18)📝
app/Entities/Models/Entity.php(+102 -9)➕
app/Entities/Models/EntityContainerData.php(+52 -0)➕
app/Entities/Models/EntityPageData.php(+25 -0)➕
app/Entities/Models/EntityQueryBuilder.php(+38 -0)➕
app/Entities/Models/EntityScope.php(+27 -0)...and 80 more files
📄 Description
This PR aims to merge the core entity types (books, chapters, pages, shelves) into one core table, with sub-tables for added data.
This moves things into three new tables:
entities- All items, containing most shared metadata.entity_container_data- The added data for container (non-page) items.entity_page_data- The page specific data.This is something I've wanted to do for a while.
These core structural items are often queried and used in the same locations, and joint with many of the same relations.
This alignment allows querying & fetching & joining across all items via one indexed table, instead of needing to run multiple queries.
This should bring a lot of query efficiency, while allowing things like properly pageable and ordered search results (compared to the sketchy non-predictable-length handling we have now due to separate query results being combined together).
This also takes the opportunity to perform some data cleaning, like changing
0relation Ids tonulls, switching tounsigned bigintfor entity ids.Code logic approach
Considerations
joint_permissionstable.Todo
Delete filtering at global scope level if possible? (Check single, query, and relation usage since scopes are used for all).🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.