github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/design/0-inv/20220414-slack-wdocs/slack-structured-syntax.md (about) 1 # Enums 2 3 ```javascript 4 enum ChannelKinds (Public, Private) 5 ``` 6 7 # Workspaces 8 9 ```javascript 10 class sys.ACL extends CDoc{} 11 class sys.LinkedUser extends CDoc{} 12 13 class sys.Workspace{ 14 15 // CDoc's 16 17 ACL: []sys.ACL 18 Users: []sys.LinkedUser 19 Devices: []sys.LinkedDevice 20 Groups: []sys.Group 21 OrdersAsCDoc: []Order 22 23 } 24 25 class Channel extends sys.Workspace { 26 27 // WDoc 28 ChannelMessages: []ChannelMessage 29 30 @Required 31 kind: ChannelKinds 32 } 33 ``` 34 35 # Docs 36 37 ```javascript 38 doc ChannelMessage /*extends WDoc*/ { 39 message: Message 40 replies: []ThreadMessage 41 tag(slack, message, something) 42 } 43 ``` 44 45 # Structs 46 47 ```javascript 48 49 struct Message { 50 text: string 51 typed_at: TimeStampMs 52 53 @unique(sys.Creator, Kind) 54 reactions: []MessageReaction 55 } 56 57 struct MessageReaction { 58 kind: ReactionKind 59 time: TimeStampMs 60 61 tag(slack, message, something) 62 } 63 64 65 66 ``` 67 68 # Commands 69 70 ```javascript 71 func MakeOrder(order Order) 72 73 ``` 74 75 # Views 76 77 ```javascript 78 view ChannelMessageView (ChannelMessages) { 79 text: message.Text 80 message_date_time: sys.created 81 author: sys.creator.Name 82 reactions: select Kind, count(*) from MessageReaction group by Kind 83 top_reactors: select last 10 user, insertDatetime from MessageReaction 84 85 // top_reactors_ivv: 86 // fields:[user, insert_datetime] 87 // top: 10 88 // from: MessageReaction 89 } 90 ``` 91 92 # Organizations 93 94 - Workspaces can be linked to Organizations 95 - Each workspace can be linked to a few Organizations (Since channel in Slack can be shared) 96 - One Organization is the Workspace Owner 97 - Organization - built-in entity????