From dea25091c0243c60ab6464ec54c8f6ad2a8cae20 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 6 Sep 2020 18:50:51 +0200 Subject: [PATCH] Add saved filters column --- pkg/migration/20200906184746.go | 51 ++++++++++++++++++++++++++++++++ pkg/models/saved_filters.go | 52 +++++++++++++++++++++++++++++++++ pkg/user/user.go | 2 +- 3 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 pkg/migration/20200906184746.go create mode 100644 pkg/models/saved_filters.go diff --git a/pkg/migration/20200906184746.go b/pkg/migration/20200906184746.go new file mode 100644 index 000000000..dfce801ea --- /dev/null +++ b/pkg/migration/20200906184746.go @@ -0,0 +1,51 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-2020 Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package migration + +import ( + "code.vikunja.io/api/pkg/models" + "src.techknowlogick.com/xormigrate" + "time" + "xorm.io/xorm" +) + +type savedFilters20200906184746 struct { + ID int64 `xorm:"autoincr not null unique pk" json:"id"` + Filters *models.TaskCollection `xorm:"JSON not null" json:"filters"` + Title string `xorm:"varchar(250) not null" json:"title" valid:"required,runelength(1|250)" minLength:"1" maxLength:"250"` + Description string `xorm:"longtext null" json:"description"` + OwnerID int64 `xorm:"int(11) not null INDEX" json:"-"` + Created time.Time `xorm:"created not null" json:"created"` + Updated time.Time `xorm:"updated not null" json:"updated"` +} + +func (savedFilters20200906184746) TableName() string { + return "saved_filters" +} + +func init() { + migrations = append(migrations, &xormigrate.Migration{ + ID: "20200906184746", + Description: "Add the saved filters column", + Migrate: func(tx *xorm.Engine) error { + return tx.Sync2(savedFilters20200906184746{}) + }, + Rollback: func(tx *xorm.Engine) error { + return nil + }, + }) +} diff --git a/pkg/models/saved_filters.go b/pkg/models/saved_filters.go new file mode 100644 index 000000000..c49d9a261 --- /dev/null +++ b/pkg/models/saved_filters.go @@ -0,0 +1,52 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-2020 Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package models + +import ( + "code.vikunja.io/api/pkg/user" + "code.vikunja.io/web" + "time" +) + +// SavedFilter represents a saved bunch of filters +type SavedFilter struct { + // The unique numeric id of this saved filter + ID int64 `xorm:"autoincr not null unique pk" json:"id"` + // The actual filters this filter contains + Filters *TaskCollection `xorm:"JSON not null" json:"filters"` + // The title of the filter. + Title string `xorm:"varchar(250) not null" json:"title" valid:"required,runelength(1|250)" minLength:"1" maxLength:"250"` + // The description of the filter + Description string `xorm:"longtext null" json:"description"` + OwnerID int64 `xorm:"int(11) not null INDEX" json:"-"` + + // The user who owns this filter + Owner *user.User `xorm:"-" json:"owner" valid:"-"` + + // A timestamp when this filter was created. You cannot change this value. + Created time.Time `xorm:"created not null" json:"created"` + // A timestamp when this filter was last updated. You cannot change this value. + Updated time.Time `xorm:"updated not null" json:"updated"` + + web.CRUDable `xorm:"-" json:"-"` + web.Rights `xorm:"-" json:"-"` +} + +// TableName returns a better table name for saved filters +func (s *SavedFilter) TableName() string { + return "saved_filters" +} diff --git a/pkg/user/user.go b/pkg/user/user.go index 7dec28f38..0478dc069 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -46,7 +46,7 @@ type User struct { // The unique, numeric id of this user. ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"` // The username of the user. Is always unique. - Username string `xorm:"varchar(250) not null unique" json:"username" valid:"length(1|250)" minLength:"3" maxLength:"250"` + Username string `xorm:"varchar(250) not null unique" json:"username" valid:"length(1|250)" minLength:"1" maxLength:"250"` Password string `xorm:"varchar(250) not null" json:"-"` // The user's email address. Email string `xorm:"varchar(250) null" json:"email,omitempty" valid:"email,length(0|250)" maxLength:"250"`