1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wycto-weigo

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

WeiGo

V0.3.0 версия (с базой данных: добавление, изменение, удаление и запрос)

Go-фреймворк — WeiGo [weigo]

|project #проектный каталог

|----app #каталог приложения

|----config #каталог конфигурации

|----route #каталог маршрута

|----weigo #каталог фреймворка

|----go.mod #файл проекта go.mod

|----main.go #стартовый файл проекта

Особенности:

MVC-режим, M — модель (слой данных), V — представление (слой страницы), C — контроллер (запрос и ответ).

Использование:

Конфигурация

Вся конфигурация находится в одном файле JSON, формат JSON;

App: это конфигурация проекта;

Log: конфигурация журнала;

DB: конфигурация базы данных.

{
   "App": {
      "Debug": true
   },
   "Log": {
      "SqlInfo": "console"
   },
   "DB": {
      "Type": "mysql",
      "Hostname": "127.0.0.1",
      "Port": "3306",
      "Database": "weigo",
      "Charset": "utf8mb4",
      "Username": "root",
      "Password": "root",
      "Prefix": "wei_"
   }
}

Маршрут:

В route.go в каталоге route зарегистрируйте маршрут:

weigo.Router("/", &controller.IndexController{})
weigo.Router("/user/", &controller.UserController{})

Первый параметр:

Путь доступа,

user — это имя контроллера, соответствующее файлу app/controller/UserController.go и структуре UserController внутри него;

Эта структура будет иметь множество методов, и имена методов не нужно определять в маршруте, они будут автоматически сопоставляться: например, 127.0.0.1:9099/user/userinfo будет обращаться к методу UserInfo структуры UserController. Все маршруты строчные.

Второй параметр:

Тип переменной контроллера.

Контроллер:

Контроллеру необходимо наследовать от контроллера фреймворка:

type UserController struct {
    weigo.Controller
}

Представление:

Внутри метода структуры контроллера, то есть внутри метода структуры:

c.Display("")

Если параметр пуст, используйте файл app/view/имя_контроллера/имя_метода.html, иначе используйте указанный шаблон.

Присвойте значение переменной:

c.Assign("name","唯一")

C — текущий контроллер.

Используйте шаблон HTML:

<p>{{.name}}</p>

Модель:

Модель пользователя: Путь: app/model/user.go Правила кода: Одна модель соответствует одной таблице данных, принадлежит одному модулю;

Одна модель может иметь только одну структуру, которая является структурой этой модели, с тем же именем;

Методы, определённые в структуре модели, являются методами этой структуры, без других функций;

Если метод модели должен получить данные из базы данных, используйте db для получения:

rows, errorStr := weigo.DataBase.Table("cto_controller").SetFields("name,id").GetAll()

Операции с базой данных, поддержка цепных операций

rows, errorStr := weigo.DataBase.Table("cto_controller").SetFields("name,id").GetAll()

Перед цепными операциями сначала получите соединение с базой данных: weigo.DataBase

Цепные операции: сначала укажите таблицу данных, два способа: weigo.DataBase.Table("wei_user")

weigo.DataBase.Name("user")

Table: вручную введите полное имя таблицы;

Name: без префикса, используйте префикс, указанный в конфигурации.

SetFields: установите поля для запроса;

Where: условия запроса; можно передать строку или карту;

Where("name="weigo" and status=1")

Where(["name"=>"[:string]weigo","status"=>1]); //[:string] представляет строку, будет заключена в кавычки

Where(["name[like]"=>"weigo","status"=>1]);//[like] представляет собой запрос с подстановочными знаками

Group("age,status"): группировка, передача строки;

Having: передача строки;

Order("uid desc,name asc"): сортировка, передача строки;

Limit(10): GetAll эффективен, GetOne неэффективен;

Page(2,10): пейджинг, первый параметр — страница, второй параметр — размер страницы;

GetOne: получить одну запись данных;

GetAll: получить несколько записей данных;

Цепная операция: Table или Name указывает на таблицу, GetOne или GetAll получает данные, другие не зависят от порядка.

weigo.DataBase.Table("cto_controller").SetFields("name,id").Where().Group().Order().GetAll()

Операции добавления, изменения, удаления и запроса базы данных:

package controller

import (
    "encoding/json"
    "fmt"
    "io"
    "regexp"
    "strings"
    "wycto/weigo"
)

type APIController struct {
    weigo.Controller
}

/**
Запрос
*/
func (c *APIController) Index() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})

    rows, errorStr := weigo.DataBase.Name("user").SetFields("email,`name`,`nickname`").Where(ww).GetAll()
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}

/**
Удалить все
*/
func (c *APIController) DeleteAll() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})
    ww["uid|<"] = 5
    ww["nickname"] = "唯一"

    rows, errorStr := weigo.DataBase.Name("user").DeleteAll()
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}

/**
Удаление
*/
func (c *APIController) Delete() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})
    ww["nickname"] = "update后的唯一"

    rows, errorStr := weigo.DataBase.Name("user").Where(ww).Delete()
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}

/**
Обновление
*/
func (c *APIController) Update() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})
    ww["nickname"] = "唯一"

    var dd map[string]interface{}
    dd = make(map[string]interface{})
    dd["nickname"] = "update后的唯一"

    rows, errorStr := weigo.DataBase.Name("user").Where(ww).Update(dd)
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}
``` ```
fmt.Println(errorStr)
}
json, _ := json.Marshal(rows)
io.WriteString(c.Context.ResponseWriter, string(json))
}

/**
Добавить
*/
func (c *APIController) Add() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})
    ww["uid"] = 3

    var dd map[string]interface{}
    dd = make(map[string]interface{})
    dd["nickname"] = "Уникальный"

    rows, errorStr := weigo.DataBase.Name("user").Insert(dd)
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}

/**
Обновить все
*/
func (c *APIController) UpdateAll() {
    var ww map[string]interface{}
    ww = make(map[string]interface{})
    ww["uid"] = 3

    var dd map[string]interface{}
    dd = make(map[string]interface{})
    dd["nickname"] = "Единственный333"

    rows, errorStr := weigo.DataBase.Name("user").Where(ww).UpdateAll(dd)
    if errorStr != "" {
        fmt.Println(errorStr)
    }
    json, _ := json.Marshal(rows)
    io.WriteString(c.Context.ResponseWriter, string(json))
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

HTTP-фреймворк, написанный на языке Go. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wycto-weigo.git
git@api.gitlife.ru:oschina-mirror/wycto-weigo.git
oschina-mirror
wycto-weigo
wycto-weigo
main