From de175da42dfb4489b809b132dcd9405cceb95199 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Fri, 10 Feb 2023 05:24:26 +0100 Subject: [PATCH] Put does InsertOrUpdate --- server/database/xorm.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/server/database/xorm.go b/server/database/xorm.go index 68ff18c..2a17a99 100644 --- a/server/database/xorm.go +++ b/server/database/xorm.go @@ -57,8 +57,23 @@ func (x xDB) Put(domain string, cert *certificate.Resource) error { return err } - _, err = x.engine.Insert(c) - return err + sess := x.engine.NewSession() + if err := sess.Begin(); err != nil { + return err + } + defer sess.Close() + + if exist, _ := sess.ID(c.Domain).Exist(); exist { + if _, err := sess.ID(c.Domain).Update(c); err != nil { + return err + } + } else { + if _, err = sess.Insert(c); err != nil { + return err + } + } + + return sess.Commit() } func (x xDB) Get(domain string) (*certificate.Resource, error) {