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 }