Source

Модель предназначена для отслеживания источников, через которые пользователи попадают на сервис.
Она может содержать информацию о маркетинговых метках, реферальных источниках, промокодах и другие связанные данные.

Node.JS (sequelize)

const { DataTypes, Sequelize, UUIDV4 } = require('sequelize');
const sequelize = new Sequelize(/* ... */);

const Source = sequelize.define('Source', {
  id: {
    type: DataTypes.UUID,
    defaultValue: UUIDV4,
    primaryKey: true
  },
  name: {
    type: DataTypes.STRING,                     // внутреннее название
    allowNull: false
  },
  tags: DataTypes.ARRAY(DataTypes.STRING),      // внутренние теги
  description: DataTypes.TEXT,                  // внутреннее описание
  utm: DataTypes.STRING,                        // [метрика] идентификатор utm-метки
  referrers: DataTypes.ARRAY(DataTypes.STRING), // [метрика] массив доменов для referrers
  promo: DataTypes.STRING,                      // [метрика] промокод при регистрации
  extra: DataTypes.JSON,                        // Любые дополнительные данные, связанные с источником
});

Go (GORM)

import (
    "github.com/google/uuid"
    "gorm.io/gorm"
)

type Source struct {
    ID          uuid.UUID `gorm:"type:uuid;primary_key;default:uuid_generate_v4()"`
    Name        string    `gorm:"type:string;not null"`
    Tags        []string  `gorm:"type:string[]"`
    Description *string   `gorm:"type:text"`
    Utm         *string   `gorm:"type:string"`
    Referrers   []string  `gorm:"type:string[]"`
    Promo       *string   `gorm:"type:string"`
    Extra       *string   `gorm:"type:json"`
}