From 4f6d75f9d8cf9b52f4d9dd783322093f8fc559df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Mon, 30 Jun 2025 16:55:39 -0400 Subject: [PATCH] add existence-checking functionality to models --- model.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/model.go b/model.go index 354b70a..749755c 100644 --- a/model.go +++ b/model.go @@ -40,6 +40,8 @@ type IModel interface { FindByID(id interface{}) (*Query, error) FindOne(query interface{}, options *options.FindOneOptionsBuilder) (*Query, error) FindPaged(query interface{}, page int64, perPage int64, options *options.FindOptionsBuilder) (*Query, error) + Exists(query interface{}) (bool, error) + ExistsID(id interface{}) (bool, error) Collection() *mongo.Collection getIdxs() []*mongo.IndexModel @@ -199,6 +201,16 @@ func (m *Model) Count(query interface{}, options *options.CountOptionsBuilder) ( return coll.CountDocuments(context.TODO(), query, options) } +func (m *Model) Exists(query interface{}) (bool, error) { + cnt, err := m.Count(query, options.Count()) + return cnt > 0, err +} + +func (m *Model) ExistsID(id interface{}) (bool, error) { + cnt, err := m.Count(bson.M{"_id": id}, options.Count()) + return cnt > 0, err +} + func createBase(d any) (reflect.Value, int, string) { var n string var ri *Model