kshshkim / yetanotherwikiengine Goto Github PK
View Code? Open in Web Editor NEW위키엔진 프로젝트
위키엔진 프로젝트
현재 구현 방식
WikiPage
에 대한 쿼리와 WikiReference
에 대한 쿼리를 한 번 씩, 총 두 번의 쿼리를 통해 취합하여 반환함.
wiki_reference
테이블을 주 테이블으로, wiki_reference.title
과 wiki_page.title
을 join
wiki_page.title
목록을 반환함. (wiki_page
가 null
이거나 is_active
가 false
면 유효하지 않음.)WikiPage
쿼리가 WikiReference
의 구현 내용에 강하게 의존함. (현재 참조 정보를 WikiReference
에서 불러와야함.)WikiReference
정보를 사용하지 않고, FE 단에서 내부 링크의 제목을 파싱하여 list 형태로 쿼리해야함.
select wiki_page.title from wiki_page where wiki_page.title in (?, ?, ?, ...) and wiki_page.is_active=true
같은 쿼리를 생각해볼수 있음.문서 '생성'의 의미를 보다 명확히 구분할 필요가 있음.
WikiPageCreatedEvent
이벤트는 insert
쿼리가 수행되는 상황, 즉, WikiPage
엔티티가 DB에 영속화 되는 상황에 발행됨. 그러나, 위키 문서의 특성상 Created
된 문서일지라도 active
한 문서가 아닐 수 있음.(생성 이후, EditCommit
이 이루어진 상황에서야 active
한 문서가 됨.)WikiPageCreatedEvent
를 권한 엔티티 생성 트리거로 활용되었기 때문에 문제가 없었으나, 문서 제목 존재 판정 기능에 함께 사용하기 시작하면서 의미 혼동이 발생함.WikiPageActivatedEvent
를 새로 정의하고, 관련 기능에서 WikiPageCreatedEvent
대신 구독하도록 수정해야함.문서, 틀, 분류, 파일 등 네임스페이스.
파일: 어쩌고.png
형식의 제목을 파싱하여 Namespace.FILE
, 어쩌고.png
형태로 분리하는 파서.
파일
)는 프로퍼티로 따로 지정해줄 수 있어야함.File: 어쩌고.png
로 변환해도 동일한 결과를 내야함.)소유자 그룹 - 그룹 역할
기반 체계에서, 단순 역할
기반 체계로 개편.배경
AuthorityProfile
(행위자 권한 프로필)이 (권한 그룹, 권한 그룹 역할) 쌍으로 이루어진 GrantedGroupAuthority
를 여럿 가짐.ResourcePermission
은 자원 id
와 소유자 그룹
, 개별 권한 규칙
을 가짐.
Permission
정보를 확인해야함.GrantedGroupAuthority
를 모두 확인하여, 하나라도 만족되는 권한이 있으면 pass변경방식
GrantedGroupAuthority
대신 GrantedAuthority
기대 효과
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.