mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
SMQ-2873 - Switch to TIMESTAMPZ in Postgres (#3015)
Signed-off-by: nyagamunene <stevenyaga2014@gmail.com>
This commit is contained in:
+5
-5
@@ -413,12 +413,12 @@ CREATE TABLE IF NOT EXISTS pats (
|
||||
user_id VARCHAR(36),
|
||||
description TEXT,
|
||||
secret TEXT,
|
||||
issued_at TIMESTAMP,
|
||||
expires_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
issued_at TIMESTAMPTZ,
|
||||
expires_at TIMESTAMPTZ,
|
||||
updated_at TIMESTAMPTZ,
|
||||
revoked BOOLEAN,
|
||||
revoked_at TIMESTAMP,
|
||||
last_used_at TIMESTAMP,
|
||||
revoked_at TIMESTAMPTZ,
|
||||
last_used_at TIMESTAMPTZ,
|
||||
UNIQUE (id, name, secret)
|
||||
)
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ func (bh *bcryptHasher) Compare(plain, hashed string) error {
|
||||
}
|
||||
|
||||
func generateSalt(length int) ([]byte, error) {
|
||||
rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
rand.New(rand.NewSource(time.Now().UTC().UnixNano()))
|
||||
salt := make([]byte, length)
|
||||
_, err := rand.Read(salt)
|
||||
if err != nil {
|
||||
|
||||
@@ -104,6 +104,27 @@ func Migration() *migrate.MemoryMigrationSource {
|
||||
`DROP TABLE IF EXISTS pat_scopes;`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "auth_6",
|
||||
Up: []string{
|
||||
`ALTER TABLE keys ALTER COLUMN issued_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE keys ALTER COLUMN expires_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE pats ALTER COLUMN issued_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE pats ALTER COLUMN expires_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE pats ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE pats ALTER COLUMN revoked_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE pats ALTER COLUMN last_used_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE keys ALTER COLUMN issued_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE keys ALTER COLUMN expires_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE pats ALTER COLUMN issued_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE pats ALTER COLUMN expires_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE pats ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE pats ALTER COLUMN revoked_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE pats ALTER COLUMN last_used_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1218,7 +1218,7 @@ func toChannel(ch dbChannel) (channels.Channel, error) {
|
||||
}
|
||||
var updatedAt time.Time
|
||||
if ch.UpdatedAt.Valid {
|
||||
updatedAt = ch.UpdatedAt.Time
|
||||
updatedAt = ch.UpdatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
connTypes := []connections.ConnType{}
|
||||
@@ -1246,7 +1246,7 @@ func toChannel(ch dbChannel) (channels.Channel, error) {
|
||||
ParentGroup: toString(ch.ParentGroup),
|
||||
Metadata: metadata,
|
||||
CreatedBy: createdBy,
|
||||
CreatedAt: ch.CreatedAt,
|
||||
CreatedAt: ch.CreatedAt.UTC(),
|
||||
UpdatedAt: updatedAt,
|
||||
UpdatedBy: updatedBy,
|
||||
Status: ch.Status,
|
||||
|
||||
@@ -73,6 +73,17 @@ func Migration() (*migrate.MemoryMigrationSource, error) {
|
||||
`ALTER TABLE channels DROP COLUMN route;`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "channels_04",
|
||||
Up: []string{
|
||||
`ALTER TABLE channels ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE channels ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE channels ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE channels ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
channelsMigration.Migrations = append(channelsMigration.Migrations, rolesMigration.Migrations...)
|
||||
|
||||
@@ -1093,7 +1093,7 @@ func ToClient(t DBClient) (clients.Client, error) {
|
||||
|
||||
var updatedAt time.Time
|
||||
if t.UpdatedAt.Valid {
|
||||
updatedAt = t.UpdatedAt.Time
|
||||
updatedAt = t.UpdatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
var connTypes []connections.ConnType
|
||||
@@ -1123,7 +1123,7 @@ func ToClient(t DBClient) (clients.Client, error) {
|
||||
Secret: t.Secret,
|
||||
},
|
||||
Metadata: metadata,
|
||||
CreatedAt: t.CreatedAt,
|
||||
CreatedAt: t.CreatedAt.UTC(),
|
||||
UpdatedAt: updatedAt,
|
||||
UpdatedBy: updatedBy,
|
||||
Status: t.Status,
|
||||
|
||||
@@ -65,6 +65,17 @@ func Migration() (*migrate.MemoryMigrationSource, error) {
|
||||
`ALTER TABLE clients ADD CONSTRAINT clients_domain_id_name_key UNIQUE (domain_id, name)`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "clients_03",
|
||||
Up: []string{
|
||||
`ALTER TABLE clients ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE clients ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE clients ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE clients ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -612,7 +612,7 @@ func toDomain(d dbDomain) (domains.Domain, error) {
|
||||
}
|
||||
var updatedAt time.Time
|
||||
if d.UpdatedAt.Valid {
|
||||
updatedAt = d.UpdatedAt.Time
|
||||
updatedAt = d.UpdatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
var mra []roles.MemberRoleActions
|
||||
@@ -633,7 +633,7 @@ func toDomain(d dbDomain) (domains.Domain, error) {
|
||||
Actions: d.Actions,
|
||||
Status: d.Status,
|
||||
CreatedBy: d.CreatedBy,
|
||||
CreatedAt: d.CreatedAt,
|
||||
CreatedAt: d.CreatedAt.UTC(),
|
||||
UpdatedBy: updatedBy,
|
||||
UpdatedAt: updatedAt,
|
||||
MemberID: d.MemberID,
|
||||
|
||||
@@ -70,6 +70,25 @@ func Migration() (*migrate.MemoryMigrationSource, error) {
|
||||
`ALTER TABLE domains RENAME COLUMN route TO alias;`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "domain_4",
|
||||
Up: []string{
|
||||
`ALTER TABLE domains ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE domains ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN confirmed_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN rejected_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE domains ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE domains ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN confirmed_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE invitations ALTER COLUMN rejected_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -243,10 +243,10 @@ func toInvitation(dbinv dbInvitation) domains.Invitation {
|
||||
updatedAt = dbinv.UpdatedAt.Time
|
||||
}
|
||||
if dbinv.ConfirmedAt.Valid {
|
||||
confirmedAt = dbinv.ConfirmedAt.Time
|
||||
confirmedAt = dbinv.ConfirmedAt.Time.UTC()
|
||||
}
|
||||
if dbinv.RejectedAt.Valid {
|
||||
rejectedAt = dbinv.RejectedAt.Time
|
||||
rejectedAt = dbinv.RejectedAt.Time.UTC()
|
||||
}
|
||||
|
||||
return domains.Invitation{
|
||||
@@ -256,7 +256,7 @@ func toInvitation(dbinv dbInvitation) domains.Invitation {
|
||||
DomainName: toString(dbinv.DomainName),
|
||||
RoleID: dbinv.RoleID,
|
||||
RoleName: toString(dbinv.RoleName),
|
||||
CreatedAt: dbinv.CreatedAt,
|
||||
CreatedAt: dbinv.CreatedAt.UTC(),
|
||||
UpdatedAt: updatedAt,
|
||||
ConfirmedAt: confirmedAt,
|
||||
RejectedAt: rejectedAt,
|
||||
|
||||
@@ -1243,7 +1243,7 @@ func toGroup(g dbGroup) (groups.Group, error) {
|
||||
}
|
||||
var updatedAt time.Time
|
||||
if g.UpdatedAt.Valid {
|
||||
updatedAt = g.UpdatedAt.Time
|
||||
updatedAt = g.UpdatedAt.Time.UTC()
|
||||
}
|
||||
var updatedBy string
|
||||
if g.UpdatedBy != nil {
|
||||
@@ -1269,7 +1269,7 @@ func toGroup(g dbGroup) (groups.Group, error) {
|
||||
Path: g.Path,
|
||||
UpdatedAt: updatedAt,
|
||||
UpdatedBy: updatedBy,
|
||||
CreatedAt: g.CreatedAt,
|
||||
CreatedAt: g.CreatedAt.UTC(),
|
||||
Status: g.Status,
|
||||
RoleID: g.RoleID,
|
||||
RoleName: g.RoleName,
|
||||
|
||||
@@ -73,6 +73,17 @@ func Migration() (*migrate.MemoryMigrationSource, error) {
|
||||
`ALTER TABLE groups DROP COLUMN tags`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "groups_05",
|
||||
Up: []string{
|
||||
`ALTER TABLE groups ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE groups ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE groups ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE groups ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,19 @@ func Migration() *migrate.MemoryMigrationSource {
|
||||
`DROP TABLE IF EXISTS journal`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "journal_02",
|
||||
Up: []string{
|
||||
`ALTER TABLE journal ALTER COLUMN occurred_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE clients_telemetry ALTER COLUMN first_seen TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE clients_telemetry ALTER COLUMN last_seen TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE journal ALTER COLUMN occurred_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE clients_telemetry ALTER COLUMN first_seen TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE clients_telemetry ALTER COLUMN last_seen TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ func toJournal(dbj dbJournal) (journal.Journal, error) {
|
||||
return journal.Journal{
|
||||
Operation: dbj.Operation,
|
||||
Domain: dbj.Domain,
|
||||
OccurredAt: dbj.OccurredAt,
|
||||
OccurredAt: dbj.OccurredAt.UTC(),
|
||||
Attributes: attributes,
|
||||
Metadata: metadata,
|
||||
}, nil
|
||||
|
||||
@@ -55,6 +55,17 @@ func Migration(rolesTableNamePrefix, entityTableName, entityIDColumnName string)
|
||||
fmt.Sprintf(`DROP TABLE IF EXISTS %s_role_members`, rolesTableNamePrefix),
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: fmt.Sprintf("%s_roles_2", rolesTableNamePrefix),
|
||||
Up: []string{
|
||||
fmt.Sprintf(`ALTER TABLE %s_roles ALTER COLUMN created_at TYPE TIMESTAMPTZ;`, rolesTableNamePrefix),
|
||||
fmt.Sprintf(`ALTER TABLE %s_roles ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`, rolesTableNamePrefix),
|
||||
},
|
||||
Down: []string{
|
||||
fmt.Sprintf(`ALTER TABLE %s_roles ALTER COLUMN created_at TYPE TIMESTAMP;`, rolesTableNamePrefix),
|
||||
fmt.Sprintf(`ALTER TABLE %s_roles ALTER COLUMN updated_at TYPE TIMESTAMP;`, rolesTableNamePrefix),
|
||||
},
|
||||
},
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ func toRole(r dbRole) roles.Role {
|
||||
}
|
||||
var createdAt time.Time
|
||||
if r.CreatedAt.Valid {
|
||||
createdAt = r.CreatedAt.Time
|
||||
createdAt = r.CreatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
var updatedBy string
|
||||
@@ -170,7 +170,7 @@ func toRole(r dbRole) roles.Role {
|
||||
}
|
||||
var updatedAt time.Time
|
||||
if r.UpdatedAt.Valid {
|
||||
updatedAt = r.UpdatedAt.Time
|
||||
updatedAt = r.UpdatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
return roles.Role{
|
||||
|
||||
@@ -86,6 +86,17 @@ func Migration() *migrate.MemoryMigrationSource {
|
||||
`ALTER TABLE users ALTER COLUMN last_name SET DEFAULT ''`,
|
||||
},
|
||||
},
|
||||
{
|
||||
Id: "clients_06",
|
||||
Up: []string{
|
||||
`ALTER TABLE users ALTER COLUMN created_at TYPE TIMESTAMPTZ;`,
|
||||
`ALTER TABLE users ALTER COLUMN updated_at TYPE TIMESTAMPTZ;`,
|
||||
},
|
||||
Down: []string{
|
||||
`ALTER TABLE users ALTER COLUMN created_at TYPE TIMESTAMP;`,
|
||||
`ALTER TABLE users ALTER COLUMN updated_at TYPE TIMESTAMP;`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -554,7 +554,7 @@ func ToUser(dbu DBUser) (users.User, error) {
|
||||
}
|
||||
var updatedAt time.Time
|
||||
if dbu.UpdatedAt.Valid {
|
||||
updatedAt = dbu.UpdatedAt.Time
|
||||
updatedAt = dbu.UpdatedAt.Time.UTC()
|
||||
}
|
||||
|
||||
user := users.User{
|
||||
@@ -567,7 +567,7 @@ func ToUser(dbu DBUser) (users.User, error) {
|
||||
},
|
||||
Email: dbu.Email,
|
||||
Metadata: metadata,
|
||||
CreatedAt: dbu.CreatedAt,
|
||||
CreatedAt: dbu.CreatedAt.UTC(),
|
||||
UpdatedAt: updatedAt,
|
||||
UpdatedBy: updatedBy,
|
||||
Status: dbu.Status,
|
||||
|
||||
Reference in New Issue
Block a user