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????