github.com/aacfactory/fns-contrib/databases/sql@v1.2.84/dac/audits.go (about)

     1  package dac
     2  
     3  import (
     4  	"github.com/aacfactory/fns/commons/uid"
     5  	"time"
     6  )
     7  
     8  func NewAuditCreation[Id ~string | ~int64](id Id) AuditCreation[Id] {
     9  	return AuditCreation[Id]{
    10  		CreateBY: id,
    11  		CreateAT: time.Now(),
    12  	}
    13  }
    14  
    15  type AuditCreation[Id ~string | ~int64] struct {
    16  	CreateBY Id        `column:"CREATE_BY,ACB" json:"createBY"`
    17  	CreateAT time.Time `column:"CREATE_AT,ACT" json:"createAT"`
    18  }
    19  
    20  func NewAuditModification[Id ~string | ~int64](id Id) AuditModification[Id] {
    21  	return AuditModification[Id]{
    22  		ModifyBY: id,
    23  		ModifyAT: time.Now(),
    24  	}
    25  }
    26  
    27  type AuditModification[Id ~string | ~int64] struct {
    28  	ModifyBY Id        `column:"MODIFY_BY,AMB" json:"modifyBY"`
    29  	ModifyAT time.Time `column:"MODIFY_AT,AMT" json:"modifyAT"`
    30  }
    31  
    32  func NewAuditDeletion[Id ~string | ~int64](id Id) AuditDeletion[Id] {
    33  	return AuditDeletion[Id]{
    34  		DeleteBY: id,
    35  		DeleteAT: time.Now(),
    36  	}
    37  }
    38  
    39  type AuditDeletion[Id ~string | ~int64] struct {
    40  	DeleteBY Id        `column:"DELETE_BY,ADB" json:"deleteBY"`
    41  	DeleteAT time.Time `column:"DELETE_AT,ADT" json:"deleteAT"`
    42  }
    43  
    44  type AuditVersion struct {
    45  	Version int64 `column:"VERSION,AOL" json:"version"`
    46  }
    47  
    48  type SID struct {
    49  	Id int64 `column:"ID,PK,INCR" json:"id"`
    50  }
    51  
    52  func NewUID() UID {
    53  	return UID{
    54  		Id: uid.UID(),
    55  	}
    56  }
    57  
    58  type UID struct {
    59  	Id string `column:"ID,PK" json:"id"`
    60  }
    61  
    62  func NewAudit(id string) Audit {
    63  	return Audit{
    64  		UID: UID{
    65  			Id: id,
    66  		},
    67  		AuditCreation:     AuditCreation[string]{},
    68  		AuditModification: AuditModification[string]{},
    69  		AuditDeletion:     AuditDeletion[string]{},
    70  		AuditVersion:      AuditVersion{},
    71  	}
    72  }
    73  
    74  type Audit struct {
    75  	UID
    76  	AuditCreation[string]
    77  	AuditModification[string]
    78  	AuditDeletion[string]
    79  	AuditVersion
    80  }
    81  
    82  func (audit Audit) WithCreation(id string) Audit {
    83  	audit.CreateBY = id
    84  	audit.CreateAT = time.Now()
    85  	return audit
    86  }
    87  
    88  func (audit Audit) WithModification(id string) Audit {
    89  	audit.ModifyBY = id
    90  	audit.ModifyAT = time.Now()
    91  	return audit
    92  }
    93  
    94  func (audit Audit) WithDeletion(id string) Audit {
    95  	audit.DeleteBY = id
    96  	audit.DeleteAT = time.Now()
    97  	return audit
    98  }
    99  
   100  func NewAuditWithoutDeletion(id string) AuditWithoutDeletion {
   101  	return AuditWithoutDeletion{
   102  		UID: UID{
   103  			Id: id,
   104  		},
   105  		AuditCreation:     AuditCreation[string]{},
   106  		AuditModification: AuditModification[string]{},
   107  		AuditVersion:      AuditVersion{},
   108  	}
   109  }
   110  
   111  type AuditWithoutDeletion struct {
   112  	UID
   113  	AuditCreation[string]
   114  	AuditModification[string]
   115  	AuditVersion
   116  }
   117  
   118  func (audit AuditWithoutDeletion) WithCreation(id string) AuditWithoutDeletion {
   119  	audit.CreateBY = id
   120  	audit.CreateAT = time.Now()
   121  	return audit
   122  }
   123  
   124  func (audit AuditWithoutDeletion) WithModification(id string) AuditWithoutDeletion {
   125  	audit.ModifyBY = id
   126  	audit.ModifyAT = time.Now()
   127  	return audit
   128  }
   129  
   130  func NewAuditWithoutModificationAndDeletion(id string) AuditWithoutModificationAndDeletion {
   131  	return AuditWithoutModificationAndDeletion{
   132  		UID: UID{
   133  			Id: id,
   134  		},
   135  		AuditCreation: AuditCreation[string]{},
   136  	}
   137  }
   138  
   139  type AuditWithoutModificationAndDeletion struct {
   140  	UID
   141  	AuditCreation[string]
   142  }
   143  
   144  func (audit AuditWithoutModificationAndDeletion) WithCreation(id string) AuditWithoutModificationAndDeletion {
   145  	audit.CreateBY = id
   146  	audit.CreateAT = time.Now()
   147  	return audit
   148  }
   149  
   150  func NewAuditWithIncrPk(id int64) IncrPkAudit {
   151  	return IncrPkAudit{
   152  		SID: SID{
   153  			Id: id,
   154  		},
   155  		AuditCreation:     AuditCreation[int64]{},
   156  		AuditModification: AuditModification[int64]{},
   157  		AuditDeletion:     AuditDeletion[int64]{},
   158  		AuditVersion:      AuditVersion{},
   159  	}
   160  }
   161  
   162  type IncrPkAudit struct {
   163  	SID
   164  	AuditCreation[int64]
   165  	AuditModification[int64]
   166  	AuditDeletion[int64]
   167  	AuditVersion
   168  }
   169  
   170  func (audit IncrPkAudit) WithCreation(id int64) IncrPkAudit {
   171  	audit.CreateBY = id
   172  	audit.CreateAT = time.Now()
   173  	return audit
   174  }
   175  
   176  func (audit IncrPkAudit) WithModification(id int64) IncrPkAudit {
   177  	audit.ModifyBY = id
   178  	audit.ModifyAT = time.Now()
   179  	return audit
   180  }
   181  
   182  func (audit IncrPkAudit) WithDeletion(id int64) IncrPkAudit {
   183  	audit.DeleteBY = id
   184  	audit.DeleteAT = time.Now()
   185  	return audit
   186  }
   187  
   188  func NewIncrPkAuditWithoutDeletion(id int64) IncrPkAuditWithoutDeletion {
   189  	return IncrPkAuditWithoutDeletion{
   190  		SID: SID{
   191  			Id: id,
   192  		},
   193  		AuditCreation:     AuditCreation[int64]{},
   194  		AuditModification: AuditModification[int64]{},
   195  		AuditVersion:      AuditVersion{},
   196  	}
   197  }
   198  
   199  type IncrPkAuditWithoutDeletion struct {
   200  	SID
   201  	AuditCreation[int64]
   202  	AuditModification[int64]
   203  	AuditVersion
   204  }
   205  
   206  func (audit IncrPkAuditWithoutDeletion) WithCreation(id int64) IncrPkAuditWithoutDeletion {
   207  	audit.CreateBY = id
   208  	audit.CreateAT = time.Now()
   209  	return audit
   210  }
   211  
   212  func (audit IncrPkAuditWithoutDeletion) WithModification(id int64) IncrPkAuditWithoutDeletion {
   213  	audit.ModifyBY = id
   214  	audit.ModifyAT = time.Now()
   215  	return audit
   216  }
   217  
   218  func NewIncrPkAuditWithoutModificationAndDeletion(id int64) IncrPkAuditWithoutModificationAndDeletion {
   219  	return IncrPkAuditWithoutModificationAndDeletion{
   220  		SID: SID{
   221  			Id: id,
   222  		},
   223  		AuditCreation: AuditCreation[int64]{},
   224  	}
   225  }
   226  
   227  type IncrPkAuditWithoutModificationAndDeletion struct {
   228  	SID
   229  	AuditCreation[int64]
   230  }
   231  
   232  func (audit IncrPkAuditWithoutModificationAndDeletion) WithCreation(id int64) IncrPkAuditWithoutModificationAndDeletion {
   233  	audit.CreateBY = id
   234  	audit.CreateAT = time.Now()
   235  	return audit
   236  }