go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/projects/chirp/pkg/model/graph.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package model
     9  
    10  import (
    11  	"time"
    12  
    13  	"go.charczuk.com/sdk/uuid"
    14  )
    15  
    16  // EdgeType is a constant for each "type" of graph edge.
    17  type EdgeType string
    18  
    19  // EdgeType values.
    20  const (
    21  	EdgeTypeFollow = "follow"
    22  	EdgeTypeBlock  = "block"
    23  	EdgeTypeMute   = "mute"
    24  )
    25  
    26  // Graph holds the following, mute and block relationships between users.
    27  type Graph struct {
    28  	UserID       uuid.UUID `db:"user_id,pk"`
    29  	TargetID     uuid.UUID `db:"target_id,pk"`
    30  	Type         string    `db:"type,pk"`
    31  	TimestampUTC time.Time `db:"timestamp_utc"`
    32  }
    33  
    34  // TableName returns the mapped table name.
    35  func (g Graph) TableName() string { return "graph" }