db

package
v0.0.0-...-58eafa5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2018 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

device

diary

forum

mail

post

Package db содержит необходимое API для работы с базой данных PostgreSQL с использованием библиотеки gorm

resource

school

student

user

Index

Constants

View Source
const (
	IOS
	Android
)

Типы систем устройств

View Source
const (
	MarksNotificationAll
	MarksNotificationImportant
	MarksNotificationDisabled
)

Типы оповещений об оценках

View Source
const (
	TasksNotificationAll
	TasksNotificationHome
	TasksNotificationDisabled
)

Типы оповещений о заданиях

View Source
const (
	StatusTaskNew
	StatusTaskSeen
	StatusTaskDone
)

Статусы заданий

Variables

This section is empty.

Functions

This section is empty.

Types

type Database

type Database struct {
	SchoolServerDB *gorm.DB
	Logger         *log.Logger
}

Database struct представляет абстрактную структуру базы данных

func NewDatabase

func NewDatabase(logger *log.Logger, config *cp.Config) (*Database, error)

NewDatabase создает Database и возвращает указатель на неё

func (*Database) CheckPassword

func (db *Database) CheckPassword(userName string, schoolID int, pass string) (bool, error)

CheckPassword сверяет пароль с хранящимся в БД

func (*Database) Close

func (db *Database) Close() error

Close закрывает БД

func (*Database) GetSchoolPermission

func (db *Database) GetSchoolPermission(id int) (bool, error)

GetSchoolPermission проверяет разрешение школы на работу с сервисом

func (*Database) GetSchools

func (db *Database) GetSchools() ([]School, error)

GetSchools возвращает информацию о всех поддерживаемых школах

func (*Database) GetStudentClassID

func (db *Database) GetStudentClassID(userName string, schoolID int, studentID int) (string, error)

GetStudentClassID получает classID ученика

func (*Database) GetUserAuthData

func (db *Database) GetUserAuthData(userName string, schoolID int) (*cp.School, error)

GetUserAuthData возвращает данные для повторной удаленной авторизации пользователя

func (*Database) GetUserPermission

func (db *Database) GetUserPermission(userName string, schoolID int) (bool, error)

GetUserPermission проверяет разрешение пользователя на работу с сервисом

func (*Database) GetUserProfile

func (db *Database) GetUserProfile(userName string, schoolID int) (*dt.Profile, error)

GetUserProfile возвращает профиль пользователя

func (*Database) GetUserUID

func (db *Database) GetUserUID(userName string, schoolID int) (string, error)

GetUserUID получает UserUID пользователя

func (*Database) MarkMailRead

func (db *Database) MarkMailRead(userName string, schoolID int, section int, ID int) error

MarkMailRead меняет статус письма на прочитанное

func (*Database) PseudoDeleteDevice

func (db *Database) PseudoDeleteDevice(userName string, schoolID int, token string, systemType int) error

PseudoDeleteDevice псевдоудаляет девайс пользователя

func (*Database) PseudoDeleteUser

func (db *Database) PseudoDeleteUser(userName string, schoolID int) error

PseudoDeleteUser псевдоудаляет пользователя

func (*Database) TaskMarkDone

func (db *Database) TaskMarkDone(userName string, schoolID int, AID, CID, TP int) error

TaskMarkDone меняет статус задания на "Выполненное"

func (*Database) TaskMarkSeen

func (db *Database) TaskMarkSeen(userName string, schoolID int, AID, CID, TP int) error

TaskMarkSeen меняет статус задания на "Просмотренное"

func (*Database) TaskMarkUndone

func (db *Database) TaskMarkUndone(userName string, schoolID int, AID, CID, TP int) error

TaskMarkUndone меняет статус задания на "Просмотренное"

func (*Database) UpdateLessons

func (db *Database) UpdateLessons(userName string, schoolID int, studentID int, week *dt.TimeTable) error

UpdateLessons добавляет в БД несуществующие уроки в расписании

func (*Database) UpdateMailStatuses

func (db *Database) UpdateMailStatuses(userName string, schoolID int, section int, emailsList *dt.EmailsList) (*getMailResponse, error)

UpdateMailStatuses добавляет в БД несуществующие сообщения почты и обновляет статусы

func (*Database) UpdatePosts

func (db *Database) UpdatePosts(userName string, schoolID int, ps *dt.Posts) error

UpdatePosts добавляет в БД несуществующие объявления и обновляет их статусы

func (*Database) UpdatePostsStatuses

func (db *Database) UpdatePostsStatuses(userName string, schoolID int, themeID int, topics *dt.ForumThemeMessages) error

UpdatePostsStatuses добавляет в БД несуществующие сообщения форума и обновляет статусы

func (*Database) UpdatePushSettings

func (db *Database) UpdatePushSettings(userName string, schoolID int, systemType int, token string, marks, tasks int, reports, schedule, mail, forum, resources bool) error

UpdatePushSettings обновляет настройки предпочтений устройства по поводу push уведомлений

func (*Database) UpdatePushTime

func (db *Database) UpdatePushTime(userName string, schoolID int, token string, systemType int, minutes int) error

UpdatePushTime обновляет время, до которого не беспокоить пользователя push-уведомлениями

func (*Database) UpdateTasksStatuses

func (db *Database) UpdateTasksStatuses(userName string, schoolID int, studentID int, week *dt.WeekSchoolMarks) error

UpdateTasksStatuses добавляет в БД несуществующие ДЗ и обновляет статусы заданий из пакета WeekSchoolMarks

func (*Database) UpdateTopicsStatuses

func (db *Database) UpdateTopicsStatuses(userName string, schoolID int, themes *dt.ForumThemesList) error

UpdateTopicsStatuses добавляет в БД несуществующие темы форума и обновляет статусы

func (*Database) UpdateUser

func (db *Database) UpdateUser(login string, passkey string, schoolID int, token string, systemType int, childrenMap map[string]dt.Student, profile *dt.Profile) error

UpdateUser обновляет данные о пользователе

type Day

type Day struct {
	gorm.Model
	StudentID uint     // parent id
	Date      string   `sql:"size:255"`
	Tasks     []Task   // has-many relation
	Lessons   []Lesson // has-many relation
}

Day struct представляет структуру дня с дз

type Device

type Device struct {
	gorm.Model
	UserID                uint       // parent id
	SystemType            int        // android/ios
	Token                 string     // unique device token (FCM)
	DoNotDisturbUntil     *time.Time // для push
	MarksNotification     int        `sql:"DEFAULT:1"`
	TasksNotification     int        `sql:"DEFAULT:1"`
	ReportsNotification   bool       `sql:"DEFAULT:true"`
	ScheduleNotification  bool       `sql:"DEFAULT:true"`
	MailNotification      bool       `sql:"DEFAULT:true"`
	ForumNotification     bool       `sql:"DEFAULT:true"`
	ResourcesNotification bool       `sql:"DEFAULT:true"`
	JustRegistered        bool       `sql:"DEFAULT:true"` // for not to ddos with pushes at first login
}

Device struct представляет структуру устройства, которое будет получать push-уведомления

type ForumPost

type ForumPost struct {
	gorm.Model
	ForumTopicID uint // parent id
	Date         string
	Author       string
	Message      string
	Unread       bool
}

ForumPost struct представляет структуру сообщения в теме на форуме

type ForumTopic

type ForumTopic struct {
	gorm.Model
	UserID      uint // parent id
	NetschoolID int
	Date        string
	Creator     string
	Title       string
	Unread      bool
	Answers     int
	Posts       []ForumPost // has-many relation
}

ForumTopic struct представляет структуру темы на форуме

type Lesson

type Lesson struct {
	gorm.Model
	DayID     uint // parent id
	Begin     string
	End       string
	Name      string
	Classroom string
}

Lesson struct представляет структуру урока в расписании

type Letter

type Letter struct {
	Date   string `json:"date"`
	ID     int    `json:"id"`
	Author string `json:"author"`
	Topic  string `json:"topic"`
	Unread bool   `json:"unread"`
}

Letter используется в getMailResponse

type MailMessage

type MailMessage struct {
	gorm.Model
	UserID      uint //  parent id
	NetschoolID int
	Date        string
	Author      string
	Topic       string
	Section     int
	Unread      bool
}

MailMessage struct представляет структуру сообщения на почте

type Post

type Post struct {
	gorm.Model
	UserID   uint // parent id
	Unread   bool
	Author   string
	Title    string
	Date     string
	Message  string
	File     string
	FileName string
}

Post struct представляет структуру объявления

type Resource

type Resource struct {
	gorm.Model
	OwnerID   uint   // parent id
	OwnerType string // parent polymorhic type
	Name      string
	Link      string
}

Resource struct представляет структуру школьного ресурса

type ResourceGroup

type ResourceGroup struct {
	gorm.Model
	SchoolID          uint // belongs-to relation
	Title             string
	Resources         []Resource         `gorm:"polymorphic:Owner;"`
	ResourceSubgroups []ResourceSubgroup // has-many relation
}

ResourceGroup struct представляет структуру группы ресурсов

type ResourceSubgroup

type ResourceSubgroup struct {
	gorm.Model
	ResourceGroupID uint
	Title           string
	Resources       []Resource `gorm:"polymorphic:Owner;"`
}

ResourceSubgroup struct представляет структуру подгруппы ресурсов

type School

type School struct {
	gorm.Model
	Name       string `sql:"size:255;unique"`
	Type       int    // тип netschool'а
	Initials   string `sql:"size:255"`
	Address    string `sql:"size:255;unique"`
	Permission bool   `sql:"DEFAULT:true"`
	Users      []User // has-many relation
}

School struct представляет структуру записи школы

type Student

type Student struct {
	gorm.Model
	UserID      uint   // parent id
	Name        string `sql:"size:255"`
	NetSchoolID int    // id ученика в системе NetSchool
	ClassID     string // id класса, в котором учится ученик
	Days        []Day  // has-many relation
}

Student struct представляет структуру ученика

type Task

type Task struct {
	gorm.Model
	DayID  uint // parent id
	CID    int
	AID    int
	TP     int
	Status int // новое\просмотренное\выполненное
	InTime bool
	Name   string // название предмета
	Title  string // тема
	Type   string
	Mark   string
	Weight string
	Author string
}

Task struct представляет структуру задания

type User

type User struct {
	gorm.Model
	SchoolID     uint // parent id
	UID          int
	Login        string        `sql:"size:255;index"`
	Password     string        `sql:"size:255"`
	Permission   bool          `sql:"DEFAULT:false"`
	FirstName    string        `sql:"size:255"`
	LastName     string        `sql:"size:255"`
	TrueLogin    string        `sql:"size:255"`
	Role         string        `sql:"size:255"`
	Year         string        `sql:"size:255"`
	Students     []Student     // has-many relation
	Devices      []Device      // has-many relation
	ForumTopics  []ForumTopic  // has-many relation
	MailMessages []MailMessage // has-many relation
	Posts        []Post        // has-many realtion
}

User struct представляет структуру записи пользователя

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL