本文整理汇总了Golang中github.com/extemporalgenome/slug.Slug函数的典型用法代码示例。如果您正苦于以下问题:Golang Slug函数的具体用法?Golang Slug怎么用?Golang Slug使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Slug函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: exportAliases
func exportAliases() {
var (
repositories *Repositories
environments *Environments
environment *Environment
err error
)
if repositories, err = bot.GetRepositories(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
if environments, err = bot.GetEnvironments(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
mappedEnvironments := make(map[int][]*Environment)
for _, environment = range environments.Entries {
mappedEnvironments[environment.RepositoryId] = append(mappedEnvironments[environment.RepositoryId], environment)
}
fmt.Printf("[aliases]\n")
for _, repository := range repositories.Entries {
fmt.Printf("# %s\n", repository.Title)
fmt.Printf("%s = %d\n", slug.Slug(repository.Title), repository.Id)
for _, environment := range mappedEnvironments[repository.Id] {
fmt.Printf("\t%s-%s = %d\n", slug.Slug(repository.Title), slug.Slug(environment.Name), environment.Id)
}
}
}
开发者ID:epicagency,项目名称:deploybot-cli,代码行数:30,代码来源:commands.go
示例2: GetNodes
// GetNodes returns the D3-compatible nodes by rta analysis
func GetNodes(prog *ssa.Program) ([]node.Node, error) {
main, err := mainPackage(prog, false)
if err != nil {
return nil, err
}
roots := []*ssa.Function{
main.Func("init"),
main.Func("main"),
}
added := make(map[string]struct{})
extraImports := make(map[string][]string)
var nodes []node.Node
callgraph := rta.Analyze(roots, true)
callgraph.CallGraph.DeleteSyntheticNodes()
for _, bar := range callgraph.CallGraph.Nodes {
_, ok := added[bar.Func.Package().String()]
if !ok {
for _, edge := range bar.Out {
if extraImports[edge.Callee.Func.Package().String()] == nil {
extraImports[edge.Callee.Func.Package().String()] = make([]string, 0)
}
extraImports[edge.Callee.Func.Package().String()] = append(extraImports[edge.Callee.Func.Package().String()], strings.TrimPrefix(slug.Slug(bar.Func.Package().String()), "package-"))
}
added[bar.Func.Package().String()] = struct{}{}
}
}
added = make(map[string]struct{})
for _, bar := range callgraph.CallGraph.Nodes {
_, ok := added[bar.Func.Package().String()]
if !ok {
var imports []string
for _, edge := range bar.In {
imports = append(imports, strings.TrimPrefix(slug.Slug(edge.Caller.Func.Package().String()), "package-"))
}
imports = append(imports, extraImports[bar.Func.Package().String()]...)
nodes = append(nodes, node.Node{Name: strings.TrimPrefix(slug.Slug(bar.Func.Package().String()), "package-"), Imports: imports, Size: len(imports) * 100})
added[bar.Func.Package().String()] = struct{}{}
}
}
return nodes, nil
}
开发者ID:gophergala2016,项目名称:traceapp,代码行数:50,代码来源:rta.go
示例3: ProcessContent
func (p *Page) ProcessContent() {
content := string(p.Content)
titles := titlePattern.FindAllStringSubmatch(content, -1)
for _, title := range titles {
if p.Titles == nil {
p.Titles = make(map[int][]anchor)
}
if len(title) == 3 {
if level, _ := strconv.Atoi(title[1]); level > 0 {
ll := level - 1
text := title[2]
id := slug.Slug(text)
if id == "" {
id = fmt.Sprintf("%05d", level)
}
if p.Titles[ll] == nil {
p.Titles[ll] = []anchor{}
}
r := fmt.Sprintf(`<h%d><a href="#%s" name="%s">%s</a></h%d>`, level, id, id, text, level)
p.Titles[ll] = append(p.Titles[ll], anchor{Text: text, URL: "#" + id})
content = strings.Replace(content, title[0], r, 1)
}
}
}
p.Content = template.HTML(content)
}
开发者ID:xiam,项目名称:luminos,代码行数:31,代码来源:main.go
示例4: fillAndValidate
// fillAndValidate tag
func (model *Tag) fillAndValidate(payload Tag, isEdit bool) (err error) {
if !isEdit {
// new
} else {
model.ID = payload.ID
}
model.Name = strings.TrimSpace(payload.Name)
model.Description = strings.TrimSpace(payload.Description)
model.Slug = strings.TrimSpace(payload.Slug)
if model.Slug == "" || !slug.IsSlugAscii(model.Slug) {
// generate slug
model.Slug = slug.Slug(model.Name)
}
model.Image = strings.TrimSpace(payload.Image)
model.IsVisible = payload.IsVisible
model.ParentID = payload.ParentID
model.MetaTitle = payload.MetaTitle
if model.MetaTitle == "" {
model.MetaTitle = model.Name
}
model.MetaDescription = payload.MetaDescription
if model.MetaDescription == "" {
model.MetaDescription = model.Description
}
model.UpdatedBy = payload.UpdatedBy
return
}
开发者ID:mewben,项目名称:onix,代码行数:32,代码来源:tag.go
示例5: checkAndCreateCategories
func checkAndCreateCategories(db DB) {
for i, categoryName := range categoryList {
categorySlug := slug.Slug(categoryName)
count, err := db.SelectInt("select count(*) from category where categoryslug=?", categorySlug)
if err != nil {
log.Printf("Error searching for the category with categorySlug %s\n", categorySlug)
log.Println("Stopping the creation of categories")
return
}
if count == 0 {
category := &Category{
CategoryId: uniuri.NewLen(20),
CategoryName: categoryName,
CategorySlug: categorySlug,
LikeCount: 0,
}
if i == 0 { // "Sem Categoria" is my default category
category.CategoryId = "default"
}
err := db.Insert(category)
if err != nil {
log.Printf("Error when creating the category %s. %s\n", category.CategoryName, err)
} else {
log.Printf("Category %s created!\n", category.CategoryName)
}
}
}
}
开发者ID:rafadev7,项目名称:server,代码行数:28,代码来源:db.go
示例6: parseExamples
func parseExamples() []*Example {
exampleNames := readLines("examples.txt")
examples := make([]*Example, 0)
for _, exampleName := range exampleNames {
if (exampleName != "") && !strings.HasPrefix(exampleName, "#") {
example := Example{Name: exampleName}
exampleId := slug.Slug(exampleName)
example.Id = exampleId
example.Segs = make([][]*Seg, 0)
sourcePaths := mustGlob("examples/" + exampleId + "/*")
for _, sourcePath := range sourcePaths {
if strings.HasSuffix(sourcePath, ".hash") {
example.GoCodeHash, example.UrlHash = parseHashFile(sourcePath)
} else {
sourceSegs, filecontents := parseAndRenderSegs(sourcePath)
if filecontents != "" {
example.GoCode = filecontents
}
example.Segs = append(example.Segs, sourceSegs)
}
}
newCodeHash := sha1Sum(example.GoCode)
if example.GoCodeHash != newCodeHash {
example.UrlHash = resetUrlHashFile(newCodeHash, example.GoCode, "examples/"+example.Id+"/"+example.Id+".hash")
}
examples = append(examples, &example)
}
}
for i, example := range examples {
if i < (len(examples) - 1) {
example.NextExample = examples[i+1]
}
}
return examples
}
开发者ID:xxxtonixxx,项目名称:gobyexample,代码行数:35,代码来源:generate.go
示例7: CreateContent
func CreateContent(db DB, user *User, url *Url, img *Image, content *Content) (*Content, error) {
contentId := uniuri.NewLen(20)
u, err := db.Get(Content{}, contentId)
for err == nil && u != nil {
contentId := uniuri.NewLen(20)
u, err = db.Get(Content{}, contentId)
}
if err != nil {
return nil, err
}
s := slug.Slug(content.Title)
// Let's check if this slug already exists,
// if existis, we will increment a sulfix to it
newSlug := s
increment := 1
count, err := db.SelectInt("select count(*) from content where slug=?", newSlug)
for err == nil && count != 0 {
increment += 1
newSlug = fmt.Sprintf("%s-%d", s, increment)
count, err = db.SelectInt("select count(*) from content where slug=?", newSlug)
}
log.Printf("SLUG: %s, inc: %d, count: %d\n", newSlug, increment, count)
if err != nil {
return nil, err
}
newContent := &Content{
ContentId: contentId,
UrlId: url.UrlId,
CategoryId: "default", // First category will be "Sem categoria"
Title: content.Title,
Slug: newSlug,
Description: content.Description,
Host: content.Host,
UserId: user.UserId,
ImageId: "default", // We will check the if there is an image below
LikeCount: 0,
Creation: time.Now(),
LastUpdate: time.Now(),
Deleted: false,
}
if img != nil {
newContent.ImageId = img.ImageId
}
err = db.Insert(newContent)
if err != nil {
return nil, err
}
return newContent, nil
}
开发者ID:rafadev7,项目名称:irado,代码行数:59,代码来源:content.go
示例8: fillAndValidate
func (model *Post) fillAndValidate(payload PostPayload, isEdit bool) (err error) {
body := strings.TrimSpace(payload.Body)
if !isEdit {
// new
// uuid
model.UUID = uuid.NewV4().String()
model.CreatedBy = payload.AuthorID
// generate excerpt
bodyLength := len(body)
// get # of characters to generate excerpt
// this is usually taken from settings
// but we'll hard code it for now
excerptChars := 200
if bodyLength < excerptChars {
excerptChars = bodyLength
}
model.Excerpt = body[:excerptChars]
} else {
model.ID = payload.ID
model.Excerpt = strings.TrimSpace(payload.Excerpt)
}
model.Title = strings.TrimSpace(payload.Title)
model.Slug = strings.TrimSpace(payload.Slug)
if model.Slug == "" || !slug.IsSlugAscii(model.Slug) {
// generate slug
model.Slug = slug.Slug(model.Title)
}
model.Subtitle = strings.TrimSpace(payload.Subtitle)
model.Body = body
model.Featured = payload.Featured
model.Image = strings.TrimSpace(payload.Image)
model.AuthorID = payload.AuthorID
model.UpdatedBy = payload.AuthorID
model.MetaTitle = strings.TrimSpace(payload.MetaTitle)
model.MetaDescription = strings.TrimSpace(payload.MetaDescription)
if model.Status == "published" {
// parse published_at from format: MM-DD-YYYY hh:mm
publishedAt, err2 := utils.ParseDate(LONGFORM, payload.PublishedAt)
if err2 != nil {
err = err2
return
}
model.PublishedAt = pq.NullTime{
Time: publishedAt,
Valid: true,
}
}
return
}
开发者ID:mewben,项目名称:onix,代码行数:56,代码来源:post.go
示例9: BeforeUpdate
func (u *Group) BeforeUpdate(tx *gorm.DB) (err error) {
var count int
tx.Model(u).Where("name = ?", u.Name).Count(&count)
if count > 1 {
err = errors.New("Conflicting Name!")
return
}
u.Slug = slug.Slug(u.Name)
return
}
开发者ID:RadioTerminal,项目名称:podcaster,代码行数:10,代码来源:group.go
示例10: BeforeCreate
func (u *Media) BeforeCreate(tx *gorm.DB) (err error) {
var count int
tx.Model(u).Where("name = ?", u.Name).Count(&count)
if count > 0 {
err = errors.New("Media exists!")
return
}
u.Slug = slug.Slug(u.Name)
return
}
开发者ID:RadioTerminal,项目名称:podcaster,代码行数:10,代码来源:media.go
示例11: GetNodes
// GetNodes returns the D3-compatible nodes by cha analysis -
// notably, works without a main()
func GetNodes(prog *ssa.Program) ([]node.Node, error) {
added := make(map[string]struct{})
extraImports := make(map[string][]string)
var nodes []node.Node
callgraph := cha.CallGraph(prog)
callgraph.DeleteSyntheticNodes()
for f, bar := range callgraph.Nodes {
fName := fmt.Sprintf("%+v", f)
_, ok := added[fName]
if !ok {
for _, edge := range bar.Out {
if extraImports[edge.Callee.Func.String()] == nil {
extraImports[edge.Callee.Func.String()] = make([]string, 0)
}
extraImports[edge.Callee.Func.String()] = append(extraImports[edge.Callee.Func.String()], strings.TrimPrefix(slug.Slug(fName), "package-"))
}
added[fName] = struct{}{}
}
}
added = make(map[string]struct{})
for f, bar := range callgraph.Nodes {
fName := fmt.Sprintf("%+v", f)
_, ok := added[fName]
if !ok {
var imports []string
for _, edge := range bar.In {
imports = append(imports, strings.TrimPrefix(slug.Slug(edge.Caller.Func.String()), "package-"))
}
imports = append(imports, extraImports[fName]...)
nodes = append(nodes, node.Node{Name: strings.TrimPrefix(slug.Slug(fName), "package-"), Imports: imports, Size: len(imports) * 100})
added[fName] = struct{}{}
}
}
return nodes, nil
}
开发者ID:gophergala2016,项目名称:traceapp,代码行数:43,代码来源:cha.go
示例12: Create
//Create adds a skill to the database, based on it's owner
func (r *SkillRepo) Create(skill *Skill) error {
id := bson.NewObjectId()
Slug := slug.Slug(skill.Name + " " + skill.City + " " + randSeq(7))
skill.Slug = Slug
_, err := r.coll.UpsertId(id, skill)
if err != nil {
return err
}
skill.ID = id
return nil
}
开发者ID:ifactory-ng,项目名称:oddjobz-backend,代码行数:15,代码来源:skills.go
示例13: GetSlug
func GetSlug(content *Content) (string, error) {
s := slug.Slug(content.Title)
// Let's check if this slug already exists,
// if existis, we will increment a sulfix to it
newSlug := s
increment := 1
count, err := db.SelectInt("select count(*) from content where contentid!=? AND slug=?", content.ContentId, newSlug)
for err == nil && count != 0 {
increment += 1
newSlug = fmt.Sprintf("%s-%d", s, increment)
count, err = db.SelectInt("select count(*) from content where contentid!=? AND slug=?", content.ContentId, newSlug)
}
if err != nil {
return "", err
}
log.Printf("SLUG: %s, inc: %d, count: %d\n", newSlug, increment, count)
return newSlug, nil
}
开发者ID:rafadev7,项目名称:irado,代码行数:20,代码来源:content.go
示例14: xmain
func (c *appContext) xmain() {
inFile, err := os.Open("./places.json")
if err != nil {
log.Println(err)
}
defer inFile.Close()
scanner := bufio.NewScanner(inFile)
scanner.Split(bufio.ScanLines)
//var pp []place
for scanner.Scan() {
//log.Println(scanner.Text())
type Placex struct {
ID bson.ObjectId `bson:"_id,omitempty"`
Slug string
Location string
State string
Budget string
Service []string
Name string
Overview string
Address string
WorkingHours string
Phone string
PriceRange string
Owner string
//Timestamp string
Images []Images
Rating int
}
var p Placex
err := json.Unmarshal([]byte(scanner.Text()), &p)
if err != nil {
log.Println(err)
}
//log.Println(p.Images)
//pp = append(pp, p)
var services []string
for _, s := range strings.Split(p.Service[0], " ") {
log.Println(s)
c.redis.SAdd("services", strings.Title(strings.ToLower(s)))
services = append(services, strings.ToLower(s))
}
c.redis.SAdd("places", strings.Title(strings.ToLower(p.Location)+", Lagos"))
xx := &place{
Location: strings.ToLower(p.Location),
State: "lagos",
Name: strings.ToLower(p.Name),
Budget: strings.ToLower(p.Budget),
Service: services,
Overview: p.Overview,
Address: p.Address,
WorkingHours: p.WorkingHours,
Phone: p.Phone,
Timestamp: time.Now(),
Images: p.Images,
Owner: p.Owner,
Slug: slug.Slug(p.Name + " " + p.Location + " " + randSeq(5)),
}
cc := c.db.C("places")
err = cc.Insert(xx)
if err != nil {
log.Println(err)
}
}
}
开发者ID:kolawoletech,项目名称:kaku-go,代码行数:74,代码来源:addplace.go
示例15: newPlace
func (c *appContext) newPlace(w http.ResponseWriter, r *http.Request, approve int) error {
user, err := userget(r)
if err != nil {
log.Println(err)
}
log.Println(user)
err = r.ParseMultipartForm(20000)
if err != nil {
log.Println(err)
return err
}
f := r.MultipartForm
files := f.File["images"] // grab filenames
log.Println(files)
var img = make([]Images, 0, 10)
for _, v := range files {
fn, tn := c.uploadPic(v)
i := Images{
Thumb: tn,
Full: fn,
}
img = append(img, i)
}
location := strings.ToLower(strings.Join(r.Form["location"], ""))
budget := strings.Join(r.Form["budget"], "")
service := strings.Split(strings.ToLower(strings.Join(r.Form["service"], "")), ",")
Place := &place{
Approved: approve,
Location: location,
Budget: budget,
Service: service,
State: strings.Join(r.Form["state"], ""),
Name: strings.Join(r.Form["name"], ""),
Address: strings.Join(r.Form["address"], ""),
Overview: strings.Join(r.Form["overview"], ""),
WorkingHours: strings.Join(r.Form["working-hours"], ""),
Phone: strings.Join(r.Form["phone"], ""),
PriceRange: strings.Join(r.Form["price-range"], ""),
Owner: user.ID,
Timestamp: time.Now(),
Images: img[:],
}
Place.Slug = slug.Slug(Place.Name + " " + Place.Location + " " + randSeq(5))
cc := c.db.C("places")
err = cc.Insert(Place)
if err != nil {
log.Println(err)
return err
}
for _, s := range service {
log.Println(s)
c.redis.SAdd("services", strings.Title(s))
}
c.redis.SAdd("places", strings.Title(Place.Location+", "+Place.State))
return nil
}
开发者ID:kolawoletech,项目名称:kaku-go,代码行数:74,代码来源:adminhandlers.go
示例16: main
func main() {
router := httprouter.New()
router.POST("/publish/:name", func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
r.ParseForm()
defer r.Body.Close()
b, _ := ioutil.ReadAll(r.Body)
devlog(string(b))
postedpkg := Package{}
if err := json.Unmarshal(b, &postedpkg); err != nil {
devlog(string(b), err)
message := "Sorry, something wrong happened"
R.JSON(w, http.StatusInternalServerError, map[string]string{"message": message})
return
}
u, p, ok := r.BasicAuth()
if ok && p == "" {
requireAuth(w)
} else {
if user, err := authUser(u, p); err != nil {
requireAuth(w)
} else {
devlog("FOUND", user.Id, postedpkg.Name)
pkg := Package{}
if err := DB.Where(&Package{UserId: user.Id, Name: ps.ByName("name")}).First(&pkg).Error; err != nil &&
err != gorm.RecordNotFound {
R.JSON(w, http.StatusNotFound, "xpackage "+postedpkg.Name+" not found")
return
} else {
pkg.UserId = user.Id
pkg.Private = postedpkg.Private
pkg.Cmd = postedpkg.Cmd
if postedpkg.Name != "" {
pkg.Name = slug.Slug(postedpkg.Name)
}
pkg.Tags = postedpkg.Tags
if postedpkg.Email != "" {
pkg.Email = postedpkg.Email
}
if postedpkg.Blurb != "" {
pkg.Blurb = postedpkg.Blurb
}
if postedpkg.Description != "" {
pkg.Description = postedpkg.Description
}
if postedpkg.RepoUrl != "" {
pkg.RepoUrl = postedpkg.RepoUrl
}
if pkg.Name == "" {
message := "Sorry, you need to specify a name for your package."
R.JSON(w, http.StatusBadRequest, message)
return
}
if pkg.RepoUrl == "" {
message := "Sorry, you need to specify a git repo url for your package."
R.JSON(w, http.StatusBadRequest, message)
return
}
if err := DB.Save(&pkg).Error; err != nil {
if strings.Contains(err.Error(), "Duplicate") {
switch {
case strings.Contains(err.Error(), "name"):
devlog(pkg.Id, pkg)
message := "sorry, a package with the same name " + pkg.Name + " already exists."
R.JSON(w, http.StatusBadRequest, message)
return
}
devlog(err, pkg.Id, pkg.Name, pkg)
R.JSON(w, http.StatusNotFound, "package "+pkg.Name+" not found")
return
}
} else {
devlog("ok, package published!", pkg)
R.JSON(w, http.StatusOK, pkg)
return
}
}
}
}
})
router.POST("/packages", func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
r.ParseForm()
u, p, ok := r.BasicAuth()
if ok && p == "" {
requireAuth(w)
} else {
if user, err := authUser(u, p); err != nil {
requireAuth(w)
} else {
newPackage := Package{
Name: r.Form.Get("name"),
Email: r.Form.Get("email"),
//Tags: r.Form.Get("tags"),
Blurb: r.Form.Get("blurb"),
Description: r.Form.Get("description"),
RepoUrl: r.Form.Get("repo_url"),
//.........这里部分代码省略.........
开发者ID:composehub,项目名称:server,代码行数:101,代码来源:main.go
示例17: createBranch
func createBranch() (action.Action, error) {
// Get the current branch name.
originalBranch, err := gitutil.CurrentBranch()
if err != nil {
return nil, err
}
// Fetch the remote repository.
task := "Fetch the remote repository"
log.Run(task)
gitConfig, err := git.LoadConfig()
if err != nil {
return nil, errs.NewError(task, err)
}
var (
remoteName = gitConfig.RemoteName
baseBranch = gitConfig.TrunkBranchName
)
if flagBase != "" {
baseBranch = flagBase
}
// Fetch the remote repository.
if err := git.UpdateRemotes(remoteName); err != nil {
return nil, errs.NewError(task, err)
}
// Make sure the trunk branch is up to date.
task = fmt.Sprintf("Make sure branch '%v' is up to date", baseBranch)
log.Run(task)
if err := git.CheckOrCreateTrackingBranch(baseBranch, remoteName); err != nil {
return nil, errs.NewError(task, err)
}
// Prompt the user for the branch name.
task = "Prompt the user for the branch name"
line, err := prompt.Prompt(`
Please insert the branch slug now.
Insert an empty string to skip the branch creation step: `)
if err != nil && err != prompt.ErrCanceled {
return nil, errs.NewError(task, err)
}
sluggedLine := slug.Slug(line)
if sluggedLine == "" {
fmt.Println()
log.Log("Not creating any feature branch")
return nil, nil
}
branchName := "story/" + sluggedLine
ok, err := prompt.Confirm(
fmt.Sprintf(
"\nThe branch that is going to be created will be called '%s'.\nIs that alright?",
branchName),
true)
if err != nil {
return nil, errs.NewError(task, err)
}
if !ok {
panic(prompt.ErrCanceled)
}
fmt.Println()
createTask := fmt.Sprintf(
"Create branch '%v' on top of branch '%v'", branchName, baseBranch)
log.Run(createTask)
if err := git.Branch(branchName, baseBranch); err != nil {
return nil, errs.NewError(createTask, err)
}
deleteTask := fmt.Sprintf("Delete branch '%v'", branchName)
deleteBranch := func() error {
// Roll back and delete the newly created branch.
log.Rollback(createTask)
if err := git.Branch("-D", branchName); err != nil {
return errs.NewError(deleteTask, err)
}
return nil
}
// Checkout the newly created branch.
checkoutTask := fmt.Sprintf("Checkout branch '%v'", branchName)
log.Run(checkoutTask)
if err := git.Checkout(branchName); err != nil {
if err := deleteBranch(); err != nil {
errs.Log(err)
}
return nil, errs.NewError(checkoutTask, err)
}
// Push the newly created branch unless -no_push.
pushTask := fmt.Sprintf("Push branch '%v' to remote '%v'", branchName, remoteName)
if flagPush {
log.Run(pushTask)
if err := git.Push(remoteName, branchName); err != nil {
if err := deleteBranch(); err != nil {
errs.Log(err)
//.........这里部分代码省略.........
开发者ID:salsaflow,项目名称:salsaflow,代码行数:101,代码来源:command.go
示例18: Bootstrap
func (this *FileManager) Bootstrap(in interface{}) interface{} {
doc := in.(File)
doc.Id = slug.Slug(doc.Name)
return doc
}
开发者ID:peterpeerdeman,项目名称:dcms,代码行数:5,代码来源:file.go
示例19: CreateAlias
func CreateAlias(prod_id int64, prod_name string, shop_id int64) string {
//check alias
var count int
var loop int
loop = 0
var found int
found = 0
var key string
plain_key := slug.Slug(prod_name)
for found == 0 {
if loop == 0 {
key = plain_key
} else {
key = plain_key + "-" + strconv.Itoa(loop)
}
row := db_product.QueryRow(`
SELECT
count(product_id)
FROM
ws_product_alias
WHERE
product_key = $1
AND shop_id = $2`,
key,
shop_id)
row.Scan(&count)
if count == 0 {
found = 1
} else {
loop++
}
}
//insert alias to postgre
_, err := db_product.Exec(`
INSERT INTO ws_product_alias
(product_id, product_key, shop_id)
VALUES($1, $2, $3)
`, prod_id, key, shop_id)
checkErr(err, "Fail create alias in postgres")
//insert alias to mongodb
cmgo := mgo_prod.DB("product_dev").C("product_alias")
alias := &ProductAlias{
ProductId: prod_id,
ProductKey: key,
ShopId: shop_id,
}
_, err = cmgo.Upsert(bson.M{"product_id": prod_id, "shop_id": shop_id}, alias)
checkErr(err, "Fail create alias in mongodb")
//delete product alias in redis
rds := redis.NewClient(&redis.Options{
Addr: redisconn.Redis_12_3,
Password: "", // no password set
DB: 0, // use default DB
})
rds.Del("svq:aliasing-id_product-" + key + "-" + string(shop_id))
rds.Close()
return key
}
开发者ID:alvinantonius,项目名称:produp,代码行数:69,代码来源:create_prod.go
示例20: Bootstrap
func (this *DocumentTypeManager) Bootstrap(in interface{}) interface{} {
doc := in.(*DocumentType)
doc.Id = slug.Slug(doc.Name)
return doc
}
开发者ID:peterpeerdeman,项目名称:dcms,代码行数:5,代码来源:document-type.go
注:本文中的github.com/extemporalgenome/slug.Slug函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论