本文整理汇总了Golang中database/cassandra.ColumnParent类的典型用法代码示例。如果您正苦于以下问题:Golang ColumnParent类的具体用法?Golang ColumnParent怎么用?Golang ColumnParent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。

在下文中一共展示了ColumnParent类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: EnumerateTrashedMembers

// Get a list of all members which are currently in the trash.
func (m *MembershipDB) EnumerateTrashedMembers(prev string, num int32) ([]*MemberWithKey, error) {
    var cp *cassandra.ColumnParent = cassandra.NewColumnParent()
    var pred *cassandra.SlicePredicate = cassandra.NewSlicePredicate()
    var r *cassandra.KeyRange = cassandra.NewKeyRange()
    var kss []*cassandra.KeySlice
    var ks *cassandra.KeySlice
    var rv []*MemberWithKey
    var err error

    // Fetch the protobuf column of the application column family.
    cp.ColumnFamily = "membership_archive"
    pred.ColumnNames = [][]byte{
        []byte("pb_data"),
    }
    if len(prev) > 0 {
        var uuid cassandra.UUID
        if uuid, err = cassandra.ParseUUID(prev); err != nil {
            return rv, err
        }
        r.StartKey = append([]byte(archivePrefix), []byte(uuid)...)
    } else {
        r.StartKey = []byte(archivePrefix)
    }
    r.EndKey = []byte(archiveEnd)
    r.Count = num

    kss, err = m.conn.GetRangeSlices(cp, pred, r, cassandra.ConsistencyLevel_ONE)
    if err != nil {
        return rv, err
    }

    for _, ks = range kss {
        var member *MemberWithKey
        var scol *cassandra.ColumnOrSuperColumn
        var uuid cassandra.UUID = cassandra.UUIDFromBytes(
            ks.Key[len(archivePrefix):])

        if len(ks.Columns) == 0 {
            continue
        }

        for _, scol = range ks.Columns {
            var col *cassandra.Column = scol.Column

            if string(col.Name) == "pb_data" {
                var agreement = new(MembershipAgreement)
                member = new(MemberWithKey)
                err = proto.Unmarshal(col.Value, agreement)
                proto.Merge(&member.Member, agreement.GetMemberData())
                member.Key = uuid.String()
            }
        }

        if member != nil {
            rv = append(rv, member)
        }
    }

    return rv, nil
}

开发者ID:starshipfactory,项目名称:membersys,代码行数:61,代码来源:db.go

示例2: GetMemberDetailByUsername

// Retrieve a specific members detailed membership data, but fetch it by the
// user name of the member.
func (m *MembershipDB) GetMemberDetailByUsername(username string) (
    *MembershipAgreement, error) {
    var member *MembershipAgreement = new(MembershipAgreement)
    var cp *cassandra.ColumnParent = cassandra.NewColumnParent()
    var pred *cassandra.SlicePredicate = cassandra.NewSlicePredicate()
    var kr *cassandra.KeyRange = cassandra.NewKeyRange()
    var expr *cassandra.IndexExpression = cassandra.NewIndexExpression()

    var r []*cassandra.KeySlice
    var ks *cassandra.KeySlice
    var err error

    expr.ColumnName = []byte("username")
    expr.Op = cassandra.IndexOperator_EQ
    expr.Value = []byte(username)

    cp.ColumnFamily = "members"
    pred.ColumnNames = [][]byte{[]byte("pb_data")}
    kr.StartKey = []byte(memberPrefix)
    kr.EndKey = []byte(memberEnd)
    kr.RowFilter = []*cassandra.IndexExpression{expr}

    r, err = m.conn.GetRangeSlices(
        cp, pred, kr, cassandra.ConsistencyLevel_ONE)
    if err != nil {
        return nil, err
    }

    for _, ks = range r {
        var cos *cassandra.ColumnOrSuperColumn

        for _, cos = range ks.Columns {
            var col = cos.Column
            if string(col.Name) == "pb_data" {
                member = new(MembershipAgreement)
                err = proto.Unmarshal(col.Value, member)
                return member, nil
            } else {
                return nil, errors.New("Unexpected column " +
                    string(col.Name))
            }
        }
    }

    return nil, errors.New("Not found")
}

开发者ID:starshipfactory,项目名称:membersys,代码行数:48,代码来源:db.go

示例3: ServeHTTP

func (self *ProductSearchAPI) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    var err error
    var query string = req.FormValue("q")
    var rawdata []byte
    var res CategorizedSearchResult

    numRequests.Add(1)
    numAPIRequests.Add(1)

    // Check the user is in the reqeuested scope.
    if !self.authenticator.IsAuthenticatedScope(req, self.scope) {
        numDisallowedScope.Add(1)
        http.Error(w,
            "You are not in the right group to access this resource",
            http.StatusForbidden)
        return
    }

    if len(query) >= 3 {
        var product_results [][]byte
        var cp *cassandra.ColumnParent = cassandra.NewColumnParent()
        var pred *cassandra.SlicePredicate = cassandra.NewSlicePredicate()
        var kr *cassandra.KeyRange = cassandra.NewKeyRange()
        var colmap map[string][]*cassandra.ColumnOrSuperColumn
        var slices []*cassandra.KeySlice
        var ire *cassandra.InvalidRequestException
        var ue *cassandra.UnavailableException
        var te *cassandra.TimedOutException
        var endkey []byte = []byte(query)
        var r *SearchResult
        var pos int = len(endkey) - 1

        // Handle overflows
        for endkey[pos] == 255 && pos > 0 {
            endkey[pos] = 0
            pos--
        }

        // Produce endkey by incrementing the last byte of the start key.
        endkey[pos]++

        // Search for projects with the given name.
        cp.ColumnFamily = "products_byname"
        pred.ColumnNames = [][]byte{[]byte("product")}

        kr.StartKey = []byte(query)
        kr.EndKey = endkey
        kr.Count = 32 // Limit to 32 results.

        slices, ire, ue, te, err = self.client.GetRangeSlices(
            cp, pred, kr, cassandra.ConsistencyLevel_ONE)
        if ire != nil {
            log.Print("Error fetching products_byname: ", ire.Why)
            numCassandraErrors.Add("invalid-request", 1)
            http.Error(w, ire.Why, http.StatusInternalServerError)
            return
        }
        if ue != nil {
            log.Print("Cassandra unavailable when fetching products_byname")
            numCassandraErrors.Add("invalid-request", 1)
            http.Error(w, "Database unavailable", http.StatusInternalServerError)
            return
        }
        if te != nil {
            log.Print("Cassandra timed out when fetching products_byname")
            numCassandraErrors.Add("timeout", 1)
            http.Error(w, "Database timed out", http.StatusInternalServerError)
            return
        }
        if err != nil {
            log.Print("OS error when fetching products_byname: ", err)
            numCassandraErrors.Add("generic-error", 1)
            http.Error(w, "OS error talking to database",
                http.StatusInternalServerError)
            return
        }

        for _, slice := range slices {
            for _, csc := range slice.Columns {
                var col *cassandra.Column = csc.Column
                if col == nil || !col.IsSetValue() {
                    continue
                }

                if string(col.Name) != "product" {
                    log.Print("Bizarre products_byname row ",
                        string(slice.Key), " (", slice.Key, "), has ",
                        string(col.Name), " (", col.Name, ")")
                    continue
                }

                r = new(SearchResult)
                r.Name = string(slice.Key)
                r.Uuid = UUID(col.Value).String()
                res.Products = append(res.Products, r)
            }
        }

        // Search for projects with the given name.
        cp.ColumnFamily = "products_bybarcode"
//.........这里部分代码省略.........

开发者ID:starshipfactory,项目名称:starstock,代码行数:101,代码来源:productsearch.go

示例4: ServeHTTP

func (self *ProductViewAPI) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    var cp *cassandra.ColumnParent
    var pred *cassandra.SlicePredicate
    var res []*cassandra.ColumnOrSuperColumn
    var csc *cassandra.ColumnOrSuperColumn
    var ire *cassandra.InvalidRequestException
    var ue *cassandra.UnavailableException
    var te *cassandra.TimedOutException
    var prod Product
    var err error
    var uuidstr string = req.FormValue("id")
    var ts int64 = 0
    var uuid UUID

    var rawdata []byte

    numRequests.Add(1)
    numAPIRequests.Add(1)

    // Check the user is in the reqeuested scope.
    if !self.authenticator.IsAuthenticatedScope(req, self.scope) {
        numDisallowedScope.Add(1)
        http.Error(w,
            "You are not in the right group to access this resource",
            http.StatusForbidden)
        return
    }

    if len(uuidstr) <= 0 {
        http.Error(w, "Requested UUID empty", http.StatusNotAcceptable)
        return
    }

    uuid, err = ParseUUID(uuidstr)
    if err != nil {
        http.Error(w, "Requested UUID invalid", http.StatusNotAcceptable)
        return
    }

    cp = cassandra.NewColumnParent()
    cp.ColumnFamily = "products"

    pred = cassandra.NewSlicePredicate()
    pred.ColumnNames = [][]byte{
        []byte("name"), []byte("price"), []byte("vendor"),
        []byte("barcodes"), []byte("stock"),
    }

    res, ire, ue, te, err = self.client.GetSlice([]byte(uuid), cp, pred,
        cassandra.ConsistencyLevel_ONE)
    if ire != nil {
        log.Print("Invalid request: ", ire.Why)
        productViewErrors.Add(ire.Why, 1)
        return
    }
    if ue != nil {
        log.Print("Unavailable")
        productViewErrors.Add("unavailable", 1)
        return
    }
    if te != nil {
        log.Print("Request to database backend timed out")
        productViewErrors.Add("timeout", 1)
        return
    }
    if err != nil {
        log.Print("Generic error: ", err)
        productViewErrors.Add(err.Error(), 1)
        return
    }

    for _, csc = range res {
        var col = csc.Column
        var cname string
        if !csc.IsSetColumn() {
            continue
        }

        cname = string(col.Name)
        if col.IsSetTimestamp() && col.Timestamp > ts {
            ts = col.Timestamp
        }

        if cname == "name" {
            prod.Name = string(col.Value)
        } else if cname == "price" {
            var buf *bytes.Buffer = bytes.NewBuffer(col.Value)
            err = binary.Read(buf, binary.BigEndian, &prod.Price)
            if err != nil {
                log.Print("Row ", uuid.String(), " price is invalid")
                productViewErrors.Add("corrupted-price", 1)
            }
        } else if cname == "vendor" {
            prod.VendorId = UUID(col.Value).String()
        } else if cname == "barcodes" {
            var bc Barcodes
            err = proto.Unmarshal(col.Value, &bc)
            if err != nil {
                log.Print("Row ", uuid.String(), " barcode is invalid")
                productViewErrors.Add("corrupted-barcode", 1)
//.........这里部分代码省略.........

开发者ID:starshipfactory,项目名称:starstock,代码行数:101,代码来源:productedit.go

示例5: main

func main() {
    var cf string = "members"
    var config_file string
    var config_contents []byte
    var config membersys.MemberCreatorConfig
    var greatestUid uint64 = 1000
    var now time.Time
    var noop, verbose bool
    var welcome *membersys.WelcomeMail

    var ld *ldap.Conn
    var sreq *ldap.SearchRequest
    var lres *ldap.SearchResult
    var entry *ldap.Entry
    var tlsconfig tls.Config

    var mmap map[string]map[string][]*cassandra.Mutation
    var db *cassandra.RetryCassandraClient
    var cp *cassandra.ColumnParent
    var pred *cassandra.SlicePredicate
    var kr *cassandra.KeyRange
    var kss []*cassandra.KeySlice
    var ks *cassandra.KeySlice

    var err error

    flag.StringVar(&config_file, "config", "",
        "Path to the member creator configuration file")
    flag.BoolVar(&noop, "dry-run", false, "Do a dry run")
    flag.BoolVar(&verbose, "verbose", false,
        "Whether or not to display verbose messages")
    flag.Parse()

    if len(config_file) == 0 {
        flag.Usage()
        return
    }

    config_contents, err = ioutil.ReadFile(config_file)
    if err != nil {
        log.Fatal("Unable to read ", config_file, ": ", err)
    }

    err = proto.Unmarshal(config_contents, &config)
    if err != nil {
        err = proto.UnmarshalText(string(config_contents), &config)
    }
    if err != nil {
        log.Fatal("Unable to parse ", config_file, ": ", err)
    }
    if config.WelcomeMailConfig != nil {
        welcome, err = membersys.NewWelcomeMail(
            config.WelcomeMailConfig)
        if err != nil {
            log.Fatal("Error creating WelcomeMail: ", err)
        }
    }

    tlsconfig.MinVersion = tls.VersionTLS12
    tlsconfig.ServerName, _, err = net.SplitHostPort(
        config.LdapConfig.GetServer())
    if err != nil {
        log.Fatal("Can't split ", config.LdapConfig.GetServer(),
            " into host and port: ", err)
    }

    if config.LdapConfig.CaCertificate != nil {
        var certData []byte

        certData, err = ioutil.ReadFile(config.LdapConfig.GetCaCertificate())
        if err != nil {
            log.Fatal("Unable to read certificate from ",
                config.LdapConfig.GetCaCertificate(), ": ", err)
        }

        tlsconfig.RootCAs = x509.NewCertPool()
        tlsconfig.RootCAs.AppendCertsFromPEM(certData)
    }

    now = time.Now()

    if !noop {
        ld, err = ldap.DialTLS("tcp", config.LdapConfig.GetServer(),
            &tlsconfig)
        if err != nil {
            log.Fatal("Error connecting to LDAP server ",
                config.LdapConfig.GetServer(), ": ", err)
        }

        err = ld.Bind(config.LdapConfig.GetSuperUser()+","+
            config.LdapConfig.GetBase(), config.LdapConfig.GetSuperPassword())
        if err != nil {
            log.Fatal("Unable to bind as ", config.LdapConfig.GetSuperUser()+
                ","+config.LdapConfig.GetBase(), " to ",
                config.LdapConfig.GetServer(), ": ", err)
        }
        defer ld.Close()

        sreq = ldap.NewSearchRequest(
            config.LdapConfig.GetBase(), ldap.ScopeWholeSubtree,
//.........这里部分代码省略.........

开发者ID:starshipfactory,项目名称:membersys,代码行数:101,代码来源:member_creator.go

最后编辑: kuteng  文档更新时间: 2021-08-23 19:14   作者:kuteng